キャリア論
技術のスマートなキャッチアップは、
コミュニティの活用にあり
一般社団法人 DroidKaigi
Androidアプリエンジニアなら誰もが知っているカンファレンス「DroidKaigi」。その代表理事を務める日高氏は、コミュニティ運営の傍ら、サラリーマンとしての顔も持ちます。コミュニティ運営から見えてきたものやこれまで歩んできたキャリア、エンジニアがこれから学ぶべきスキルについて語っていただきました。
日高 「PCは何でもできるハコ」と中学生のときに思ったのが、PCに触れたきっかけです。当時Windows95が発売され、PCに何となく憧れを持っていたのでお小遣いをためて買いました。しかし、プログラミングは存在を知っているレベルで「ディアブロ」「エイジ オブ エンパイア」といったゲームにはまっていましたね。本格的にプログラミングに触れたのは、大学で体系的に学び始めてからです。
日高 情報処理学部に入学し、歴史やコンピューターサイエンスの基礎の学習からスタートしました。プログラミングを学んだ理由は、私自身がコツコツとモノを作り上げていく性格で、ロジックを組んでいくのが好きだったんですね。レゴブロックみたいに少しずつ組み上げて完成形を目指していくイメージに近いです。
日高 そうですね。大阪のとある家電メーカー系の子会社に就職し、家電の組み込み開発を手掛けていました。そこでは親会社に所属しているエンジニアと一緒に、ビデオカメラなどの家電に組み込むソフトウェアを開発していましたね。
日高 メーカーの開発では、新商品を発表するスケジュールが年間で決まっていますので、商品リリースに合わせてプロジェクトが進んでいきます。ウォーターフォール型の開発スタイルではありましたが、仕様をガチガチに決めるわけではなかったので、割と融通が利くといいますか、自分の裁量の範囲であれば、自由に開発ができました。
日高 プログラマ、シニアエンジニアなど、スキルを伸ばすと職位が上がっていくキャリアがありました。私自身、退職時には、複数のプロジェクトのマネジメントに関わっていましたね。
日高 私自身が新しいプロダクト開発にチャレンジしたいと思ってきたからです。それまで開発業務や複数のコミュニティ活動を通して、Webやモバイル開発における知見も溜まってきましたし、その頃親会社が変わったという経緯もあって、「東京でチャレンジしてみるか」と思い、上京しました。
日高 前職に在籍中からですね。Androidに関するブログを書き始めたのが今のコミュニティ活動の原型ですし、Mozillaのコミュニティへ参加するなどモバイルとWebに興味がありました。
日高 Androidが発表された際に、これまでの組み込みの技術スキルが活かせそうと感じたため、飛びついたんですね。
日高 製品の開発プロジェクトにおいてCPUやメモリなどのリソースに制限があるケースがあります。そのためソフトウェアが無駄な処理をしないようにリッチなコードを書かないなど、開発者側で工夫する必要があるのですが、その知見がAndroid開発でも活かせそうな気がしたんですね。
しかし、実際にAndroidを触ってみると、ドキュメントは英語ですし、ググっても解答はでてこないしと途方にくれるケースが多くて…。同じようにAndroid開発で困っている方もいるだろうと。だから、そういった方に向けて解説書の変わりになってくれたらいいなという気持ちで「TechBooster」というブログを開設し、情報を発信していきました。
日高 当初は数名の有志でスタートし、現在は執筆コミュニティとして運営しています。SDKのインストールやライフサイクルの仕組み、Intentを使ってアプリを連携させるなど、基礎的なことからAndroidの最新情報、テスティングなど応用編まで、解説しています。
日高 メーカーでの開発はクローズドな環境でしたので、社外の人と情報を共有しお互いに技術者として高め合い、モダンな方法を積極的に取り入れるということは少ないんですね。それと比較するわけではないのですが、Androidはオープンソースじゃないですか。コードを心行くまで眺めることもできますし、他の大勢のエンジニア同士とも共有できます。ちょうどその頃は家電でもLinuxが浸透しつつあり、クローズドな環境からオープンソースの世界へ転換が進んでいました。タイミングがよかったことも、のめり込んだ要因かもしれません。
あとブログでの発信を続けていたところ、社内からは「家電と連携するスマホについて技術的意見を聞きたい」や、社外からは「Androidに関する講演をお願いしたい」といった、お声掛けが増えてきました。記事を書くためにインプットしてそれをブログで発表し、そこから講演や社内サポートの場でも発表するというサイクルが楽しくなりましたね。
日高 そうですね。ブログでの発信は誤った情報を載せられませんから、これまで以上にインプットには気をつけていましたし、Androidの調査ついでにサーバサイド、フロントエンド、DBなどの見識をこれまで以上に広げるようにしました。ちょうどAndroid、 iOSが盛り上がり、スマホへのシフトが始まっていましたから、うまく市場の潮流に乗り、コミュニティが盛り上がっていきましたね。
日高 そうですね。あんまり私が言うと宣伝みたいになっちゃうんですけど(笑)。無理に参加する必要はないですが、コミュニティをもっともっと有効活用しても良いかと思います。その理由は大きく2つあります。
日高 まず、開発環境の変化のサイクルが早く、ご存知の通り技術は日々進化しています。例えば、言語やプラットフォームなど技術そのもののバージョンアップがありますし、トレンドになる技術の移り変わりも激しいですよね。そのため、エンジニアは最新の情報を常にキャッチアップし続けなければなりません。職場の開発環境において、最新のライブラリやプラグインが利用できないとなると死活問題に発展しかねませんよね。しかし、独りで全てを網羅するのは現実的ではありません。
日高 ええ。コミュニティにゆだねてみてもいいかと思います。ここでいうコミュニティとは、例えば、QiitaやGitHub、数名で行われる勉強会、興味、関心がある技術コミュニティであれば何でも構いません。投稿数やスター数がたくさんある方をフォローしウォッチしていくことで、スムーズかつスピーディーに情報収集ができます。正直DroidKaigiをやっているのも、Androidの最新版を追い続けるのが個人ではしんどいと感じたので開催した経緯もあります。
また、「○○の技術については、△△さんに聞いたらわかる」や「●●さんのスタンスだから自分も同じようにしよう」というベンチマークになる方を自分の中で明確にしておくと良いかもしれません。技術の解説一つとっても無数にあるので、現状、情報の信頼性については人ベースでしか図れませんから。追っていくうちに、誰が発信している技術がトレンドに沿っているか、自分の技術的志向に合っているか見えてくることもありますし。
日高 現在はサンプルコードが溢れ、学習方法が幾通りもあるため、取り掛かりづらいという声も聞きます。一人でやるにはなかなか継続しにくいですし、くじけますよね。だからこそ同じ目的を持った仲間をコミュニティで見つけるのが手っ取り早いですし、モチベーションを保ちやすいのではないでしょうか。そのような場では、ちょっとしたコメントや意見などのインタラクションが発生しますので。
日高 気になったらとりあえず飛びついてみる勇気といいますか、後先考えずにまず手を動かしてみることですね。
日高 例えば、AWSの新しい機能がリリースされたとして、「ちょっと触ってみよう」とすぐに取り掛かれる人と、先延ばしにする人では、学びのスピードに違いが出てきます。私自身Androidの最新版がリリースされたら必ずその日のうちに触るようにしています。やろうと思ってちょっとの間でも先伸ばしにしてしまうと、日が経つにつれて取り掛かるモチベーションが無くなってしまいがちです。
日高 そうです。「●●の技術に興味を持った」という欲求に対して、早急に取り掛かることができるマインドを大切にすべきだと思います。もちろん、最初は着手してみても、無駄だったり失敗に終ったりするかもしれません。でもそれは良質な失敗であって、それを若いうちは体に染み込ませていけば、いずれは大きな成長につながるはずですし、本当に追求していくべき技術の方向性も見えてくるはずです。
日高 昔、とあるモデリングツールを開発してみたのですが失敗でしたね。設計図を書いたら、設計図通りのコードが出てきて動く仕様だったのですが、ツールとしては使いづらくて、アウトプットとしては良いものではなかったですね。
日高 ハッカソンに参加してみると数日でプロダクトを開発してアウトプットしなければなりませんので、アドレナリンが出て良い刺激になると思います。ひたすら作ってはリリースするというアクションが、モチベーションを保つ訓練としては良いと思います。あと個人的にモチベーションを保つ方法で実践しているのは、大きな課題やプロジェクトにおいて、作業工程を細かく区切ってタスクを最小単位までブレイクダウンすることですね。
日高 細分化することで何回もコミットできます。コミットすることに達成感を感じるタイプなので(笑)。
日高 個人的な意見ですが、プログラミングは目的を達成するために利用するツール、という考えがあります。ツールであるプログラミングのコードは多少汚くても構わないと思っています(笑)。当然、開発チームで合意する最低限の品質は必要です。それは間違いありません。しかし、それ以上のこだわりは読みにくさに繋がりかねないので必要ないと考えています。そもそも個人の開発であれば自分が満足すればそれでいいんです。そのため、開発スキルを向上させるのも大事ですが、各エンジニアが担当しているプロジェクトにおいて上位のレイヤーを学ぶことが大切だと考えています。
日高 例えば、ゲームアプリを開発しているエンジニアであればゲームエンジン、他には会社のコミュニケーション文化やビジネスロジックについてなどの理解を深めることが有意義と考えています。そこを議論し追求していくほうが、生産性の向上や良いアウトプットにつながりやすいと考えています。
日高 あとは、アプリエンジニアの共通する課題に、アプリケーションをいかに効率的に開発するかというのがありますから、公開されたライブラリを見たり、自分がライブラリを公開したりすることで学ぶのも良いかと思います。
日高 ありきたりではありますが、一つは課題解決能力ですね。やはりこのスキルに長けている人はどのレイヤーにおいても求められると思います。技術面だけでいくと先鋭化しているので「▲▲のライブラリの作者です」と言えるぐらいにならないと難しいかと。
日高 そうですね。その道は難しいかもしれませんので、課題解決スキルを向上させる方がいいのではないでしょうか。そのスキルのヒントは、自分なりの技術の価値基準を持てるようになることです。
日高 ええ、好き嫌いでも良いのですが、ある技術をプロダクト開発に採用する際、採用する理由を論理的に説明し取捨選択できるスキルです。取捨選択ができるということは、エンジニア自身が幅広く技術の知見をインプットしていて、その中から最適な技術を選択する際に何らかの基準をもっているはず。例をあげるとAndroid開発では、無数にあるライブラリから選択していくのですが、事前に触っていなければ、最適な選択をするのが難しいケースが多々あります。
日高 先ほども話したように最新技術が次から次に出てくるため網羅するのは大変ではありますが、少しでも触っておくと最適な技術選定ができるようになりますし、それによって議論がスタートしていくケースも想定されます。そのため課題解決スキルの一部になっていくと思います。
日高 エンジニアとしてはこれからも、新しい技術に触れていたいと考えています。Androidにしてもプログラミングにしても技術要素でしかありませんが、個人的には常に追っていきたいと思っています。
コミュニティ活動ですと、次回のDroidKaigiの開催について用意をスタートしていますし、それ以外の技術コミュティにも積極的に参加しコミットしたいと考えています。
日高 スタートしたばかりのもので「技術書典」というコミュニティのイベントなのですが、技術に関する書籍を執筆する活動です。
日高 個人としてこれまでにAndroidに関する書籍は数冊出版してきたのですが、それ以外に関する技術についての書籍を作成したことがありませんでした。また、エンジニア初心者がステップアップできるキャリアについて特化した本を書けば、ニッチながらニーズがあるだろうと感じたため、新しくチャレンジしてみようと思いました。
日高 書店では扱ってないものを目指しています。「Android入門」のような書籍は既にあると思いますので、「Androidライブラリの使い方」や「Angular2の最新情報」みたいなものです。一般ユーザーに広くリーチできるものではありませんが、コアユーザーに向けた書籍の形を目指しています。コミュニティの中で作りたい人がやるというスタイルなので自由な雰囲気で作っていますね。
日高 そういった活動を通して、共通の悩みを持った方や同じ目的を持った仲間を見つけやすいとも思っていますね。初めての取り組みなので、どうなるかわかりませんが(笑)。場を提供する形で、エンジニアをサポートしていきたいと考えています。
日高 VRやディープラーニング系は少し前から話題になってきていますし、最近ではBOTが流行っていますよね。UI開発のコストが少ないので、今後の市場が楽しみです。個人的には、先日発売されたRoBoHoN(ロボホン)を購入しまして、こちらもこちらもどういう体験ができるのか、ワクワクが止まりません。
日高 そうですね。現状のアプリ業界は、数年前と比較すると目新しいことは起きにくいステージです。ただ、何が起爆剤となって、どれがトレンドになるかわかりませんから、最新の技術は必ずチェックしておきたいと考えています。
【取材者のコメント】
DroidKaigiの代表理事である日高氏は、ユニークなキャリアの持ち主だ。組み込み開発でエンジニアとしてのキャリアをスタートし、Android開発へと進んでいった。驚いたのは、新規技術が発表されたら、まず自分で試すという同氏の姿勢だ。実際に手を動かして体感から技術の良し悪しを判断しているから、エンジニアとして知見を溜めることができ急成長を成し遂げることができたのだろう。そして忘れてはいけないのが有効的なコミュニティ活動と運営だ。仲間内での効率的な情報収集や、開発手法を公開することでより多くの情報がインタラクションになり、良質なインプットにつながっているのだ。同氏のエンジニアとしてのキャリアや、スキルアップを参照にすることで、理想のエンジニア像に近づけるかもしれない。
Profile
一般社団法人 DroidKaigi 代表理事 日高 正博
情報系の大学卒業後、メーカー系の企業にて組み込みエンジニアとして家電のソフトウェア開発に従事。その後プロジェクトマネジメント職に就きながら、個人でMozillaやAndroid技術などのコミュニティ活動を始め、各地で講演活動や執筆を行う。2012年より、プロダクト開発会社に就業し、研究開発を行う。2015年DroidKaigiの代表理事に就任。エンジニアに向けたAndroid技術の導入支援、解説、啓蒙活動に努める。