でぃするだいありー?

そんな気はないんだれど、でぃすっちゃってる。 でぃすでれ?

ほぼはじめてのKotlin

2018/08にHello Worldを作成した痕跡を見つけた。
その時はAndroidで動く常駐のBLEアプリが作成できないものかと試行錯誤していたように思う。調べてみて、Androidのセキュリティ的に不許可な実装であるとわかり断念した。Javaでやろうかというところで、どこかで耳にしていたKotlinをちょっと触ったというところか。覚えてない。

さて、Flutterで実装したものをKotlinでやったらどうなるかとふと思った。

未習得言語へのアプローチについてはいくつかの難がある。ソースコードがキモい(PerlとかCOBOL)とか、調べても有益な情報が少なかった(Go mobile)とか、ライブラリが充実しすぎていたりないものは作れ系の文化に属するもの(JavaとかKotlin)とか。最初の一つについては仕事でなければやらない。二つ目については気が向いたらにする。最後の一つについては希望がある。検索キーワードの精度をあげればよい。

今回ハマったこと。

  • JavaからKotlinへのマイグレーション知識が皆無であるがゆえに、Javaのコードを流用するに難があった
  • ライブラリが多すぎて、目的に沿ったブツの選定に迷った(Ktorでうまくいかず、Retrofit2+OkHttpで達成)

3日くらいはどうにもならない。4日目で光明が見え、5日目でなにかしら形になる。習得の道筋はだいたいいつもこんなカンジ。
今回もHello Worldまでは問題なく進んだ。Android StudioGUIはこれまでどうにも慣れなかったのだが、VSCodeに触れるようになって違和感も失せたカンジ。
その後、WebAPIから取得したデータを画面表示するサンプルなんかをこなしたが、digest認証を要するリクエストの実装におおいにハマった。Ktorっていろいろ実装中なんスね。

f:id:CharlieXX:20190312110720p:plain
f:id:CharlieXX:20190312113235p:plain
Flutter版(左)とKotlin版(右)

Java様式の画面作成にはまだどうにも慣れず、ある程度形になったのでいいことにした。

最後に、FlutterとKotlinを比較した所感を少し。
個人的には、Flutterの方が実装しやすいように感じた。参照した情報が優れていたのかもしれない。画面の構成要素をクラス化できたので、JSONで元ネタを定義して、それを適用したインスタンスを生成する形で画面構築することが容易だったと感じている。M+Vなカンジ?
Kotlinもそういうことができるのかもしれないが、そういう情報には巡り合わず。というか精魂尽きた。Flutterと比較して(Javaが)長い歴史をもつため、調べて得られる情報も多いが、いろんなモノのバージョンに悩まされることが多く、「今俺に必要な情報」を取捨選択するために精度の高いキーワードを要する=それなりの慣れが必要となり、初学のコストが逆に高くなっているように思う。HTTPリクエストがうまく動かない原因を探るため、WireSharkまで動員させられたし。
デバッグはFlutterのVSCodeが軽い印象。Android Studioはかつて感じたようなとにかく重いという印象はなくなったが、ところどころ時間を食われる動きで、時々落ちたり妙な振舞いをしたりする。
実機へのインストールについては、手間はほぼ同程度だがFlutterの方が楽。