読者です 読者をやめる 読者になる 読者になる

5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

クックパッドインターンでゲーム開発してきた話

クックパッド社のインターンに参加してきました

f:id:gigi-net:20120925115740j:plain

9/9から10/4の1ヶ月間、クックパッド社のインターンシップに参加してきました。

インターンシップへの参加は、2011年の8月にはてなのインターンシップに参加した以来、2回目です。

とても良い体験だったので、今後参加を考えている方に向けて、ブログエントリにまとめてみました。

参加したきっかけ

札幌のRuby界隈で知りあったid:mrknさんのご厚意で、インターンシップを紹介して頂きました。

元々、クックパッド社にはid:sora_hさんなど、知り合いが多く、非常に良い会社だという噂を耳にしておりました。 僕はRubyをメインに使う開発者ではないし、クックパッド社のサービスに別段深い思い入れがあったわけでもありませんが、クックパッド社のエンジニアさんは対外的に活動している方が多く、技術力の面でも、会社を挙げてOSSを発展させていこう、という姿勢にも非常に興味を持っていました。

これはせっかくのお誘いだし、毎日美味しいご飯が食べられて快適そうなので、参加してみるしか無いだろう!ということで応募に至りました。

きっかけはそんな感じでしたが、その後は他のインターン生と変わらず、技術力を測るためのプログラミングの問題を解いたり、小論文を提出したり、Skypeでの面接を経て、インターンの参加が決定しました。よかった。

していたこと

クックパッドというと、皆様は女性に大人気の料理のレシピサービスを連想されることと思いますが、今回のインターンで僕が課題として与えられたのはソーシャルゲームの開発でした。

クックパッドでソーシャルゲーム?と思われる方が多いかも知れませんが、実はソーシャルゲーム開発もしているのです。

料理を投稿してかわいいペットを育てるゲーム『おむすびけん』。

f:id:gigi-net:20131017144941j:plain

f:id:gigi-net:20131017144948p:plain

クックパッド おむすびけん

iTunes App Store で見つかる iPhone、iPad、iPod touch 対応 おむすびけん

事前にゲームを作ってます!という話をしていたのですが、普通にレシピサイトの開発かと思っていたのでビックリでした。

インターン期間中のリリースは叶いませんでしたが、そのうち何か出てくると思うので、よろしければ手に取ってみてくださいね。

開発について

開発体制は、最近どこでも採用しているような開発体制で、トピックブランチごとにGHEでコードレビューを受け、Pull Requestを出すという、Pull Request駆動型の感じでした。

クックパッド社は多くのエンジニアを抱えているだけあって、社内謹製の開発ツールやドキュメントが非常に充実してました。 RubyRailsが共通資産となっていて、どのプロジェクトでも似たような環境で統一された体制で開発されていて、環境や規律がかなり整備されているなあと感じました。

RubyRuby on Railsももちろん利用経験はあったのですが、Railsを触っていたのは3~4年前でほぼ初めてに近い状態だったため、全く書けなくなってて戸惑いました。

RSpecもあまり使ったことがなくて、もはやRubyというかDSLに近い感じになってて非常に取っつきにくかった。

普段はPythonやネイティブの言語を好んで書くので、全体的にRubyの思想にはいろいろ悩まされることが多かったです。

逆にクライアントサイドはゲーム作りに慣れているのもあって特に混乱することはありませんでした。

お飯

クックパッド社のオフィスにはキッチンが完備されています。

f:id:gigi-net:20120925124902j:plain

クックパッドでは社内の食材使い放題、さらに必要に応じて買い足しても、作った料理を社内SNSに投稿すれば費用が支給されるというまかない制度があります。

というわけで、ここぞとばかりにたくさん作りました。毎日ご飯に困らないのは良いですね。

f:id:gigi-net:20130920125720j:plain

f:id:gigi-net:20130911125247j:plain

f:id:gigi-net:20130913124336j:plain

f:id:gigi-net:20130930130217j:plain

f:id:gigi-net:20130925125547j:plain

f:id:gigi-net:20130920125946j:plain

たまたま誕生日と重なったので、ケーキを作って貰ってうれしかった!

社内勉強会

一部しか参加できませんでしたが、社内勉強会がなかなかおもしろそうでした。凄いH本の読書会といったIT系の勉強会はもちろん、食文化勉強会なるものも開かれていて非常に興味深かったです。

食文化勉強会では食べ物の歴史や宗教的観点など、ムダ知識っぽい知識共有をする会でクックパッドならではな感じです。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

クックパッドでソーシャルゲームを作ること

インターンシップでのゲーム開発

クックパッドは当然ゲームの会社ではないため、ゲーム開発のノウハウがあまりなく、サービス自体もまだ本格的に開始していないので、まだまだこれからだなあと感じました。

インターンで参加する分には、小さなチームで、スタートアップに近い開発体制のため、クックパッド本体を触るのに比べ、自分の影響が大きくて楽しかったです。

逆に、インターンを遙かに超えた裁量を与えられ、どこまで自由にやって良いんだろうと悩む場面が多かった。 エンジニアだけで回る部分がWeb開発に比べて少なく、コーディングはもちろん、企画や要求定義、市場調査、スケジューリングから、素材の発注、企画共有、仮画像やアニメーションの作成など、インターンながら、あらゆる業務が要求されて大変な感じでした。

ユーザー目線

今回はメインのお客さんが求めるものと、自分が開発したいゲームのギャップに悩んだ時期が長かったです。

見てわかるとおり、僕のような20代の男性、コアゲーマーがメインのゲームではないので、お客さんの目線に立って、大量のソーシャルゲー、ポチゲーを遊んでみるなど、取材に多くの時間を割きました。

自分で遊びたくない物は作りたくないし、独りよがりなものを作るわけにはいかない。趣味でゲームを作る分なら、「俺の好きなものを遊べ、イヤならやめろ」で良いんですが、仕事ではそうはいかないので、そういう意味でチャレンジングでおもしろかったです。

最終的に、カジュアルゲーマーにも受け入れられ、コアゲーマーも悩みながら遊べるという落としどころを見つけられたかなあと思います。

ゲーム開発とWeb開発

技術的な面で言うと、ゲーム開発におけるテストのあり方、という問題を深く考えさせられました。

Web開発ではテストのないプロダクトはクソ、みたいな世界観ですが、ゲームの場合は必ずしもそうなのかなあと悩ましいところが多かったです。

例えば、レベルデザインのような数値を細かく変更するヶ所など非常にテストが書きにくい部分が多いことが理由の一つとして挙げられます。また、見た目の変化やアニメーションなど、クライアント部分はとてもテストだけでは網羅できません。

また開発体制においても、ゲーム開発では如何に早く作っては壊し、おもしろくなるまで繰り返すというイテレーションが要求されることが多いため、最初から厚くテストを書きすぎてしまうと、かえってそのスピード感を削いでしまう恐れを感じます。

ゲーム開発はWeb開発とは全く違ったプロジェクトの進め方の形があると思うので、今後も考えていきたいテーマの一つです。

ゲーム開発ノウハウを知りたい方は

普段からゲームを作っているので、ゲーム開発の本によく目を通しているのですが、チーム内でも読まれていたオススメの本を何冊か紹介。

「タッチパネル」のゲームデザイン ―アプリやゲームをおもしろくするテクニック

「タッチパネル」のゲームデザイン ―アプリやゲームをおもしろくするテクニック

アジャイルなゲーム開発 スクラムによる柔軟なプロジェクト管理

アジャイルなゲーム開発 スクラムによる柔軟なプロジェクト管理

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

「レベルアップ」のゲームデザイン ―実戦で使えるゲーム作りのテクニック

アフィが貼りたいだけ。

クックパッドという会社について想うこと

クックパッドは技術力の会社というイメージが大きいですが、それは一面的であり、究極的にはお客さんに最高のサービスを提供することに全力を注いでいる会社です。

とはいえ、技術面を疎かにしているかというと真逆であり、最高のサービスを作るために最高の技術力を投資しているという感じです。 コードは書けて当たり前、その上で如何に品質を良くするか、お客さんを満足させるか、という多くの会社を越える高い次元でモノづくりをできる会社はそこまで多くないので、良い経験ができました。

どのサービスでもお客さんを第一に考えるというのは当たり前のことのように感じますが、クックパッド社は特にその傾向を大きく感じました。 これは、サービスの利用者と我々開発者が離れた位置にいるサービスだからこそ、よりユーザーの目を意識してるのではないかと思います。

そのため、エンジニアにも技術力だけではなく、もっと上流の段階から包括的に自分のサービスを見つめる視点が要求されます。 クックパッドという会社は、技術力は元より、それ以上に高い人間性、社会性を持つエンジニアを求めてるのだなあと強く実感しました。

まとめ

f:id:gigi-net:20130927233413j:plain

素晴らしい体験だったので皆様参加しましょう。

このようにたまにインターン募集の記事が出ると思うので、定期的にチェックしてみると良いと思います。

クックパッド短期サマーインターン2013開催のお知らせ | クックパッド開発者ブログ

オマケ:#naoya_sushi

Twitter伊藤直也さん(id:naoya)にフォローしていただき、あまりにも光栄だったので呟いたら

という感じで寿司会が実現しました。感激。

ごちそうさまでした。

Thanks to WPZOOM about nice icon sets.