エンジニアリング・アドバイザーの noto です。先月末から新規事業チームのエンジニアリングについてもお手伝いすることになりました。
アカツキでは今年 (2015 年) の夏より、従来のゲーム事業の枠を超えて、教育、ヘルスケア、「働く」などの領域を対象とした新規事業の検討・開発を開始しています。(新規事業に関するプレスリリース / 新規事業公式ページ)
こういった領域では「作っては壊し、作っては壊し」のトライアル・アンド・エラーが繰り返されると想定されるため、技術の選択に失敗した場合でもリカバリできる可能性も高くなります。そのため、従来のゲーム事業に比べると新しい技術を取り入れるチャレンジがしやすいと考え、社内で使い慣れた
- サーバサイド: Ruby on Rails
- ゲームクライアント: C++, Cocos2d-x
とは別の技術を導入し始めています。
サーバサイド
サーバサイドについては
にトライしています。Elixir は Erlang VM で動作するため、並行処理、分散処理、対障害性などに関する Erlang の持つ利点を享受できます。
また、Phoenix は Channels というリアルタイム通信の仕組みを持っています。アカツキ社内ではリアルタイム通信の仕組みが必要な場合は、Rails で実装した API サーバの他に Node.js を使うといったこともしていますが、Channels を使うと両方の役割を Phoenix で済ませるということも可能になり、ゲーム事業での活用に繋がることも期待されます。
ただ、なんといっても Elixir は「Ruby 風」と言われる文法を持つことが Ruby エンジニアの多いアカツキにとっては大きな意味を持っています。Ruby (on Rails) プログラマーは Elixir のサンプルコードを見てもとっつきにくさを感じないでしょうし、同様に Phoenix のサンプルコードを見ても抵抗はないと思います。また、最悪使い続けるのが難しいような大きな落とし穴が見つかったとして、Ruby on Rails に「フォールバック」しやすいと考えています。
また、プロトタイプをさくっと作るという側面では、Backend as a Service である Parse の活用も選択肢に入ってきます。
フロントエンド
今、社内で進めようとしている開発対象は、スマートフォン向けアプリケーションを最初から作るというより、ブラウザ向けに開発するところから始めたほうがいいということで、規模や複雑さに応じて
というように使いわけしていこうと考えています。
また、従来 View レイヤーは個別のページをテンプレートで実装するというのが一般的でしたが、現在では個別のページで共通利用されるコンポーネント単位で実装する必要が出てきています。Bootstrap など開発者が使いやすい優れた HTML / CSS / JS のフレームワークもあり、それをベースにプロトタイプ開発を先行させ、デザイナーはそういった枠組みを活用しながらプロダクトに適した表現を適用するという順序になる可能性もあります。そういった意味では、エンジニアとデザイナーとの間の協調方法、ワークフローを再定義する必要があるタイミングなのかもしれません。こういった部分でもチャレンジが必要となっています。
新規事業での技術選定の考え方
ここまでがあくまでも現時点でのトライを説明したものになります。新規事業チームの中でも取り組むテーマが、教育、ヘルスケア、「働く」などと様々であり、そのチームの開発対象や参加するメンバーによっても最適な技術は変わってくると考えています。
Elixir (Phoenix) と Ruby (Ruby on Rails) のように行き来がしやすい技術は、開発者の心理抵抗を下げる、社内エンジニアのチーム間の流動性を担保するというメリットがあります。一方、社内にノウハウが蓄積されていない技術である場合、導入の調査・準備に時間がかかる、当初の開発生産性が従来の技術を利用する場合にくらべると低い状態で始まり、同じ程度になるまで多少の時間がかかるといったデメリットもあります。ただ、アカツキの新規事業チームでは企画・ビジネスサイドのメンバーもそういった必要な「コスト」を把握した上で、新しい技術を取り込むことにポジティブな姿勢なので、エンジニアチーム側もそういったメリット/デメリットを説明できれば柔軟に新しい技術を取り込んでいける環境になっています。今後も個々のチームごとに自主的に技術選定できるよう進めていく予定です。
仲間募集中!
アカツキ新規事業チームでは、Elixir, Phoenix, React など新しめの技術を実務で使いたいエンジニアを 5〜10 名規模で募集しています。正社員でも/業務委託でも、フルタイムでも/パートタイムでも幅広く門戸を開いています。新しい技術をスピーディーに取り入れられるかた、どの技術を導入すべきかいっしょに考えてくださるかただとうれしいです。興味を持っていただける場合、
http://aktsk.jp/recruit/category/new_service_engineer.html
あたりからご応募いただくか、 私 @noto 、その他アカツキメンバーまでカジュアルにコンタクトいただければ幸いです。