谷川です。はじめての投稿でいきなりまとめですが、今現在使っている技術やサービスなどよく聞かれるので、まとめて書いておこうと思います。
スタートアップの方など、これから選定される方はメリットやなぜ導入したかも含めて書くのでご参考に!
モバイルアプリ
Unity
知育をやるならば、3Dは避けて通れない道です。
アプリはもちろん、映画などでもpixerを始め子供向けのコンテンツでは3Dが多く、3Dであれば選択肢はUnity一本でしょう。(最近は2Dにも対応しています)
エンジニア・デザイナー中心にUnity合宿などを定期的に行っており、今後は主にUnityを使っていく予定です。
*Unity開発者大募集中です。
Cocos2d-x
iOSとAndroidをメインに、復数プラットフォームに対してアプリを配信しているため、クロスプラットフォームの機能は必須です。
ゲームエンジンとしての機能も充実ですが、C++で記述していて、パフォーマンス的にも恩恵を受けられます。当初はJavaでAndroid端末向けリズムゲームを開発していたのですが、パフォーマンスや描画性能に苦しみ、前述のメリットを考慮し導入を決めました。
マイナーバージョンアップでもライブラリのインターフェースが変わるなどあったり、C++界隈からの嫌われ者ですが、実践ではかなり活躍してます。
バックエンド
Padrino + Sequel
http://jp.padrinorb.com/
http://sequel.jeremyevans.net/
起業当時は、perl+mojoliciousを使っていましたが、採用の観点で若い世代のエンジニアが使っている + 世界的に使われいる言語ということでRubyを採用しました。(それまでは個人的には主にPerlを使っていました)そしてほとんどRails一択なRubyの世界ですが、フレームワークにはそこまでたくさんの機能を期待していなかったので、フルスタックなRailsではなく、軽量なPadrinoを選びました。Sequelというdatabase toolkitが使いやすかったのもPadrinoを選択した理由の一つです。
mongodb
ソーシャルゲームを作っていた時代から、モバイルアプリで知育のサービスに変わってから、もうこいつにはお世話にならないだろうと思っていましたが、最近は分析まわりでお世話になっています。レコード単位のinsertやupdateをmongodbで受けて、Redshiftにデータをexportするような使い方をしています。aggregateは使いこなすと便利です。
Github / Gitlab
http://github.com
https://about.gitlab.com/
主にWEBシステムのリポジトリしてGithubを、アプリにはGitlabを使っています。
メインプロダクトがなく、たくさんアプリを出しているのですが、Githubだとリポジトリ数が増えるとコストがかさむのでアプリに関してはGitlabを採用してます。
circle.ci
たくさんのアプリを1つのバックエンドシステムで支えているため、テストは不可欠です。CIに関しては特に他のサービスと比較はしてないです。。
deploygate
test flightがappleに買収された今、iOS,Androidの両プラットフォームに対応したアプリ配信システムはこれでしょう。
Jenkins
アプリの自動ビルドに関して使っています。まだ本格運用してないのですが、特定branchへpushすると、自動的にビルドして、deploygateにアップするという仕組みがあります。
NewRelic
設定が超楽だということを知って試してみましたが、導入が超簡単で、感心するほど細いところまで良く出来てます。無料版で使っていますが、単にAlertを飛ばす仕組みとして使うだけでもかなり便利。サーバーリソースだけでなく、applicationの状況なども参照できます。有料版が高く手が届きません。。より詳細の指標はmuninを使って見れるようにしています。
AWS
スタートアップでWEBやるんだったらインフラはクラウド環境がベストだと思います。柔軟にリソースを増やしたり減らしたりなどできるので、先の読めないスタートアップサービスには向いていると思います。EC2, RDS, S3, CloudFront, Redshiftなど使っています。
capistrano
AWS Cliと連携して使っています。Padrinoアプリケーションはデプロイ後あたたまるのに時間がかかるので、ELBから外してデプロイ、リクエスト捌けるように温まってからELBに再度attachしたりしてます。
社内システム
slack
当初skypeを使っていたのですが、人ベースのグループしか作れないので、どこでなにを話していいのか分かりにくい状態でした。
そんな時現れたのが、デザインもいけてるslack。
IRC的なインターフェースと、integration機能など便利で全社での運用にしました。今ではたくさんのchannelがあります。
他のツールの通知などは、slackにまとめています。
全社でチャットで話せると、メールが面倒になります。。
backlog
口頭やslackなどで発生したタスクはこちらで管理してます。
他にもスケジュール管理、どのように開発したかのログを残すという用途で使っています。
ガントチャートが見やすく、期限など日付の設定がされていると、細い進捗確認も要らないほどです。
会計士とのやりとりでも使われたり、エンジニア以外でも使いやすいUIのようです。
Qiita:Team
slackやタスク以外で、共有したい内容はこちらに記載してます。一連のオペレーションの共有や、日報、議事録などで主に使ってます。
Google Docsと違い、更新すると通知が来るので、人の気配が感じられます。
全社で使い始めたばかりですが、使っていく内に用途も変わってきそうな感じの気軽さ、自由度を感じます。
Google Apps
http://www.google.co.jp/intx/ja/enterprise/apps/business/
事例としても取り上げていただいたのですが、社内の経費精算やあらゆる文書がGoogle Driveに上がっています。
メールに関してもGoogle Apps(Gmail)を使っています。
Gmailはエイリアスの機能がかなり便利。なんでもアカウント”+”任意文字列で、メールアカウント増殖できるので色々な用途で使えます。
calendarで予定の共有や、会議室の管理をしています。
Google Apps事例
Dropbox
社外のエンジニアさん、イラストレータさんとのやりとりや、すぐに共有したいものに関して使っています。
Facebook Group
起業当時からグループにて情報共有をしています。全社向け共有や、写真/動画を上げたいケースに使っています。
メンバーが既読か分かるのと、やはり”いいね”が秀逸。
まとめ
今後も安住せず新しくいいもの、目的合ったものはどんどん試して使っていきます。
スタートアップでは、いかにこのような素晴らしいサービスを活用して、自分たちが注力したい事業にいかに力を注げるかというところがサービス・技術選びのポイントかもしれません。
スマートエデュケーションでは、このような支える技術を使って、一緒にインパクトのあるサービスを開発するメンバーを募集しています。ご興味ある方は“こちら”からお願いします。