【Android出身エンジニア集合】フルDart体制ってどうですか?座談会

2022/3/22

10Xが開発・運営する「Stailer」は、1人のエンジニアがクライアント・サーバー等領域を横断して機能を開発しやすい環境をつくるため、フルDart体制をとっています。

本記事では、Androidエンジニアのキャリアから10X入社後にFlutter、Dartを使って開発を行った久田、岡野、二川にこれまでの経験や転職時のイメージ、キャッチアップ方法などついて聞いてみました。(iOS出身エンジニア編はこちら

インタビューした人

久田 一輝(@hisaichi5518)Software Engineer
面白法人カヤックでぼくらの甲子園シリーズのリードエンジニアを務める。その後、GMOペパボでハンドメイドマーケットminneのWeb API開発に関わった後にチーフテクニカルリードとしてモバイルアプリケーションの技術基盤の整備や技術選定を担う。


二川 隆浩(@futabooo)Software Engineer
株式会社ボルテージにて複数のAndroidアプリ開発を経験した後、株式会社エウレカにて「Couples」や「Pairs」の開発を行う傍らDev Process Expertとして開発全体のプロセス改善活動も務め、オンライン結婚相談所「Pairsエンゲージ」の立ち上げ経験を経て10Xにジョイン。技術書典やDroidKaigiなどコミュニティでの活動も積極的に行う。


岡野 忍(@operandoOS)Software Engineer
中小企業のソフトウェア会社で複数のAndroidアプリ開発を経験した後、メルカリにて日米のAndroidアプリ開発・ソウゾウで新規事業の開発を経験。その後、note株式会社でnoteのアプリ開発・作業自動化などの経験を経て、10Xに入社。


ーみなさんのエンジニア遍歴を教えてください。

久田:新卒で面白法人カヤックに入社し、その後GMOペパボを経て10Xに入りました。
カヤックではサーバーのアプリケーションを書き、転職後は主にAndroidアプリを書いていました。10X入社後は「タベリー」のAndroid版を皮切りに、iOS、Android、サーバーどれもやっていましたが、「Stailer」の開発時にFlutterとサーバーサイドDartをやるようになりました。

最近はプラットフォームチームで品質保証に関する仕事をしていて、ソフトウェアのコードを書く仕事はあまりしていません。

二川:新卒でボルテージに入社し、その後エウレカに7年程在籍。約8年Androidの開発をしていました。2020年に10Xに入社しFlutterとDart、サーバーサイドもやるようになりました。これまではサーバーの経験はレスポンスにプロパティ追加する程度だったのですが、がっつりロジックを書くなどは初めてでした。

最近は、パートナーローンチチームで新規のクライアントさんの初期リリースに必要なものを何でも開発しています。

キャリアのスタートがAndroidだったのは、最初に入った会社での運でした(笑)未経験でネイティブアプリの部署へ希望して入った時に、もう一人の同期がiOSをやったことあるということで僕はAndroidになりました。

岡野:高校卒業後、職業訓練校で情報工学やプログラミングを学び、セラクという会社に入社。複数のAndroidの開発の案件を担当しました。その後、メルカリに転職し、日本とUS版のメルカリをAndroidで開発したり、グループ会社のソウゾウで「メルカリ アッテ」「メルカリ カウル」などの新規サービスのAndroidアプリ立ち上げをやりました。

その次にnoteに転職しAndroidアプリを開発しつつ、プロジェクトマネージャーやサーバーサイド、ちょっとしたフロントエンドの実装もしました。10Xに転職した後は、FlutterのアプリやサーバーサイドのDartを書いていました。今は、プラットフォームチームで、開発プロセスの改善やリリースフローの手順を自動化したり、エンジニアの開発体験を良くしています。

言語の遍歴で言うと、AndroidなのでJavaとKotlinをやっていました。メルカリでGoやnoteでRuby on Rails、NuxtJSなどモバイル以外の領域も多少やりました。

Flutterなら、できることの幅が広がる

ー転職時に10Xの技術スタックやフルDart体制についてどう感じていましたか?

久田:僕が入社したころはまだ「タベリー」の開発をしていてネイティブでiOS・Androidを作っていたので、技術スタックで悩むことはなかったですね。当時はサーバーはGoで書いていました。

二川:前職では、プラットフォームごとにチームが分かれていて職能ごとに開発していたのですが、それよりもプロダクトチームとしてそれぞれの職能の人が1つのチームで1つの機能を作っていく方法がいいなと感じていたので、10XがFlutterとDartを使っていたのは選考を受ける上でプラスでした。未経験だったけど、なんとかなるんじゃないかと思っていましたね(笑)

岡野:僕は以前からFlutterに将来性があると考えていたのと、Dartも定期的に言語の状況を追うくらい好きだったので、10XのフルDartという意思決定はポジティブに捉えていました。

後は、長くAndroidアプリ開発をやってきた中で、これからiOSアプリもやりたいけど今から勉強するのは大変だなと思っていたんです。Flutterなら両方やれるから、できることの幅が広がるのも良かったです。

ー岡野さんがDartが好きで触っていたのは、どんなきっかけがあったのですか?

岡野:もともとDartはブラウザで動くJavaScriptの代替としてGoogleが開発した言語でした。
Dartは、自分がJavaScriptに抱いていた不満が解消されるんじゃないかと思って、個人開発や趣味程度に触っていたんです。

実際にはJavaScriptを置き換える言語にはなりませんでしたが、徐々にあるべき姿になったり、Flutterコミュニティの人たちがDartに興味をもって言語が良くなっていくところを見てきました。一時はどうなるかと思いましたが、最近はFlutterが普及したことで随分盛り返してきましたね。

ーネイティブのAndroid開発から、Flutterへ移行した感想を教えて下さい!

久田:前はiOSとAndroid両方作っていたので二度手間だったのが、一度で済むようになり、「どういう機能を作るか」に集中できるようになったのが良いですね。よくなかったことや不満はないです。

ネイティブが必要なWebViewはAndroidとiOSのネイティブを呼び出してFlutterで表示することができるので、特に困っていないです。

二川:僕も好意的です。例外はありますが、toC向けの、リストと詳細を表示するような一般的なアプリはFlutterで充分じゃないかと思っています。
IoTや、AndroidやiOSのAPIで直接呼ぶような機能を持つアプリだと、FlutterではUI共通化以外の恩恵を受けづらいかもしれません。
10XのStailerの場合だと、お客さま向けアプリでは合いますが、スーパーなどの小売店舗のスタッフさんが使うスタッフ向けアプリでは業務用のプリンターに接続するのにWi-Fiを使ったりするので、その点では少し大変なこともありそうですね。

岡野:「もうネイティブに戻りたくない!」というくらい、どっぷり浸かっています(笑)「Stailer」は、お客さま向けアプリではネイティブに依存したような機能がないのでワンソースで動くほうがどう考えても効率が良いんです。自分のスキルセットや事業の方向性としてもよかった点です。

1つのコードでiOSもAndroidもWebでもそれなりに動くのはすごい良い体験です。ただ、すべてのアプリケーションがFlutterで書けるわけではないので、適材適所なのかなとも思います。

ー久田さんはStailerの開発でFlutter for Webもやられていましたが、どうでしたか?

久田:モバイルアプリをWebで動かす時に使ったんですが、少しの変更だけでWebで動くようになるので「動いてる!」と感動しました。
ただ、最初はモバイル向けに作っていたので、Webのことを考慮してなかったんです。
Webで動くけどモバイルで動かないものもあるし、どう切り分けるか、どう対応するのかを考えるのが大変でした。

Flutterはドキュメントがしっかりしていてキャッチアップしやすい

ーみなさんは、どうやってFlutterをキャッチアップしましたか?

久田:最初は業務でやり始めました。Flutterはドキュメントがしっかりしているので、ライブラリのコード、ドキュメント、ブログを読んでいました。
もともとネイティブの時からUIを宣言的に書いていたので、すんなりキャッチアップできて特に苦労はしていないです。

二川:久田さんと同じです。YouTubeにFlutterのウィジェットの特徴動画が30本くらいあって、それを見ながらキャッチアップしていました。動画だとどう動くかがビジュアルで見られるので良かったです。

前職でAndroidをやっていたときに、宣言的に書くのに近いことをやっていたので、FlutterのUIの作り方にも慣れやすかったです。UIよりも状態の持ち方やUIへの伝え方をどう扱うかの方が大変でしたね。
Stailerは、前職でやっていたやり方に近かったので、キャッチアップできました。

岡野:Dart自体は知っていましたが、Flutterそのものは触ったことがなかったので、10Xへの転職を考え出したときに公式ドキュメントを読んだりアプリを個人的に作ってみて調べながら、標準的な開発を学んでいきました。

最終的には入社してから実際の業務で学んだ事が多く、既存のコードを真似して勉強していきました。未だに自信があるわけではありませんが、気になったらすぐに調べたり誰かが書いたコードを参照しながら日々勉強しています。

クライアントとサーバー両方を体験すると、それぞれの気持ちがわかるようになる

ー新しい領域にチャレンジしてみての変化はありましたか?

久田:僕の場合は、じわじわと新しい領域に手を出すのではなく、やっていたものを完全に止めて、FlutterやFlutter for Webを使うというチャレンジでしたが、もともと新しい事をするのが好きなので、ガラッと変わったことで新しい分野に集中できたのが嬉しかったです。

Web業界は変化が激しいので、常に新しいことを勉強をしていかないと置いていかれると思っているんですよね。なので、今やっている品質保証の仕事ではソフトウェアのコードを書いてはいませんが、「新しいことに挑戦する」という意味でポジティブに捉えています。

二川:サーバーサイドを書くようになったのが大きな変化です。僕の場合は、最初はFlutterとDartを少し書いて、その次に大きい機能をやるときにサーバーサイドも書きました。

Dartでフロントエンドもサーバーサイドもやることになったのは助けになりましたね。1つの言語でどちらも書けることで視野が広がったと思います。

今までは、1つのイシューを解決するときにフロントエンドエンジニアの観点でしか考えられませんでしたが、サーバーサイドもできるようになり、考える手段も増えました。
サーバーサイド特有のコンテキストはまだキャッチアップ中ですが、学んでいるところです。

岡野:これまでの仕事でも、新しい領域に挑戦することは少なくありませんでした。10Xへの入社当初はメンバーも少なかったので、新機能を作る際にもイシューの掘り下げなどを1からやることが多かったですね。

こういう経験によって視野が広がったり、エンジニア間の会話のしやすさも増しています。仕事のやり方やコミュニケーションも変わったと思います。クライアントとサーバーの両方を体験すると、それぞれの気持ちがわかるので対話しやすくなります。
あとは、事業に貢献できる幅も増えて貢献度があがるのは楽しいです。

10XならDart未経験の人でもみんなが疑問に答えてくれる

ーキャッチアップなどをする上で、10Xで良かったことはありますか?

久田:先人の残したコードは勉強になります。タベリーでもCTOの石川さんのコードをみてiOSのきれいな書き方を学びました。

岡野:未経験で取り組む場合、1からしっかりと学ぶことも必要ですが、業務でやるならスピードも必要です。他人のコードを真似るのも立派な学習法ですし、10XはDart未経験の人が入ってきてもみんなが疑問に答えてくれる環境があるのは良い点だと思います。

ー新しいことを学んだときに意識していることはありますか?

久田ブログを書くようにしています。でも人のために書くというよりは、自分のために書いていますね。数年後とかに「良いこと書いてるなぁ」と思うことがあるので(笑)

岡野:たしかに、FlutterやDartは使っている人が多くはないので、自分が学んだことをしっかりアウトプットしておくと、他の人に感謝されたり役に立つ機会は他の言語に比べて多いと思います。

ーみなさんは、エンジニアとして今後どうなっていきたいですか?

久田:どんどん新しいことに挑戦して、ずっと変化していきたいなと思っています。
将来、10XにとってFlutterが最適な手段ではなくなれば捨てるのもありだし、いろいろな挑戦をしていきたいです。手段としてやりたいことがあって向かうのではなく、目の前にある問題を解決するための手段として新しいことに挑戦していくタイプなので。

岡野:長期的なキャリアはあまり考えていません。できることを増やしていき、その時の事業に応じて自分ができることをやりたいし、その機会を増やしたいです。

プロダクトマネージャーなど、新しい事に挑戦してみて四苦八苦した結果諦めたこともありますが、今やっているエンジニアの開発体験を向上させる仕事は、近くのエンジニアからフィードバックがもらえて楽しいし、楽になった姿をみると嬉しいです。
10Xのエンジニアは一つのことに固執しない人が多いので、自分も事業の状態に応じて役割を変えていきたいです。

二川: これまでは「目の前の問題を解決するぞ!」動いていたら、結果としてAndroidエンジニアをやり、サーバーサイドもやるようになっていました。

今後は、Netflixが提唱している、「フルサイクル開発者(Full Cycle Developer) 」になりたいです。「フルサイクル開発者 」とは、サービスを提供する上で必要なエンジニアリングを何でもやる開発者のこと。問題をソフトウェアで解決する人になれたらと思います。

ーありがとうございました!

採用情報

10Xのミッション・バリューに共感いただける方からのご応募、お待ちしています!

ソフトウェアエンジニア(MobileApp)
10X採用情報

10X Open Office

「10Xに興味があるかも」「メンバーと話してみたい!」「雰囲気を感じてみたい」という方向けに、定期的にオンラインイベント「10X Open Office」を開催しています。
この記事を読んで興味を持たれた方は、ぜひ気軽にお申し込みください!
10X Open Office 申し込みフォーム

カジュアル面談

10XメンバーMeety一覧

RECRUIT

10xへの到達率は、まだ0.1%。
あなたの力が、必要です。

JOIN OUR TEAM

CONTACT

10Xへの取材依頼やお問い合わせはこちらから。

CONTACT US