省エネエンジニア

Flutter、vue.js修行中。

【Flutter】悲しいことがありました

2月の頭から週3常駐でFlutterのお仕事をさせていただいていました。
新規で作るアプリで、実装だけでなくコーディング規約やアーキテクチャなども決めさせていただいてました。

私としては、少なくともリリースできる状態になるまで続ける気でいたのですが、
まだ1か月も働いていないのに契約を切られてしまいました。

建前の理由としては、週5で働いてくれる人を優先したいからということでしたが、
結局は私の力不足ということでしょう。

せっかくFlutterの仕事にこぎつけたのに悔しくて悔しくてたまりませんでした。

そこで私は考えました。
もっともっとFlutter力をつけてまたFlutterのお仕事をとって見せるぞ!と。

そんな訳で、来月の常駐のお仕事がなくなってしまったので、
しばらくはリモートのお仕事だけを楽しみつつ、Flutter力を上げまたぼちぼち4月からのお仕事探したいと思ってます。

Flutterを採用するということ

Flutterはまだできて日が浅い技術です。
採用するには不安もあることと思います。

去年頃からエージェントさんにはFlutterのお仕事したいんですけど、募集ないですかね?
などと聞いてはいましたが、正直こんなに早くFlutterの仕事ができるとは思っていませんでした。

Flutter以外にも沢山Android/iOSが両方作れるマルチプラットフォームの技術は沢山ありますが、
どれも決定打にかけるというのが世の中の反応なのではないでしょうか。
また、世界的にはどうなのか分かりませんが、日本においては出始めの技術を採用することに対してもの凄い不安を抱えてしまう傾向にあると感じます。

採用する為の材料

新規でアプリを作るときにその技術を採用する条件がいくつかあると思うんですよね。 例えば下記のような項目が考えられると思います。

  1. 作りたい機能が実現できるか
  2. 開発が容易であるか
  3. 日本語のドキュメントが豊富であるか
  4. 市場にその技術を使えるエンジニアが豊富であるか
  5. 既にリリースされている商業アプリはあるか
1. 作りたい機能が実現できるか

これは真っ先に調査することだと思いますが、ネイティブのSDKで実装する時と同等のことができないと不安、不満であるというのがあると思います。
特にView周りに関しては各社、独自性をアピールするためにごりごりとカスタマイズしたViewを編み出したりしていると思います。
またViewにこだわりがある場合にはアニメーションがつけられるかというのも検討要件の一つになると思います。
今回のお仕事の中でアニメーションは使わなかったのですが、Viewを作るということに関しては問題なく要件通りに作れたと思います。
私はAndroidのお仕事しかしたことありませんが、Androidのlayout.xmlで使えるようなパラメータと同等のものはありましたので、全く同じものを作れと言われたら作れると思います。
ただ、dimens.xmlのようなものが見当たらなかったので固定値を置くクラスを作るとか、Widgetを細かく分けてある程度その中でサイズやマージンを決めてあげるとかの工夫が必要かなって思いました。
また、解像度の違いに対応した場合にはどうするのが最適なのかというのがまだ分かっていません。 Androidだと解像度別のフォルダにそれぞれlayoutやdimensファイルを作って対応したりするのですが、それと同じことができるかはちょっとまだ解決策を見つけられてないです。

2. 開発が容易であるか

これに関してはYES
と声高にアピールしたいです。

一番は開発環境を作るのがすごく簡単です。
VSCodeやInteliJ(AndroidStudio)で開発できます。
私はAndroidStudioを使っていますが、AndroidStudio上でDartのインストールもできるし、FlutterSDKのインストールもできるし、Flutterプラグインがあるのでそれを入れておけば開発で使いたいあれこれが追加されるのでとても便利です。
コマンドを一切打たなくても開発環境ができあがります。
iOSの開発をしたい場合にはcocoapodを自力でインストールしなければならないのですが、もともとiOSをやってた人なら息をするかのようにやってることだと思うので問題ないと思います。

次に、「学習コストが……」ってやつ、よく言われますよね。
学習コストは低いんじゃないかと思ってます。
Flutterの一番の特徴はViewの作り方だと思います。
そこさえコツを掴んでしまえば後は他の手段でアプリを作るときと変わらないかと思います。
Dartの書き方は普段良く使うKotlinと結構違うのでそこは苦労しましたが、なんとなく書けるようになってくると思います。

3. 日本語のドキュメントが豊富であるか

これはゼロではないが多くはないです。
もちろん、日本人の方も沢山の方がブログやqiitaで記事を投稿していて凄く参考になりました。

flutter-jp.connpass.com

FlutterMeetupなども開催されていて、日本でも積極的にFlutterの情報を発信していこうという姿勢が見られますね。

qiita.com

このブログを書いている時点でのQiitaに投稿されたFlutterタグのつけられた記事数は501件です。

一方、ReactNativeは945件。

qiita.com

なんとなく近しいかなって思ったReactNativeと比較してみました。
後発だった割に記事数はなかなかのもんだと思いますね。
全部読んだ訳ではないので記事の精度とかは分からないのですが、数字上では凄い勢いで増えてるんじゃないかと思われますね。

ただ、やっぱり公式サイトや公式のサンプルコード(Github)、英語圏の方の書かれたブログ、StackOverflowとか見ることで解決できることもあったので、まったく英語を読まずに開発するということは難しいと思います。

4. 市場にその技術を使えるエンジニアが豊富であるか

これは未知数ですよね。
でもゼロではないと思ってます。
開発担当のエンジニアが辞めた後に後任をすぐに探せるかっていうのはやっぱり気になるところですよね。
せっかく作ったアプリを開発し続けることができなくなってしまっては元も子もないですし。

しかし、現時点では少ないかと思います。
ただ、先にリンクを貼ったconnpassのFlutter Japan User Groupには現時点で779人の人が登録しています。
すべてがエンジニア職の人ではないかもしれませんが、これだけの人がFlutterに関心を寄せているってことだと思います。

なので、Flutterを流行らせてFlutterやれるエンジニアを増やしていく事が重要かと考えています。

5. 既にリリースされている商業アプリはあるか

これは実際に聞かれたことがあって、FlutterよりReactNativeのがまだ実績あるんじゃないって反応でした。
しかし、これだってゼロじゃないです。

使った事ないですけど、AlibabaさんのアプリとかFlutter製らしいじゃないですか。

商業アプリかどうかは分かりませんが、Flutterで作られたアプリを登録するサイトらしいです。

itsallwidgets.com

結構沢山ありますよね。
なのであまり恐れず使っていけばいいんじゃないかと思います。
少なくとも、ネイティブの機能をメインで使うようなアプリ以外であれば充分Flutterで対応できるんじゃないかと思います。

今後の展開と目標

3月は結構時間があるので、Flutterの勉強をしていこうと思います。
また、日本語でのFlutterの記事数を増やす貢献を微力ながらしてきたいと思います。
全然アクセスのないブログですが、少人数でもエンジニアさんの目に止まりFlutter始めるきっかけとかになってくれると嬉しいです。
また、Flutterエンジニアが増えることにより、Flutter案件が増えるといいなと思ってます。
そして、もう一度私もFlutter案件にかかわる事ができたらいいなと思ってます。