mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

御社クラック志望です: Scrap Challenge卒業生9人に8つの質問

マイナーなエレポップ・ユニットには目がない、人事 & イノベーションセンター もりもとです。オランダの2人組Rupesh Cartelいいですねー。

ミクシィでは、2004年から開発運営しているSNS「mixi」に、わざと脆弱性を仕込んだクローンを立ち上げ、みなさんに穴を探してアタックしていただくという学生向け技術イベントScrap Challengeを定期的に開催しています。最初の開催は2011年。腕に自慢の、あるいは技術的好奇心にあふれた多くの皆さんにご参加いただき、チャレンジいただきました。

加えて、このイベントを通してミクシィにご興味いただき、結果として入社いただいた腕利きの新卒エンジニアのみなさんも9名います。

ひとつの振り返りとして、いわば「Scrap Challenge卒業生」のみなさんにお話をうかがってみました。

ミクシィでの仕事

: 皆さん今日は年末のお忙しいなかどうもありがとうございます。Scrap Challengeがご縁になって仲間になったみなさんに、まずは最初の質問として、「ミクシィでどんなお仕事をしてらっしゃるのか」概要を教えてください。

北原さん: 入社年度は13年(2013年)、新卒として入社しました。得意な開発分野はAndroidでのネイティブアプリ開発です。入社してまずは社内新規系Androidアプリの開発を行い、その後で「mixi」のサービスの改善に移りました。プロフィール機能の改善は、Web版、Android版、iOS版と、クロスプラットフォームで担当しています。他は社内のコードレビューにも関わりました。

へんてこさん: 2014年入社です。5月の配属からは、「mixi」のネイティブアプリ(主にiOS)の開発を行っていました。iOS 8が出る時期には、新機能であるShare Extentionなどの実装をしていました。また10月からはDeployGateに配属が変わり、今は主にサーバーサイド(Rails)の開発を行っています。

生島さん: 13年に新卒で入社しました。「mixi」事業において、データ分析基盤の整備と、実際の分析業務を行っています。

鈴木さん: 同じく13年に入社です。「mixi」のiOS版アプリの開発をやっています。

f:id:mixi_engineers:20141222163510j:plain

2014/11/16開催Scrap Challengeのチューターを務める鈴木さん

木下さん: 2013年入社です。「mixi」の、おもに期間限定コンテンツを手がけています。例えばタイアップ企画などですね。開発対象の種別としてはWebアプリケーションです。

: ここまでが、2011年12月4日のScrap Challenge第1回開催に参加いただいたみなさんですね。Scrap Challengeは、それほど採用色イベントは強く出さず、参加者のみなさんの想定入社年度にもこだわっていないので、参加後の入社年度もいろいろだったりします。
このときの第1回の様子はtogetterでもご覧いただけます。


當眞さん: 2014入社です。「mixi」のコミュニティを担当しています。WebアプリケーションとAndroid版アプリの両方をやっています。

f:id:mixi_engineers:20141222164320j:plain

2011/11/16 Scrap Challenge懇親会での當眞さん

 

国分さん: 「mixi」のトップページ、いわゆるhome.plの高速化を担当しています。同じく2014年入社です。

齋藤さん: 同じく2014年に新卒で入社です。入社前にはCS(Customer Satisfaction)でモンスターストライクの問い合わせに対応する際に使用される管理画面の改修や機能追加を行っていました。入社後は研修の後、グループ会社の株式会社Diverseで婚活支援サイトのyoubrideのサーバサイドの開発や同期と共に会員の分析や施策の提案、実施を行っていました。

齋藤さんはその後、秋に新進気鋭のベンチャーにジョインされ、2社をまたがって技術的活躍しています!

 

 

: 當眞さん、国分さん、齋藤さんは2013年1月19日のScrap Challenge第5回の参加者ですね。


2013年入社の鈴木さんもそうですが、當眞さんと国分さんには、その後Scrap Challengeの概論やチューターも担当いただいてます。参加する立場から、今度は開催する立場へと転身。

参加した理由

: では、Scrap Challengeというイベントはどうやってお知りになりました? 参加した理由もあればぜひ。

齋藤さん: Twitterで流れてきて知ったと思います。

生島さん: Twitterか就活サイトで知りました。

北原さん: 就活系サイトですね。

木下さん: ミクシィのエンジニアさんから「遊びに来たら?」と誘われて、会社見学中にイベントのことを教えてもらって知りました。

鈴木さん: 僕も、木下さんと一緒に会社見学したときに聞きました。

へんてこさん: 大学でも会社でも1年先輩にあたる鈴木さんが参加すると言っていたので知りました。

: おお、最初はメディア経由になりますけど、その後はいわゆる口コミやつながり経由にもなってきてるんですね。

當眞さん: 某社の説明会で会った就活生仲間に教わりました。

国分さん: 「リアル版:サンタのためのコードゴルフコンペ&クリパ」というイベントで話を聞いて知りました!

: リアルが充実……

北原さん: 参加した理由ですが、当時はまだネットワーク・セキュリティに関する知識がそんなにありませんでした。しかしセキュリティまわりを押さえておくのは非常に大事だと思っていました。かつ、「mixi」ってすごい規模と技術でできていると思ったので、そこが開催するセキュリティ関連イベントなら、知識に結びつく体験が得られると思ったのです。

斎藤さん: 以前からセキュリティには興味があったからです。昔セキュリティキャンプに参加したのが懐かしく、こういったイベントに改めて出たいと思いました。

鈴木さん: 面白そうだったからです(うなずき多数)。「mixi」を攻撃できるチャンスというのは面白いです。そのころ、同じくミクシィのBuild Challengeという、Androidネイティブアプリを開発するワークショップイベントにも参加したので、Build(創り上げ)してScrap(ぶっ壊す)するという組み合わせも面白いと思いました。

木下さん: 同じく面白そうだったからです。そのころは就活まであんまり考えてなかったですし。

: あんまり「就活就活」したイベントにはしたくなくて、その辺は少しゆるくやってきているので、そうおっしゃっていただけると嬉しいです。

當眞さん: 面白そうだったし、面接や会社説明会ではなくイベント参加なのに、沖縄からの交通費も助けてもらったのが良かったです。

: なるほど…… じゃあ、他にも勉強会とか、あるいは会社開催の就活系イベントには出てました?

北原さん: 就活のころはいろいろと。もちろん、技術勉強会系のイベントは結構当時は参加していました。新規事業のアイディア出しイベントにも出ていました。

斎藤さん: 逆求人形式のイベントや新規事業コンペなど様々なイベントに出ていました。ただ、こういったCTF形式のイベントの参加は初めてでした。

鈴木さん: 就活っていうより、勉強会の一環ですね。

木下さん: 鈴木さんといろんな勉強会に行ってました。各社のエンジニアと話せるのもチャンスです。

Scrap Challengeの難易度

: では、実際に参加して、偽「mixi」をアタックする課題にチャレンジしてみての難易度はいかがでしたか?

北原さん: チューターの方に丁寧に解説してもらったので、そこそこ、ある程度のところまでは分かりました。ただ一番難しい問題までは当時はできませんでした。つまり、ちょうどよかったわけですね(笑)

木下さん:北原さんと同じチームでしたが、苦戦しました!

當眞さん: CTFの参加体験はそんなになくて、参加前に徳丸本を流し読みしたぐらいですが、まあまあ解けたかも。Google Chromeのデベロッパー・ツールを覚えてから、解けはじめましたね。

斎藤さん: 悔しいところはたくさんありましたが、そのぶん自分にはちょうど良い難易度だったと思います。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

 

: では、面白かったところは?

北原さん: 本当に「mixi」そのもの、もちろん本番そのものではありませんが、が出てきて、すごくおもしろかったです。「攻撃していいよ」なんて言われたのも初めてでした。 あと、第1回の開催だったこともあって、偽「mixi」用のVMのリソースが足りなくて、会場でとっさにエンジニアのみなさんがサーバ増強していたのも懐かしいです。

: あー、でしたねー……

斎藤さん: 問題はもちろんですが、個人的にはチームで解決にあたるところが面白みでした。自分の至らなさとチームメイトのありがたさを感じました。嬉しい事に、その後チームメイトとは同期になりました。

木下さん: 確かにチームワークが面白かった。

當眞さん: 3人チームでチャレンジしたことです。課題の振り分けの難しさ、あるいは課題を一緒に取り組めたこと。その両方ともが面白さです。

いまの仕事とのつながり

: ありがとうございます。では、いまの仕事とのつながりも教えてください。いまのミクシィは、「mixi」だけではなく、モンスターストライクや各種新規事業も広くやっていますし、技術の対象もWebのフロントエンドやバックエンドだけでなく、スマートフォンのネイティブアプリも大きく手がけているわけですが……

斎藤さん: つながっていますね。セキュリティには継続して興味を持てて楽しめていますし、またチームでの行動には一層注意を払うようになり、成長した状態で現在の仕事に望めていると思います。

へんてこさん: いま主にやっているDeployGateのサーバーサイド開発では、セキュリティなどに気を付けています。


當眞さん: Webアプリケーションをやってますから、XSSなどしっかり対策をやらなければいけないわけで。Scrap Challengeが終わったあとに、振り返りで勉強したときが知識がいちばん身につきました。

木下さん: 思い返すと、それまでは危なかったですね…… あまりセキュリティ周りまで深く考えていませんでしたから。参加してみて、その後まじめに徳丸本を読んだのがセキュリティにしっかり気をつけるきっかけになりました。イメージがつきました。

生島さん: 解析系だと、直接はないですね。

国分さん: 同じく、いまは直接はないです。ただし、社内のJavaScript委員会*1でコードレビューをしていたときは、Scrap Challengeでいろいろな危なさを体感できていたので、実感を持って取り組めました。same originのヤバさとか。論理上の理解だけでなく、実際にアプリケーションとして問題をはらんだときの想像ができました。

f:id:mixi_engineers:20141222180954j:plain

2014/11/16 Scrap Challengeで概論解説を行う国分さん

北原さん: セキュリティそのものの業務というのは僕はありませんが、ネイティブアプリやWebアプリ問わず、セキュリティは気にすべき留意点ですし、普段からセキュリティ用語は頻繁に出てきます。一通りセキュリティ用語が分かっていて、はじめて技術コミュニケーションが成り立つところがある。いまやAndroidでもiOSでも、スタンドアローンのスマートフォン向けネイティブアプリでさえ内部でSQLiteを使う場合も多々あるので、SQL Injectionにも気をつけなければなりません。

今後の参加者にメッセージ

: みなさん有難うございます。では最後に、今後のScrap Challenge参加者にメッセージあれば一言どうぞ!

北原さん: 思いっきり攻撃してください!

へんてこさん: かなり難しいと思いますが、頑張って優勝してください。

斎藤さん: 類似のイベントに出たことが無ければ、直接就職には繋がらなくとも何かの切っ掛けとなり、その後良い影響を及ぼすと思うので、ぜひ参加して何か掴んで貰えたら嬉しいです。

鈴木さん: 学生のうちに、いろんなイベントに参加しておきましょう。ミクシィに限らず。時間あるうちがチャンスです。役に立ちますよ。

木下さん: いろんな会社を見ておくといいですよ。ミクシィには、そんなに技術ごりごりな会社っていうイメージはしていなかったけれど、見学とかScrap Challengeに参加してみて、見方が変わった。他の会社についても同じだと思います。

生島さん: 終わったら、ぜひ他の参加者と飲みに行ってください!

當眞さん: そうそう! 私の場合は飲みは後日だったけど、Scrap Challengeで知り合って、Twitterアカウントを交換して、行きました。こういうやりとりのために、自分の名刺も作っとくといいよ!

国分さん: うん、名刺はぜひ作っておくといいです。こういうイベントで知り合った仲間とは、変な話がいっぱいできて、楽しいよ!

: みなさん、どうもありがとうございました!


というわけで、今年度(2014)最後のScrap Challengeは2015/1/17開催です。受付締め切りは2015/1/7なので、おっ なるほど、と思ったかたはぜひエントリをどうぞ。

f:id:mixi_engineers:20141222165908p:plain

公式サイトはこちらです。

Scrap Challenge 2015 | 株式会社ミクシィ 学生向けエンジニアイベント

 

他にも、ハッシュタグ #mixi_scrap で検索すると過去のtogetterやいろんな情報が出てくると思います(ネタバレ以外は)。
ぜひ1月は遊びに来て、参加者ステッカーもゲットしてください!

f:id:mixi_engineers:20141222181350j:plain

 

 

*1:社内でJavaScript開発を行う上でのガイドラインを検討し、共有し、そのガイドラインを元にJSのコードレビューを実施することで、表示の高速化や保守性の向上、モダン化を目指すための社内エンジニアの委員会です