サイバーエージェントを支える技術者たち

第65回 ネイティブエンジニア育成プロジェクトに迫る!

この記事を読むのに必要な時間:およそ 2.5 分

ネイティブアプリを開発できるエンジニアを育成する取り組みとしてサイバーエージェントで始まったのが,⁠ヘラネイティブ」というプロジェクトです(写真1)⁠今回,このプロジェクトの責任者であるアメーバ事業本部の原一成氏(写真2)⁠そして講師として育成に携わった藤原聖氏(写真3)と伊藤恭平氏(写真4)にお話を伺いました。

写真1 ヘラネイティブプロジェクトチームのみなさん

写真1 ヘラネイティブプロジェクトチームのみなさん

今後の「Ameba」はネイティブアプリを軸にサービスを展開

─⁠─まず,この取り組みを始めることになったきっかけを教えてください。

写真2 原一成氏

写真2 原一成氏

原:これまで「Ameba」では,スマートフォン向けのサービスをブラウザ上で展開してきましたが,今後はネイティブアプリに力を入れていく予定です。そのためには,ネイティブアプリを開発できる技術者を増やすことが欠かせません。そこで私がネイティブアプリのエンジニアを育成するためのしくみを提案し,⁠ヘラネイティブ」のプロジェクトが始まりました。

AndroidやiOSのネイティブアプリ開発について,独学で習得しているエンジニアは多いと思いますが,興味はあるけれど一歩踏み出すまでには至らないというエンジニアもいるでしょう。そのようなエンジニアを,組織としてバックアップすることで後押しするのが「ヘラネイティブ」の目的です。

─⁠─この取り組みは,どのようなプログラムで進められているのでしょうか。

原:全部で3つの課題と講義があります。課題は受講者が好きな時間に取り組み,完成したものを社内のGitHub Enterpriseに上げると講師がレビューします。講義では,ネイティブアプリ開発でつまずきやすいポイントや,開発するうえで注意すべきポイントなどを講師に話してもらっています。

─⁠─どういった人たちが受講されたのでしょうか。

写真3 藤原聖氏

写真3 藤原聖氏

藤原:参加者のバックグラウンドはバラバラで,普段はフロントエンジニアとしてJavaScriptで開発している人もいれば,Javaで開発しているサーバサイド側の人もいました。ある程度プログラミングができる人がメインでしたが,普段JavaScriptで開発している人たちは,ちょっとたいへんそうでしたね。

─⁠─受講生の方たちは,この取り組みにどの程度時間を使われていたのでしょうか。

原:就業時間内の2時間を課題の取り組みに使ってよいというルールにしましたが,かける時間は人によってまちまちでしたね。

伊藤:課題には提出期限を設けているのですが,その直前の3日間くらいで詰め込んでやる人も多かったようです。

─⁠─課題のレベル感は,どの程度だったのでしょうか。

藤原:基本的には,我々が出しているサービスの開発の基礎的な部分を理解できるというレベルで考えました。スムーズに実務に入れるレベルという感じでしょうか。

原:すごくやる気がある人にとっては,ちょうどよいレベル感だったと思います。もう少していねいに教える必要がある人もいましたが,そこに合わせると全体として到達できるレベルを下げてしまうことになるので,レベル感をどう設定するかは今後の課題かなと思っています。

ネイティブアプリ開発でつまずきやすいポイント

─⁠─講義では具体的にどのようなお話をされたのでしょうか。

藤原:基本的には,ネイティブアプリ特有の考え方を早く理解してもらうことに重点を置きました。そもそもAndroidやiOSといったプラットフォーム自体が新しいものであり,一般的にはそのネイティブアプリの開発についてのノウハウも十分蓄積されているとは言えない状況なので,自分たちが開発の中で身につけたノウハウを伝えることも意識しました。

─⁠─実際に受講される方は,どのような点に戸惑われることが多いのでしょうか。

藤原:受講者の多くはJavaでの開発経験があり,言語の仕様面は理解しています。ただ,ネイティブアプリ特有の考え方については,やはり戸惑うようです。たとえばAndroidではそれぞれの画面のことをActivityと呼びますが,初めてネイティブアプリを開発するときにそのActivityのライフサイクルの考え方に戸惑いを感じる人が多いです。

具体的には,Androidではメモリが足りなくなるとバックグラウンドのActivityがシステムによって破棄されます。サーバサイドで開発していたエンジニアなどはこれが納得できないようで,⁠勝手に破棄されると困る」と。まあ,そういうもんだって納得してもらうしかないのですが(笑)⁠

逆に,システムによって自動的に破棄されないように作ってしまうと,メモリリークの原因となってしまいます。そういうところは,多くの人がつまずきやすいポイントではないでしょうか。

写真4 伊藤恭平氏

写真4 伊藤恭平氏

伊藤:iOSの場合は,Objective-Cという言語そのものが最初の壁になりますね。まず「書き方が気持ち悪い」と感じるようです。そこを乗り越えたあとは,Listの生成方法やデリゲートのしくみなどの理論が理解しづらいようです。それとフレームワークですね。フロントエンドで使われる軽量なフレームワークとは異なる,重量級のフレームワークを使って開発していくことになるので,そこを理解するのはたいへんかもしれません。

藤原:あともう1つ,これはAndroidもiOSも同じだと思いますが,UIや画面のレイアウトで苦労している人も多かったですね。つまずきやすいというか,⁠えっ,想像以上にたいへんなんだけど……」という反応でした。みんなHTMLやCSSの知識はあるのですが,AndroidやiOSはWebの世界とは異なる独特のやり方でレイアウトを作るので,また1からやり方を覚えなければならないのがたいへんだったようです。

コメント

コメントの記入