株式会社YOUTRSUT アプリエンジニア 朝日大樹さん
2012年4月、新卒で株式会社サイバーエージェントへ入社。子会社のシロクへ出向し、iPhoneアプリの開発に携わる。14年12月株式会社トランスリミットへ転職し、ゲーム開発に従事。19年11月 株式会社キッズラインへ転職し、再びアプリ開発の道へ。20年12月 株式会YOUTRUSTへ入社。Flutterエンジニアとしてアプリ開発を担当
最近、アプリ開発に携わるエンジニアを中心に注目を集めるフレームワーク・Flutter。「新たにFlutterを学んでみたい」と考える人もいるだろう。
そこで、「Flutter」の魅力と学習方法を探るべく、現在Flutterでアプリ開発を行っているエンジニアにインタビュー。キャリアSNS『YOUTRUST』のアプリ開発チームを率いる朝日大樹さんに話を聞いた。
朝日さんは、これまでObjective-C、Swift、Kotlin、C++などさまざまな言語やフレームワークを身に付けてきたアプリエンジニア。『YOUTRUST』のiOSアプリを、Flutterでイチから作った経験を持つ。
アプリ開発にFlutterを選択するメリットについて、朝日さんはどのように感じているのだろうか。
株式会社YOUTRSUT アプリエンジニア 朝日大樹さん
2012年4月、新卒で株式会社サイバーエージェントへ入社。子会社のシロクへ出向し、iPhoneアプリの開発に携わる。14年12月株式会社トランスリミットへ転職し、ゲーム開発に従事。19年11月 株式会社キッズラインへ転職し、再びアプリ開発の道へ。20年12月 株式会YOUTRUSTへ入社。Flutterエンジニアとしてアプリ開発を担当
※Flutter(フラッター)とは、2018年にGoogleが発表したオープンソースのクロスプラットフォームフレームワーク。使用言語はDart。iOSとAndroidの両OSで同じソースを共有できるため、モバイルアプリの開発効率が飛躍的に向上する。Flutterを扱えるエンジニアを求める企業は増えているが、Flutterエンジニアはまだ少なく、需要に対して供給が間に合っていないのが現状。
2010年にサイバーエージェントでインターン、内定者バイトをしていた頃がちょうどiPhone黎明期で、Objective-Cを使っていました。その中で、サーバーサイドでPHPやJavaも触っていましたね。
その後、転職してからCocos2d-x、C++でゲーム開発に携わり、再びアプリ開発の世界に。この頃に、Objective-CからSwiftに移行して、Androidアプリ用にKotlinも習得しました。そして2年程前に、趣味のプロジェクトでFlutterを触り始めたんです。
趣味でメンタリストDaiGoさんのファンコミュニティーに参加していたのですが、そのメンバーの一人が「Flutterを用いて、あるサービスのアプリを作りたい」と言っていて。
ちょうどFlutterが話題になり始めた頃だったので興味を持ちましたし、このプロジェクトに参加すればDaiGoさんにも会えるのかな? と期待して、手を挙げました。
実はDaiGoさんとその案件はまったく関係がなかったので、結局会えなかったんですけどね(笑)
ただ僕は、もともと新しいことを学ぶのが好きなので、何にせよ新しい技術を使えるぞとワクワクして、すぐに勉強のスイッチが入りました。
はい。20年夏ごろに、もともと共通の知人が多かった代表の岩崎に声を掛けられ、「10月までにアプリを出したい」と相談されたんです。
その時、あと2カ月くらいしかないのに技術選定すらできていない状態で。そこで、アプリ開発の中でも開発スピードが速いFlutterを選びました。
ローンチに向けても速さは必要でしたし、SNSというサービス特性上、リリース後のアップデートも頻繁だと予想していました。
Flutterは、ホットリロードを始めとするさまざまな開発効率化のための機能や開発者用ツールが用意されているので、開発速度を向上させられることは、事業スピードにも直接関わってくると考えたんです。
iOSアプリローンチ時は、せっかくならニュースバリューがあるアプリにしたかったので、当初の計画よりもかなり機能を追加しました。
メンバーは、最初は僕一人で開発していたのですが、最終的には副業メンバー含めた2~3名体制にして。
スタートアップらしく日々要件が変わっていく中でも、少人数で比較的スピーディーに開発できたのはFlutterだったからこそだと思っています。
僕らのチームにはFlutter経験が多くない人も参加していたので、プルリクエストを細かく分割し、細かく意思疎通を図ることにより、手戻りがないように工夫しました。
21年12月にはAndroidアプリもリリースし、クロスプラットフォームフレームワークであるFlutter開発のメリットを存分に生かせていると思います。
僕は言語を習得する時に、ある程度体系的に学んでから実践に移すタイプなので、まずは書籍をパラパラと読み進めるところからスタートしました。
『Android/iOSクロス開発フレームワーク Flutter入門』(秀和システム)という400ページほどあるかなり分厚い本なのですが、全体観が分かるので当時はすごく勉強になっていたのを覚えています。
ただ、技術の習得には知識だけでなく実践も欠かせません。
僕の場合は、オンライン学習サービス『Udemy』でFlutterの解説動画を購入して、解説とまったく同じものを自分も手元でも実装していました。Udemyの20時間ほどの動画でしたが、一時停止しながら手を動かして……としていたので、実際に掛かった時間は50~60時間ほどです。
書籍と動画では、それぞれ良さが違います。書籍は全体像をつかむのに良いですし、動画は一つのミニアプリを作るものも多く、アプリ開発の疑似体験ができます。
動画を選ぶ際に気を付けていたのは、「その解説が最新版に対応しているか」どうかです。Flutterはアップデートが頻繁にあるので。
動画自体は古くても、例えば注釈ではちゃんと「現バージョンではこう変更されている」と説明してくれないと、「古い仕様で実装しても動かない」なんて状況になってしまいます。
ちなみに僕は「学んでから実践に移す」のですが、とにかく何か作ってみながら技術を習得していくエンジニアの方もいると思います。これは性格にもよるし、どちらでもいいと思いますよ。
Flutterはアプリ開発用のフレームワークなので、Objective-C、Swift、Kotlinあたりとの親和性は高めです。また、バグ対応のためにSwiftやKotlinのコードを読んだり書いたりしなくてはいけないこともあります。他の言語やフレームワークの経験が損になる、ということは全くないと思います。
ただ逆に、知識に引っ張られて素直に書けないこともあります。書き心地はまったく違うので、その辺りには注意が必要かなと思います。
Flutterは新しい技術なので、情報が少ないしすぐにアップデートされてしまうんですよ。なので常に最新情報を取りに行くことは意識していました。
例えばTwitterで最新情報をキャッチアップして、分からないことがあればハッシュタグをつけて質問することもありましたね。
またFlutterに限りませんが、技術の習得には、インプットと同じくらいアウトプットが大事だと思っているんです。
「こんなエラー対応をした」「学んだことを実践した」など何でもいいので、ZennやQiita、note、ブログなどに書いてみるのが良いと思います。
僕もそうやってアウトプットしたものをTwitterやブログに投稿していましたが、そうすると世界中のエンジニアから間違いや改善ポイントを教えてもらえることも多くて。それがとても勉強になりましたね。
まずメリットは、先ほどの繰り返しにもなってしまいますが、大きく以下の四つに分かれるかと思います。
Flutter開発のメリット
1.クロスプラットフォーム開発ができる
2.開発速度が速い
3.Googleブランド+オープンソース
4.書いていて気持ちいい
それぞれ説明していきますね。
単一のコードで、iOSとAndroidの二つのOSに公開できるので、iOSエンジニアとAndroid両方のエンジニアがいなくても両OS用のアプリ開発ができます。
予算や人員が少なくて済みますし、アプリ以外にWebアプリやデスクトップアプリにも対応しているので、ベンチャー企業やスタートアップとも好相性です。
ソースコードの修正を瞬時にアプリに反映させる「ホットリロード機能」を備えているため、コードの編集から動作確認までのサイクルが速いのがFlutterの特徴。
プログラムを修正の度にコンパイルする必要がなく、ストレスが少ない開発ができます。
FlutterはGoogleが開発したプラットフォームなので、やはり安心感がありますよね。また、世界中のエンジニアが開発に関われるオープンソースなので、アップデートが頻繁にあるんです。
優秀なエンジニアが多く使っているので、どんどん機能が改良されているところもポイントだと思います。
これは完全に主観ですが、Flutterは他のプログラム言語と比べて、圧倒的に書いていて気持ちがいいんです。
うまく言葉にするのが難しいのですが、プログラマーであればこの「気持ちいい」感覚が分かる人も多いのではないでしょうか。
ただ一方で、デメリットももちろんあります。
Flutter開発のデメリット
1.情報が少ない
2.動きがAndroid寄り
3.OS機能を使うゴリゴリに使うアプリには不向き
4.エンジニアが少ない
Flutterは歴史の浅いフレームワークなので仕方ありませんが、場合によっては英語のドキュメントを読んだり、ソースコードを読んで解読したりする必要があります。
ただ、Googleが用意している公式ドキュメントはかなり充実しています。英語で書かれているので読むハードルは高い方は多くいると思うのですが……日本語の情報は比較的少ないので、翻訳機能を使ってでもきちんと読んだ方がいいと思いますよ。
アプリにはOSごとに特徴的な動きがありますが、FlutterはGoogleによるプラットフォームなので、そのまま書くと「Androidっぽい動き」が多いです。
「iOSっぽい動き」をさせるには専用のコンポーネントを使う必要があります。両OS対応のアプリを作ろうと思うと、都度条件分岐が必要になりコードの煩雑性につながってしまうため難しい選択を強いられる事になると思います。
FlutterはOSに追従して更新されるので、どうしてもOSのアップデート時の追加機能がFlutterで使えるまでタイムラグが発生してしまいます。そのため、ARやVR、フィルターを多用するカメラアプリなど、iOSやAndroidのネイティブ機能を、ゴリゴリに使うようなアプリ開発にはあまり向いていないのかなと感じています。
現状、Flutterエンジニアが相対的に少ないことも、デメリットの一つだと思います。Flutterで開発したい企業にとってもそうですし、コミュニティーなども少ないので、他の言語と比べたら切磋琢磨しづらい状況なのかもしれませんね。
先ほどお伝えしたように、アウトプットを大事にすることですね。
アウトプットは転職にも役立ちます。僕は採用に関わっていたこともあるのですが、採用する立場からすると、同じFlutter経験1年のエンジニアが2人いたとしても、アウトプットしている人の方が技術力を見極めやすいですから。
Flutterエンジニアはまだ少ないので、市場価値が高く、採用単価も上がっています。これからますます注目は高まる職種なので、学んでおいて損はないはずですよ。
YOUTRSUTのアプリはFlutterで開発して正解だったと思いますし、僕自身は、純粋に書いていて気持ちがいいFlutterが好き。ぜひ、多くのエンジニアにこの気持ちよさを体感してほしいですね。
取材・文/古屋江美子
NEW!
NEW!
タグ