突撃!隣の開発環境 パート3【クラスメソッド編】
こんにちは!おおはしりきたけです。突撃!隣の開発環境シリーズも第3弾になりました。せっかく色々な会社さんに貴重な情報を聞かせて頂いているので、今回は、隣のではなくうちの開発環境ということで、6月にシアトルオフィスも開設したクラスメソッドにインタビューすることにしました。
突撃!隣の開発環境とは
前回も書きましたが、技術事例やノウハウなどは、ブログや勉強会などで共有されることが多いと思います。しかし、各社の開発環境や開発体制などは意外と共有されていないこと多いと思います。ノウハウの流出になるかもしれませんが、それ以上に、より良い開発を目指している会社さん同士で情報交換を行い、良いチーム、良いプロダクトを作っていくという志の会社さんの為の情報共有のための企画になります。開発環境や開発体制なども技術領域によっても変わってくると思いますが、この突撃!隣のシリーズでは様々な会社さんのイケてるツールの使い方や、仕事が捗る開発体制についてインタビューを行っていく予定です。
クラスメソッド紹介
どんなことをやっているのか?
「オープンな発想と高い技術力により全ての人々の創造活動に貢献し続ける」という経営理念を掲げており、創業以来一貫して旬な技術を追求し続けています。 「新しい技術を習得し続けること」 それがお客様への価値を届ける最良の方法であると考えています。。クラスメソッドで開発を行っている部署は大きく3つに別れています。
- AWSコンサルティング部
- AWSソリューション部
- iPhoneアプリサービス事業部
今回は、私の所属しているiPhoneアプリサービス事業部(通称:プリサー)の開発環境について取材し紹介させていただきます。今回取材の協力してくれたのは、iOSエンジニアの平井とAndroidエンジニアの横山とプロジェクトマネージャーの深澤です。
開発環境について
開発端末
プリサーに関しては、全員Macを使っています。JISとUSキーボードでも効率が変わってくるので、入社前に必ずどちらを使っているか確認します。デザイン業務やコンパイルを頻繁に行うマシンを使う担当者にはMBPが支給されます。もちろん、モニタも支給され、キーボードやマウスは、自分用のを持ち込んでいる人が多いです。
コミュニケーションツール
プロジェクトを円滑にするために様々なコミュニケーションツールを使うことになります。チャットやチケットの管理、仕様の共有などどのように行っているのか聞いてみました。
チャットツール
社内の共通チャットツールとして、ChatWorkを利用しており、プロジェクトによってSlackを活用しています。外部の方ともやりとりをすることが多いので、プロジェクト毎にルームを作ったりします。Slack以外にもSkype等を利用することもあります。
札幌オフィスやリモートワークなど、様々な作業環境があるため、ChatWorkでのやりとりは活発で、数時間ほっておくとログを読むのが大変ということも多々あります。
プロジェクト管理ツール
チケット管理やタスク管理のツールとして、BacklogやTrelloを利用することが多かったですが、最近ではこちらの記事の通りスクラムの導入も始まったので、Pivotal Trackerやタスクカンバン等を使って管理するようになってきました。Rettyさんでもポストイットを使ったタスクカンバンを使っているということでしたが、やはり一覧性に優れているのと、ポストイットを剥がしてDoneに持っていくのが楽しいというメンバーも多いです。
タスクカンバンの様子
仕様の共有方法
仕様の共有はBacklogのwikiやCacooを使って図に起こしたりしています。と言われることが多いですが、実際エンジニアさんのスキルもあり、コミュニケーションも蜜に取れているので、それを体現できていると思います。
社内の情報共有についてはConfluenceを使って共有することが多いのと、技術情報などのノウハウはDevelopers.IOに書くという文化なので、ググってクラスメソッドのブログが出てくることが多々ありますw
リポジトリ
昔はBacklogのgitを使うことも多かったですが、最近はgithubを使うことが多いです。リポジトリはプロジェクト毎に契約することが多く、ユーザーさんにそのまま引き渡したりすることもあります。gitの運用はgit-flowで運用することが多いです。
自動化ツール
CI環境は、プロジェクト毎に違いますが、TravisCIを使ってたりCircleCIやJenkinsを利用しています。またアプリの配布ツールは、DeployGateを使っていたり、最近ではCrashlyticsを使って配布することが多くなってきています。サーバー側のデプロイはEC2を使う場合はCapistranoを使ってデプロイすることが多ですが、今後はCodeDeployの利用を考えています。また、Elastic Beanstalkを使うときは、ebデプロイを行います。
デザインツール
ベースはやはりPhotoshop、Illustratorなどを使うことが多いですが、Sketch3も使うことがあります。プロトタイプ作成の為にProttを使っており、ユーザーさんとのやりとりを行ったりしています。インタラクションやアニメーションについては、エンジニアがプロトタイプを作成しムービーにしてUIの操作を確認することもあります。
開発体制
開発チーム
プリサーのエンジニアの内訳は以下になります。
- PM/PL:4名
- iOSエンジニア:13名
- Androidエンジニア:5名
- Serverエンジニア:専任は1名。あとは、iOS/Androidエンジニアが兼任
- デザイナ:専任は1名。デザインできるPL、エンジニアが兼任することも多い
※上記は一番得意な技術の振り分けになっています。iOSのエンジニアがAndroidやったり、サーバーサイドの開発することも多いですし、デザイナがAWSの構築することもあります。
1日の動き
9時30分に始業ですが、大体10時〜10時30分くらいに出社するメンバーが多いです。各チームでデイリースクラムや朝会を行い、その日のタスクの確認を行い作業に入ります。
開発チームについて
プロジェクト毎にチームがわかれています。昔はプロジェクトの規模も小さいものが多かったので、1チーム3名程度だったのですが、最近は規模の大きなプロジェクトも増えてきたので1チーム6〜9人くらいのプロジェクトも増えてきています。札幌オフィスのメンバーとは、写真のようにテレビで常時中継していたりします。クラスメソッドは、リモート勤務も推奨していますが、チームで開発しているので、現状はオフィスにくる人のほうが多いですが、シアトルオフィスなども開設されて世界に拠点を持っていく予定ですのでリモートワークをベースにしたチーム開発というのが今後多くなっていくと思います。
開発プロセスについて
プリサーでは、最近スクラムの導入を始めました。こちらの記事にも書いていますが、今までは各チームごとにプロセスを決めていましたが、小さいプロジェクトの場合は、少人数の個の力でこなすことができていました。最近はスマホアプリでも規模が大きくなってきており、よりチームで開発することも多くなってきており、チーム開発をより強化するためにもスクラムの導入をしようということになり、スクラムでの開発を初めています。
コミュニケーションについて
ChatWorkなどのチャットツールでの会話も盛んですが、リアルでの会話も頻繁に行われており、質問、疑問があればすぐ確認するという文化になっています。クラスメソッドは本当に技術好きなメンバーが沢山いるので、技術用のチャット部屋に、技術で困ったことをポストするとすぐ返してくれるので非常に助かります。社内メンバーで飲みに行くと熱く技術の話が繰り広げられることも多いです。
写真は先日のスクラム研修の様子。
テストについて
iOSで自動テストを行う場合は、kiwiを使うことが多いです。またSpecta + Expectaの組み合わせやQuick + Nimbleの組み合わせでテストを行います。Rettyさんでも利用していたOCMockやOHHTTPStubsを使ってテストしています。AndroidはJunit4を利用できるとようになったので、最近ではJunitを使ってテストコードを書いて自動テストを行っています。サーバー側に関しては、Rubyの場合はRspec等を使ってテストをしています。UI系のテストなどは自動化が難しく、Excelでテスト仕様書などを書いてテストすることも多いです。
その他
プリサーBootCamp
毎週金曜日の17時から社内勉強会を行っています。技術、開発プロセス、設計等などネタは問わずで色々な発表が行われています。
合宿
非日常の空間で開発や作業を行うことで、普段一緒に仕事をしていても気づかなかった点や、メンバーの知らない素顔なども知る事ができます。昨年は日光に行ってきました。ブログも公開されています。今年は、プリサー全員で札幌オフィスに訪問して、札幌オフィスを体験してもらうのと、札幌でiOSの勉強会をする予定です。
卓球
クラスメソッド社員は卓球が強いと言われることがありますが、本当に強いです。対戦してくださる会社さん募集中です!
今回登場したツール
コミュニケーション
- チャット:ChatWork
- チャット:Slack
- チャット:Skype
- タスク管理:Backlog
- タスク管理:Trello
- リポジトリ:github
- タスクカンバン:ポスト・イット
- wiki:Confluence
- ノウハウ共有:Developers.IO
自動化
- iOS/Android/Server:TravisCI
- iOS/Android/Server:CircleCI
- iOS/Android/Server:Jenkins
- iOS/Android配布:DeployGate
- iOS/Android配布:Crashlytics
テスト
- iOS:kiwi
- iOS:Specta + Expecta
- iOS:Quick + Nimble
- iOS:OCMock
- iOS:OHHTTPStub
- Android:JUnit
- 結合テスト:Excel
デザイン
※クラスメソッドでは、上記以外にも様々なツールを利用しております。上記はインタビュー時に伺った内容のものを記載しています。
まとめ
第3回目は、クラスメソッドのiPhoneアプリサービス事業部にインタビューしました。組織的にも人数が倍になり、日々開発環境も変わっていくスピード感で、お客さんに満足しているアプリを作っているプリサーメンバーですが、改めて聞いてみると僕が入社した時使っていたツールはひとつも無くなってますね。時代の流れの早さを感じました。
今回も写真を撮りました。左から横山、平井、深澤、そして私です。三人共お忙しいところありがとうございました!!
参考リンク