ネイティブアプリを開発できるエンジニアを育成する取り組みとしてサイバーエージェントで始まったのが、
今後の「Ameba」はネイティブアプリを軸にサービスを展開
- ──まず、
この取り組みを始めることになったきっかけを教えてください。 原:これまで
「Ameba」 では、 スマートフォン向けのサービスをブラウザ上で展開してきましたが、 今後はネイティブアプリに力を入れていく予定です。そのためには、 ネイティブアプリを開発できる技術者を増やすことが欠かせません。そこで私がネイティブアプリのエンジニアを育成するためのしくみを提案し、 「ヘラネイティブ」 のプロジェクトが始まりました。 AndroidやiOSのネイティブアプリ開発について、
独学で習得しているエンジニアは多いと思いますが、 興味はあるけれど一歩踏み出すまでには至らないというエンジニアもいるでしょう。そのようなエンジニアを、 組織としてバックアップすることで後押しするのが 「ヘラネイティブ」 の目的です。 - ──この取り組みは、
どのようなプログラムで進められているのでしょうか。 原:全部で3つの課題と講義があります。課題は受講者が好きな時間に取り組み、
完成したものを社内のGitHub Enterpriseに上げると講師がレビューします。講義では、 ネイティブアプリ開発でつまずきやすいポイントや、 開発するうえで注意すべきポイントなどを講師に話してもらっています。 - ──どういった人たちが受講されたのでしょうか。
藤原:参加者のバックグラウンドはバラバラで、
普段はフロントエンジニアとしてJavaScriptで開発している人もいれば、 Javaで開発しているサーバサイド側の人もいました。ある程度プログラミングができる人がメインでしたが、 普段JavaScriptで開発している人たちは、 ちょっとたいへんそうでしたね。 - ──受講生の方たちは、
この取り組みにどの程度時間を使われていたのでしょうか。 原:就業時間内の2時間を課題の取り組みに使ってよいというルールにしましたが、
かける時間は人によってまちまちでしたね。 伊藤:課題には提出期限を設けているのですが、
その直前の3日間くらいで詰め込んでやる人も多かったようです。 - ──課題のレベル感は、
どの程度だったのでしょうか。 藤原:基本的には、
我々が出しているサービスの開発の基礎的な部分を理解できるというレベルで考えました。スムーズに実務に入れるレベルという感じでしょうか。 原:すごくやる気がある人にとっては、
ちょうどよいレベル感だったと思います。もう少していねいに教える必要がある人もいましたが、 そこに合わせると全体として到達できるレベルを下げてしまうことになるので、 レベル感をどう設定するかは今後の課題かなと思っています。
ネイティブアプリ開発でつまずきやすいポイント
- ──講義では具体的にどのようなお話をされたのでしょうか。
藤原:基本的には、
ネイティブアプリ特有の考え方を早く理解してもらうことに重点を置きました。そもそもAndroidやiOSといったプラットフォーム自体が新しいものであり、 一般的にはそのネイティブアプリの開発についてのノウハウも十分蓄積されているとは言えない状況なので、 自分たちが開発の中で身につけたノウハウを伝えることも意識しました。 - ──実際に受講される方は、
どのような点に戸惑われることが多いのでしょうか。 藤原:受講者の多くはJavaでの開発経験があり、
言語の仕様面は理解しています。ただ、 ネイティブアプリ特有の考え方については、 やはり戸惑うようです。たとえばAndroidではそれぞれの画面のことをActivityと呼びますが、 初めてネイティブアプリを開発するときにそのActivityのライフサイクルの考え方に戸惑いを感じる人が多いです。 具体的には、
Androidではメモリが足りなくなるとバックグラウンドのActivityがシステムによって破棄されます。サーバサイドで開発していたエンジニアなどはこれが納得できないようで、 「勝手に破棄されると困る」 と。まあ、 そういうもんだって納得してもらうしかないのですが (笑)。 逆に、
システムによって自動的に破棄されないように作ってしまうと、 メモリリークの原因となってしまいます。そういうところは、 多くの人がつまずきやすいポイントではないでしょうか。 伊藤:iOSの場合は、
Objective-Cという言語そのものが最初の壁になりますね。まず 「書き方が気持ち悪い」 と感じるようです。そこを乗り越えたあとは、 Listの生成方法やデリゲートのしくみなどの理論が理解しづらいようです。それとフレームワークですね。フロントエンドで使われる軽量なフレームワークとは異なる、 重量級のフレームワークを使って開発していくことになるので、 そこを理解するのはたいへんかもしれません。 藤原:あともう1つ、
これはAndroidもiOSも同じだと思いますが、 UIや画面のレイアウトで苦労している人も多かったですね。つまずきやすいというか、 「えっ、 想像以上にたいへんなんだけど……」 という反応でした。みんなHTMLやCSSの知識はあるのですが、 AndroidやiOSはWebの世界とは異なる独特のやり方でレイアウトを作るので、 また1からやり方を覚えなければならないのがたいへんだったようです。
現場で使われる最先端の開発ノウハウを注入
- ──講義の内容で、
とくに意識したことはありますか。 藤原:とにかく最先端のやり方を伝えるようにしました。たとえばAndroidであれば、
2. x系から4. x系への移行の中でクラスがたくさん追加されていますよね。そのクラスの使い方など、 できるだけ現状に即した最先端の内容を教えるということを重視しました。 - ──講義に取り組む中で、
講師の方に質問したいという場面もあると思いますが、 それにはどのように対応されていたのでしょうか。 原:実は当初の予定にはなかったのですが、
2週間に1度、 質問会を実施しました。受講生と講師が集まってフランクに食事をしつつ、 聞きたいことがある人は各々講師に質問するというものです。それ以外の時間に、 個人的に講師に質問する人も多かったようです。 藤原:質問の傾向は人によって本当にバラバラで、
バックグラウンドによってつまずくポイントがこうも違うのかと驚きました。 伊藤:最初は、
起動しなかったり、 起動しても何も表示されないところから始まり (笑)、 そこから徐々にレベルが上がっていくという感じでしたね。 - ──提出された課題へのレビューでは、
どのような点を注意することが多かったのでしょうか。 伊藤:とりあえず目に見えて違うところ、
たとえばC言語やJavaScriptの書き方になっている箇所に対しては、 Objective-Cでの適切な書き方をひとつひとつ見せました。一方で、 設計の観点からチェックすることもありましたし、 その人に合わせて臨機応変に対応していました。 藤原:それと、
GoogleやAppleが出しているガイドラインがあるので、 その内容とずれていれば指摘しました。
9名のエンジニアが「ヘラネイティブ」を“卒業”
- ──受講された方によって、
習熟の度合いは違ったのでしょうか。 伊藤:すごく差がありましたね。一番優秀な人は、
過去に経験があるんじゃないかと思うようなレベルで、 驚きました。ただ、 個人的な感覚では、 3ヵ月ぐらいあればだいたいの流れをつかんで開発できるようになるのではないかと思っています。 藤原:トップレベルの卒業生は、
提出してもらった内容のレベルが本当に高かったです。 原:本当にそうですね。早くネイティブアプリの開発チームに入ってほしいと言われるレベルの人もいました。
- ──実際の成果をどのようにとらえていますか。
原:今回は
「重要な機能開発ができる」、 「サポートありでサービス開発ができる」 レベルを “卒業” と決めていたのですが、 「ヘラネイティブ」 の第1回では25名が受講して9名を卒業生として送り出すことができました (写真5)。 もちろん理想は全員が卒業できることなんですが、
今回が1回目ということを考えると、 9名の卒業生を出せたのは十分に大きな成果だったのではないでしょうか。講師の時間をもう少し割けば卒業生を増やせるかもしれませんが、 そこは通常の業務とのバランスを考慮して調整していきたいです。 - ──今後の
「ヘラネイティブ」 の展開について教えてください。 原:ひとまず第1回目で9名の卒業生を送り出すという成果を出せたので、
2回目を行うことが決まりました。講義の内容は、 1回目のフィードバックやプラットフォームの進化に合わせて変えていく予定です。