RELEASE
2014.12.19

リクルートテクノロジーズのAndroid開発


スマートデバイスグループの片渕です。
この記事はリクルートテクノロジーズAdvent Calender 2014の19日目の記事です。
前日は,@ainoyaさんのモバイルアプリ開発で面倒なサーバAPIバックエンドの切り替えを動的に行うについてでした。
今回は,私が所属しているスマートデバイスグループでAndroidエンジニアがどんな技術を利用して開発を進めているかに関してご説明します。

組織

リクルートテクノロジーズのスマートデバイスグループはゼクシィSUUMOなどリクルートの中でも比較的規模の大きいアプリ開発をミッションとしている組織です。
100人を超える大所帯ですが,その内Androidエンジニアは約30名程となっています。同様にiOSエンジニア,QAメンバーが30人程在籍しています。

技術

IDE

Androidといえば気になるのが開発環境だと思いますが,原則としてAndroid Studioの利用を推奨しています。
Android Studioは既に1.0がリリースされており,ADT Pluginの開発は実質凍結するのが確定している為,NDKを多用しているアプリでもない限り今後Eclipseを使うメリットはありません。
とはいえupdatesのchannelはさすがに怖いのでdev channelにする様にしています。
プラグインの導入も特に決まりはありませんが,この辺を使っています。特にEclipse Code FormatterはEclipseからのマイグレーション時に重宝します。

Build System

Gradle一択…と言いたい所なのですが,社内ではMavenを利用しているプロジェクトが多いです。
その理由は,弊社ではAndroid Gradle Pluginが登場する遥か前よりビルドの自動化を実施しており,既に100を超えるアプリにMavenが装着されてしまっていた為,マイグレーションのコストを一気には払えないという事があります。
が,将来的にGradleへ移行した方が管理コストが低くなるのは自明の事なので現在絶賛マイグレーションを推進している最中です。
Mavenでもprofileやmaven-android-pluginをフル活用する事でBuild variantsの様な事を実現できたりaarを利用した開発ができるのですが,その辺のノウハウは以前に勉強会で発表させて頂きました。
個人的にはライブラリを開発する際はdependencyのoptional依存を利用できたりmaven-release-pluginを使ったリリース作業自動化ができる為,便利な面も多いと感じています。
が,Android StudioではひっそりとMavenサポートが打ち切られていた事を最近知り非常にショックを受けています。

Jenkins

アプリ・ライブラリのビルドはJenkinsで自動化しており,ビルドボタンを押すだけでapkが開発者やQAに配布される仕組みになっています。
この辺は当たり前ですね。

Library

少し前までは社内で開発したライブラリを使用していましたが,最近はオープンソースへの切り替えを薦めています。以下の様なライブラリを利用する事が多いですが, 原則としてAndorid SDKやSupport Libraryに同等の機能が存在する場合はそちらを使う様にしています。


また,クラッシュ検知やPush通知配信基盤のシステムに関しては内製しており,専用のAndroid SDKを用意して各アプリへ装着しています。
Push通知配信基盤に関しては@ITの連載で詳しく語っておりますのでご参照下さい。

Challenge

R&Dという程ではないですが,Androidの新機能に関しても可能な限りキャッチアップする様にしており,例えばApp Indexingに関してはGoogle IO 2014に間に合わせる形で急ピッチで実装を進めました。現在では以下のアプリがApp Indexingに対応しています。


また,現在はAndroid TVに関しても検証を開始し,リクルートとして面白い試みができないか考えています。

Other

その他のツールに関しては以下の様なものを利用しています。
  • タスク管理: Redmine
  • ソースコード管理: GitLab
  • ナレッジ共有: Qiita:Team
  • チャット: Hipchat

大事にしている事

長々と書きましたが,我々が一番大事にしている事は, Pure Androidの思想に準じたAndroidらしいアプリを作る事です。
勿論ビジネス上の制約などがあり厳しい場合もありますが,可能な限りAndroidの思想に準じた実装をする事を心がけています。
AndroidのUIアンチパターンに関しては以下の動画が非常に参考になります。


最後に

ここまで弊社で実施しているAndroidの取り組みに関して書きましたが,勿論良い事ばかりではなく以下の様な課題も抱えています。

  • Gradleへの移行をスムーズに進められていない
  • Androidのベストプラクティスに関して社内で理解している人間が少なく,どうしてもiOSに押されてしまう
  • そもそもAndroidエンジニアが圧倒的に足りていない

我こそはリクルートのAndroidアプリを良いものにしたい!という志持っておられる方がおりましたら,是非一緒に働きましょう!

TAGS:

RELEASE
2014.12.16

「機械学習:技術的負債の高利子クレジットカード」のまとめ


アドバンスドテクノロジーラボの石川有です. 株式会社リクルートテクノロジーズ Advent Calendar 2014 – Qiita の 12/16 分でエントリーを書きます.

大規模データを扱った機械学習用ライブラリがオープンソースで利用できる便利な時代ですが,まだまだ真の意味でエンジニアリングと機械学習研究の融合は果たせていないと思います. 従来のソフトウェアエンジニアリングではソースコードに対する知見が提案され実用されていますが,いざ機械学習システムの開発・運用に適応してみると「それだけ」では足りないということを実感します. その開発と運用のしづらさは何によるものなのか,それを回避するためのアンチパターンはなんなのかなどのヒントを,Google の D. Sculley らが Machine Learning: The High Interest Credit Card of Technical Debt で示してくれました. 今回のエントリーでは,これから機械学習システムを実運用する上でどういうことを考慮する必要があるかを示してくれた論文をまとめました.

RELEASE
2014.12.10

JJUG CCC Fall で発表してきました


ALTL の伊藤です。 先日おこなわれた JJUG CCC 2014 Fall におきまして APソリューショングループ の宮川と、伊藤がリクルートテクノロジーズの Java プラットフォームの利用について紹介させていただきました。

宮川:リクルートにおけるソリューション開拓と実装展開


リクルートテクノロジーズの会社と ElasticSearch をベースにした検索基盤の内容について紹介しました。

伊藤:ATLにおける Javaプラットフォーム活用


Java で書かれた OSS プロジェクトをベースとした活動について紹介しました。

JJUG CCCの様子


イベントは 500 人以上が参加するという盛況ぶりでした。参加企業もSI系からWeb系まで多岐にわたり、Java プラットフォームの豊かさが印象的でした。リクルートテクノロジーズは今後共 Java プラットフォームをベースとした活動を行ってまいります。

RELEASE
2014.12.09

大阪大学で研究とオープンソースについて講義をしてきました


ATLの伊藤です。 先日大阪大学で一コマの講義をしてきました。内容は研究を基にしたオープンソースの現状について解説です。 後半で研究系のオープンソースを開発、公開する際に気をつけるポイントについて説明しました。

スライドの内容

気をつけるポイントでは、オープンソースを使わせてもらう際に、一般的に存在して欲しいポイントをまとめています。これらのポイントは研究系のとんがったツールでは特にあってほしいと感じています。とはいえ私自身オープンソースを育て、伝える難しさを痛感している状態です。そのため書いた内容に自信があるわけではない点についてご了承ください。

RELEASE
2014.11.25

Apache Spark を用いた機械学習の勉強会を開催しました


アドバンスドテクノロジーラボの石川有です. 2014年11月20日に,Apache Spark を用いた機械学習の勉強会を開催しました. Apache Spark の利用としてもっとも期待されてることの1つが,ビッグデータをより高速に処理できる機械学習ライブラリとしての側面だと思います. 石川の発表文の資料は,slideshare にて公開しています. ターゲットとしては,Apache Spark の基礎知識を踏まえた上での Spark のクセの解説と二項分類器のアルゴリズムである Logistic Regression を MLlib でどう使うかのチュートリアルを解説しました. イベントにご参加いただくにあたって事前にとったアンケートでは,まだ半分以上の方が Apache Spark を利用されていないという回答でした. さらに Apache Spark の機械学習ライブラリである MLlib を利用したことがあると回答した方は,全体の6分の1程度でした. 当日はお足元の悪い中足を運んでくださった方,お忙しい中ご登壇頂い方,運営をお手伝い下さった方に厚く御礼を申し上げます. これからも Apache Spark の普及に向けてがんばっていきますので,宜しくお願い致します! 事前アンケート結果

TAGS: ,