adishの技術開発部とは
どうもこんにちは。グループ本体であるGaiax社の頃から数えてそろそろ10年目になる井上です。
今回はadishの技術開発部がどういった開発をしているのか、お伝えしたいと思います。
技術開発部そのもの
現在adishには複数の事業が存在します。
それらはすべて、adishのミッションに沿って運用されています。
我々技術開発部のメンバは、この 運用を手助けするための開発 をメインとして日々業務を行っております。
技術開発部内のチーム
現在、技術開発部には大きく4つのチームがあります。
- 雪風
- ALICE
- karen
- BANANA
この4つです。
それぞれをさっと紹介致しましょう。
雪風チーム
事業向けに開発した各種アプリケーションの運用開発を行うチームです。
新規開発を行うこともありますが、基本的には「事業運用の効率化のための開発」です。
開発メンバ側で運用対応が必要な場合はそのオペレーションも行うのですが、そのオペレーションを効率化するための開発を新規で行ったりもします。
adishの事業を裏で支えているチームです。
ALICEチーム
機械学習について研究開発を行うチームです。
この分野は既存事業に対しての貢献度合いが非常に大きいと明確に見込まれており、期待も大きいチームです。
karenチーム
現在新しく立ち上がってきた事業のサポートツールを開発中のチームです。
市場のニーズも相俟って、かつて無いスピード感と圧倒的な開発力で突き進んでいるチームです。
チームBANANA
事業を効率化するための少し規模の大きいツールを、オフショアで開発するチームです。
拠点はフィリピンにあります。
技術開発部で使用している言語
古くからはGaiax社の系譜としてPerlが使われてきましたが、最近はそこに限ることはありません。
Perl
既存事業の大きめなシステムは基本Perlで組まれています。フレームワークはそれぞれで異なっていて、CatalystやAmon2を利用しています。
Ruby
簡易なWebアプリを用意する際は、Ruby on Railsでスパっと作ってしまうのもアリです。 その後の運用を行う上でも必要なモジュールは揃えやすいですし、そもそも開発に着手しやすいメリットも大きいです。 RoRを使った例としては、「普段の工数の10%を自由に使って良い」とする10%ルールで作ったプロダクトなどがあります。
Python
やはり機械学習に対してはモジュールがそろっているPythonが非常に便利です。 また、教師データを効率的に作成するためのツールをPythonのフレームワークDjangoで作成しています。
JavaScript(Node.js,React.js)
運用を行う上で効率的な画面操作を提供できるのであればSPAをReact.jsで構築するのも選択肢として充分に有り得る話。 実際、画面の一部を表示させたまま、操作を継続する場合の実装として利用しました。
Swift
iOSアプリを作成することだってあります。
Google Apps Script
運用を効率化する目的であればGASだって。
技術開発部で使用しているサービス
開発手法や利便性、あるいは運用の観点から判断してメリデメなどを部全体で話し合った上で決定するフローを取っています。
ソース管理
GitHubを利用しています。 ちなみに社内Subversion、社内git、bitbucket、と移り変わってきた歴史があります。
サーバ監視
サーバ監視には Mackerelを利用しています。 EC2への導入が簡単であり、機能・通知系も揃っていることから採用しました。 Gaiax社謹製のインシデント管理ツールReactioとの連携も強力で、24時間365日稼動する弊社事業のツールを運用していく上で欠かせないものとなっています。
コミュニケーション
開発メンバ間の連絡は Slackを基本としています。 ただ事業側はSkypeを利用しているため、全てSlackに移行できた訳ではありませんが、いつか全面Slack利用にしたいですね。
情報共有
Qiita:Teamでノウハウ共有しています。日報もこちら。 今まで各プロダクトの情報はそれぞれ違う場所に散らばっておりましたが、今後ドキュメント蓄積には esa.ioを使っていこうとしているところです。
クラウド
AWSが基本ですが、Googleの各種APIを利用するにあたって GCP利用の例もあります。
技術開発部って結局
各チームで方向性や観点は異なっているように見えますが、一番の旗印は 『運用を手助けするための開発』 です。
もっと厳密に言いますと『「つながりを常によろこびに」をミッションとした運用を手助けするための開発』であるため、エンドユーザと運用を行うスタッフとのつながりや、エンドユーザとクライアントとのつながり、果てはエンドユーザ同士のつながりを手助けするための開発を行うことに繋がるものです。
karenチームで新規開発する際にもそれぞれの観点を重視した上で行いますし、雪風チームで既に稼働しているツールを改修したり機能追加する上でもやはり外せない観点です。
そういった意味では一番身近なユーザという事業運用メンバに「よろこび」をストレートに届けることが出来る業務と言えます。
そこに対して取るべき手法も、そのニーズに合わせて様々取ってきました。karenチームは1週間スプリントのスクラムにて開発を行っています。
また運用を手助けするための開発だけでなく、開発そのものから事業化を行うパターンも存在します。
ようはadishのミッションを基調とした上で、割となんでもありで開発を行っているのが技術開発部と言えるのではないでしょうか。
今回は本当に技術開発部のごく一部を紹介したに過ぎないですが、いかがでしたでしょう。
普段私が書く文章とテイストが異なっている気がしなくもないのですが(以降の記事テイスト変更のハードルを下げる仕込み)、技術開発部のことを誤解なきようお伝えするにはちょっとは真面目に書かなければ、と意気込んでしまった結果だと思って頂ければと思います。
次回はチームBANANAのリーダーを務める岡安さんから、フィリピン現地の模様をお伝え頂く予定です。
どうぞお楽しみに!