mixi Engineers' Blog

株式会社ミクシィで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Mixi Engineers Blog

ミクシィスマホアプリ研修をオープンに開催します

はじめまして、mixiのiPhoneアプリ開発などをやっています武田です。

最近サントラ欲しさにスマブラを買いました。

 

さて、1年半ほど前に社内でのスマホアプリ研修を行い、その資料を公開したり電子書籍化などを行いました。

ただ資料も古くなっている部分などもあり、その更新も兼ねて第2回の勉強会を行うことになり、どうせなのでオープンな形で開催しようという運びになりましたのでお知らせいたします。

続きを読む

VimConf 2014 と Vim と mixi

こんにちは。エンジニア兼 Vimmer、Kuniwak です。11月08日(土)、Vim の国際的な会議「VimConf 2014」が弊社でおこなわれました。

VimConf では、Vim の機能の詳細な解説や、自作プラグインの紹介、Vim の未来など、多くの Vim に関するディープな知識が発表されています。また、登壇者陣も非常に豪華で、Vim のコントリビュータから、Github で 1,500 もの☆がつく有名プラグインの作者など、Vim をとりまくさまざまな開発者が登壇しています。

発表タイトル一覧は、Timetable - VimConf 2014 をご覧ください。

なお、ミクシィも Vim に支えられている一企業として、Vim との関係についてお話ししました。

それぞれの発表の様子

続きを読む

mixi SNSを攻略しよう! Scrap Challenge 2014年度シーズンのご案内

Aphex Twinの13年ぶりの新譜 'Syro'、捨て曲なしで素晴らしいですね。もりもとです。

株式会社ミクシィで毎年開催している、学生向けのWebセキュリティ実体験イベント 'Scrap Challenge' が、2011年に始めてから かれこれ4年目になりました。
もちろん今年度もやってますよ! ということで、これまでの道のりと、改めての内容のご紹介です。

f:id:mixi_engineers:20141028142113j:plain f:id:mixi_engineers:20141028141948j:plain

自社サービスを攻撃させるイベントを思いつく

どこの会社でも、優れた能力をお持ちの方と知り合いたいと思うのは同じです。
また、どうせなら面白いことをやろうと考えるのも大事なことだと思います。ある課題に対する解決策がいろいろあるとき、「可能性」「重要性」「簡単さ」といった軸で切り分けて、それぞれの判断をもとに総合的にどうするか決めるというやり方*1がありますが、いずれも甲乙つけがたいぞ、といったケースでは、「やって面白いかどうか」も加味すべき評価軸だと考えます。課題はひとが成すものですし、ひとに取って面白さは大事なこと。課題自体がひとの交わりであれば、なおさらです。

ミクシィの仲間を採用していくうえで、優れたよい人たちとご縁を作っていくにはどうしたらいいか。エンジニア領域において、技術力や課題解決能力に実技面でも優れたみなさんとどうやって知り合っていくか。
それにはプログラム・コンテストなどいろんな方法がありますが、他にはないユニークなものをやってみたい。そこから2011年の夏頃に思いついたのが、「わざと脆弱性を作り込んだSNS mixiのクローンをみんなで攻撃してもらう」という、Scrap Challengeという技術イベントです。
一種のCTF風味もあると思います。企画立案中は「風雲! たけし城」と呼んでいました。

f:id:mixi_engineers:20141028141953j:plain

思いついたはよいのですが、社名をそのまま背負っている、ユーザのみなさんのプライバシーもお預かりしているサービスの、たとえクローンとはいえ、サイトを参加者に疑似攻撃してもらう技術イベントというものが社内で認められるか。ひょっとしたら微妙かな、怒るひとがいるかもなぁ…… とも思いつつ提案をまわしてみましたが、拍子抜けするほどに「それ、面白いね!」という反応が得られ、じゃあ各種機能のどのへんにどう穴をあけていこうか、という検討に進むことができました。このへんは、課題を面白い方法で解決していこうじゃないかという社風のよいところ、風通しのすっきりしたところだと思います。

どういう穴を開けていこうか、たとえばport 22にsshdを開けておいて、でもそれはhoneypotだよ、あるいはパケットレベルでいじってもらい…… と企画は膨らみましたが、ある程度いろんなスキルの方にWebセキュリティの実技を体験していただきたいという思いもあったので、当初はいわゆるXSS的な課題にしぼっています。実技を通した競い合いでもありますが、それ以上に、普段はできない体験をしていただき、学んでもいただければうれしいと感じているからです。参加者のみなさんに「面白かった」という体験を持ち帰っていただくのが一番大事なことです。

Scrap Challengeに出てくる課題たち

イベントは、弊社で勉強会やイベントをよく開催している「コラボルーム」にお昼まえに集合いただき、まずはWebセキュリティ概論からご説明します。
一般的なお話だけでなく、mixiというSNSが長年体験してきた、いろんなissueも含んで、実例をあげて説明していきます。
そのあとはみなさんの環境設定も兼ねたチュートリアル。
これから攻略する「偽mixi」にログインしていただき、弊社が設けた「やられ役」のmixiユーザたちとマイミクになっていただいたりします。
「やられ役」は、当日アテンドするミクシィ社員が務めます。挑戦者から送られてきたmixiメッセージを、全部言われたとおりに開いてクリックするなど…… この係の呼び名は「鴨ネギ」です。

f:id:mixi_engineers:20141028141955j:plain

その後、簡単な実例を、チューターと共に解いてみて、この手のアタックがはじめての方への手ほどきや、ウォーミングアップも兼ねます。
アイスブレイクを兼ねた昼食もはさんで、そのあとがいよいよ実技です。

f:id:mixi_engineers:20141028142000j:plain f:id:mixi_engineers:20141028142002j:plain

実技の時間は2時間半設けています。攻略すべき課題がみなさんに示され、偽mixiに挑んでいただきます。時間を追って、だんだんヒントが出てきたりしますが、そのかわり課題攻略成功時に得られるポイントは減っていったりします。ゲームバランスってやつですね。

f:id:mixi_engineers:20141028142003j:plain f:id:mixi_engineers:20141028142007j:plain

f:id:mixi_engineers:20141028142008j:plain

具体的な内容の説明は…… ここでは控えさせていただきます。ご興味お持ちのみなさんは、ぜひエントリしてお試しください!

かれこれ運営3年め

Scrap Challengeを最初に開催したのは2011年の冬です。


当時は社内の開発用サーバの一部を専用に割り当てて偽mixiを稼働させましたが、競技開始直後に思いのほか負荷が高くなり、その場で速攻で台数を増やしたりなど…… 想定と違うところで攻略されてしまったりしました。

それから、いったんAWSにプラットフォームを移したり、社内で開発運用している仮想サーバ運用プラットフォーム 'Gizmo' で動かしてみたり (くわしくは「OpenStackとLXCを導入した話 - mixi Engineers' Blog 」をご覧ください)、運用側もさまざまなトライを繰り返しています。

出題面でも、むやみに難しくせず、とはいえ攻略の楽しみも確保したいと、言うなればゲームバランスも大事なところです。
先日まで、全問攻略完了チームはいませんでした。あと20秒あれば全問正解だったのに…… というチームがこれまでのベストだったのですが、ついに2014/8/23の回で、全問クリアのチームが出てしまいました。微妙にくやしい……(笑)

とはいえ、通算8回も開催してきた結果、いままで157名もの学生のみなさんに出場いただきました。その中には、Scrap Challengeを通してご縁ができて、いまは同じくミクシィで活躍されている若手エンジニアも10名近くいます。加えて、インターンとして実務体験のご縁ができたみなさんも。
気がつくと、Scrap Challengeで知り合った学生さんだったみなさんが、いまやミクシィの若手エンジニアとして、Scrap Challengeの司会や解説、あるいは鴨ネギをやってくれたりしています。企画の言い出しっぺとしては嬉しいかぎりです。

Scrap ChallengeはSNS mixiを題材としていますが、ご縁となって入社されたみなさんは、モンスターストライクであったり、あるいはDeployGateであったり、もちろんSNS mixi、あるいは新規事業と、Webアプリケーションやネイティブアプリ、ミドルウェアといったレイヤにかかわらず、優れたエンジニアとして活躍していただいています。

何かしらWebやネットワークに関わる立場であれば、Webセキュリティに関する実務的知識は素養として大事ですし、そういった知識をイジワルな課題に対してあれこれ行使する地頭と突破力は、どんなエンジニアリング領域にも通底する能力だと思います。

f:id:mixi_engineers:20141028142011j:plain f:id:mixi_engineers:20141028142014j:plain

このように、他では中々できない技術体験を一緒に行うと、学生さん側も、社員エンジニア側も、体験共有を通して仲良くなれます。

技術解説の中にはオフレコなトピックもありますし、その後の懇親会でも、フードや飲み物と一緒に、楽しく濃ゆい語らい(S式な話とか、マニアックなコンパイラの話とか……)や、ミクシィのエンジニアのワークスタイルや考え方など、エンジニア志望のみなさんには楽しい時間だと思います。

f:id:mixi_engineers:20141028142016j:plain

ともあれ、Scrap Challengeのねらいは「おもしろかった! と思ってもらうこと」です。
せっかく足を運んでいただくリアルイベントなのですから、他ではできないユニークな体験知見を過ごしていただくこと。これが大事です。
よき採用につなげたい思いももちろんありますが、エントリいただくみなさんが新卒採用年度にマッチするかどうかは、それほどこだわっていません。

f:id:mixi_engineers:20141028142018j:plain

今年度(2014)は、すでに夏休み中の2014.8.23に一回開催し、次の開催は2014.11.16(日)です。2014.11.5までエントリ募集中です。募集数によっては、2015.1.17にも続けて開催の予定はあります。11月がゼミなどで忙しい方は、ぜひ1月を楽しみにしていてください。

当日の様子は、みなさんにどんどんtweetしていただくのも歓迎しています。ネタバレはダメですが…… 我々もその模様を毎回togetterしたりしています。#mixi_scrapで検索していただければ、いままでの様子がわかると思います。

ほほう、と思った方は、ぜひ見てみてください。 

そして、いつか将来のScrap Challengeを、ともにネタ出ししたり開催したり、新たな挑戦者の学生さんと語らったりする側に、一緒に立てれば嬉しいです。

f:id:mixi_engineers:20141028142020j:plain

*1:Potential + Importance + Ease = Scoreで考える、PIESフレームワークってやつですね

OpenStackとLXCを導入した話

こんにちは、運用部 アプリ運用グループの清水です。Golang鋭意勉強中です。

今回は、SNS「mixi」に限った話ではなく、ミクシィ社全体として利用している仮想環境について紹介したいと思います。パブリッククラウドも一部のサービスで利用していますが、今回は、自社で運用している仮想環境にフォーカスして書いてみようと思います。

今まで利用してきた仮想環境

今まで利用してきた仮想環境というと、手作業で構築したKVM(Kernel-based Virtual Machine)環境が中心でした。手作業といってもある程度手軽に構築できるように、シェルスクリプトとCobblerでVMを構築できるようになっています。構築の流れは以下のとおりです。

  • CobblerにVMのIPやホスト名などをスクリプトで登録する。
  • KVMのホスト上でスクリプトを実行(koanコマンドでCobblerと連携してVMをセットアップ)

VMの数が少ないうちは、この方法でも問題は大してありませんが、VMが増えてきたり用途が多様化してくると、VMの管理や物理障害時の対応が非常に面倒になるという課題を抱えてきました。

続きを読む

Photo Hack Day Japan 結果発表 その1

ミクシィの七尾です。すでに1週間ほど経ってしまいましたが、去る2/22-2/23に米国のAviary("エイヴィアリー"と読みます)と共同でPhoto Hack Day Japanというハッカソンを行いました。改めて参加者のみなさまと以下のスポンサー様に感謝させて頂きます。

当日は全部で23組の作品発表があり、審査では総合1位から3位までと特別賞が2組、各スポンサー様からAPI賞が選出されました。ちゃっかり審査員としても参加させて頂きましたので、早速受賞作品の紹介をしたいと思います。

1位 Back to the Future (賞金30万円)

メンバー: Theeraphol Wattanavekin, Rapee Suveeranont, Yoonjo Shin, Thiti Luang

利用API: Amazon / gettyimages / Leap Motion

URL: http://timetravel.boonmeelab.com/

説明:
Back to the Futureは、時間を超えて旅することのできるcoolなwebアプリです。知りたいことを検索し、大切な記憶や情報を呼び起こすことができます。いいかえれば、時間にそって、人々や場所の移り変わりを見ることができるのです。歴史と進化を見ることができます。
このアプリを使って歴史から学ぶことによって、ただ楽しむだけでなく、より良い自分になることを手助けします。さらに、leap motionをこのアプリに応用することで、時間を散歩するような経験が得られます。ぜひやってみてください!

感想:
4分間という限られた時間でしたが、デモも素晴らしく、独自のコンセプトが光っていたいと思います。言葉で説明するのがちょっと難しいのですが、Leap Motionを利用して、両手を前後にくるくる回すと、入力したキーワードに関する情報のタイムラインが次々にスクロールしていくようなつくりで、Leap Motionを用いたジェスチャーとタイムラインを捲る動きが見事にマッチした作品でした。
gettiimage賞とLeap Motion賞も同時受賞となりました。現在はtimetravelと改名し、Air Space(Leap Motionを利用したアプリのポータルサイト)で公開されています。

2位 Before The Filter(賞金20万円)

メンバー:Benjamin Watanabe, Antony Tran

利用API: Aviary

URL: https://play.google.com/store/apps/details?id=com.antonyt.beforethefilter

説明:
沢山の素晴らしい画像編集ツールを利用することができますが、多くのユーザーが優れた写真に何が必要なのかをわかっていません。これは、Filterをかける前にすばらしい写真に不可欠な要素をアーティストに教えてくれるNativeアプリ、"Before The Filter"(BTF)です。
BTFは、自撮りや食べ物のようなトピックを提供し、そこで必要な撮影テクニックを教えてくれます。さらに、グリッド or テンプレートが表示され、どう使うべきが説明してくれます。撮影を行うと、編集用のtipsを表示してくれます。編集前と編集後の写真を同時に共有することもできます。"フィルターをかける前"でも優れた写真を撮れることを誇り思ってください。

感想:
写真に関するハックと言えば、素敵なフィルターとか、顔検出とか、画像合成のようなテクニカルなものだろうなと勝手に思い込んでいましたが、このチームは写真の撮影テクニックに焦点を当てていた点がユニークでした。裏をかいたアイデアに脱帽です。またデモの時点で既にGoogle Playでリリース済みというのもサプライズでした。Aviary賞も受賞しています。

3位 VOCA Getty (賞金10万円)

メンバー: Atsushi Onoda, Hiroshi Kanamura, Shinichi Segawa, Yasushi Takemoto

利用API: gettyimages / imagga

説明:
VOCA gettyは写真をベースにした単語帳アプリです。 言語情報だけではなく、単語帳にイメージ情報を付与して、単語を覚えやすくしました。

操作の流れ

  1. 単語帳に登録したい言葉を入力します
  2. GettyimagesのSearchForImage APIでイメージ検索が行われます
  3. 検索結果に対して、imaggaのSmart Cropping APIを使って適切な写真を表示します
  4. 使いたいイメージを選択して、完了

このアプリは3つの価値を提供します。

  • ユーザーに対して、画像による効果的な英語学習方法
  • ゲッティーイメージの写真の新しい活用方法
  • ゲッティーイメージのイメージのタグの信頼性をアップ

感想:
外国語の学習においても、写真だから出来る事があるという事を教えてくれたアプリでした。会話で困ったときも、スマホの小さな文字でやりとりするより、写真でイメージがわかれば、確かにすぐに伝わります。会話の特にアメリカから出張中のみなさんには人気の作品でした。

特別賞

以下の2作品にはSendgrid様より特別賞として、Lomographyが贈られました。

Na・Gu・Ri・A・I

メンバー:Yabu Kiyohide, Yuya Matsuo

説明:
ペンは、剣より強し。 写真は、ペンより強し。 そして拳は、写真より強し。 メッセージングサービスで言い合いになるこの世の中、実は足りないのはダイレクトに殴り合うことではないだろうか? 殴り合ったらもちろんその後は仲直り。満身創痍になったお互いの写真をSNSにシェアし、拳を交えた事をたたえ合おう。

概要

  1. まず写真を撮ります。
  2. ゲームが始まります。LEAPセンサーの上でパンチをすると相手を殴ります。手のひらを開いて両手を前に突き出すとガードです。ガードの隙をねらってパンチをしてください。ちょっとした心理戦です。
  3. どちらかの体力が尽きたらゲーム終了です。お互いボコボコになった顔画像付きの合成写真が出来上がるので、Aviaryでかわいくデコレーションしてシェアしましょう。それでも気が済まなかったら直接殴りに行って下さい。

※スクリーンをムービーにしました。以下からご覧頂けます。
https://www.dropbox.com/s/h5g754i7rxt1sj7/Screenshot.mov

感想:
本当にこのチームが1番目で良かったなと思うような楽しいデモでその後のチームも楽しく拝見する事ができました。ゼンリン賞、Flash Photo賞も同時受賞です。

Smile Motion

(諸事情によりスクショ掲載不可)

メンバー:Akira Muramatsu

説明:
Smile Motion は簡単にストップモーションムービーをつくって、世界に笑顔をもたらすアプリです。AviarySDKで写真を加工したり、ShutterStockから写真をダウンロードできます。

感想:
バツグンにデモの内容がぶっ飛んでおりまして、なかなかコメントしずらいのですが、要は好きな写真と音楽を貼り合わせて楽しく簡単に動画が作れるアプリです。技術的に見ても丸1日でここまで作り込めたのはすごいと思いました。

次の記事ではスポンサー各社からのAPI Prizeの結果について発表しますので、いましばらくお待ちくださいませ。

「Photo Hack Day Japan」参加者受付開始のお知らせ

先日告知しました、Aviaryと共同で開催する「Photo Hack Day Japan」の参加応募を受付開始したのでこちらでも告知させていただきます。

多数のスポンサー企業様から協賛頂いたおかげで、今回のイベントは賞金総額60万円+α!しかもプレパーティーから開催期間中の食事まで、全て無償提供となっていますので、是非こちらから奮ってご参加ください!

概要

APIスポンサーから提供された最新の写真に関するAPIを使い、iPhone/Androidアプリを開発

(詳細につきましては公式サイトをご覧ください。)

賞金

最優秀賞:30万円

2等賞:20万円

3等賞:10万円

スポンサー賞(※):スポンサー各社からの賞品

※スポンサー賞はAPIスポンサーがそれぞれに賞を設定しており、各APIごとに、そのAPIを利用したアプリの中で最も優れていると審査されたチーム/個人にそのAPIを提供するスポンサー企業から賞品が贈られます

参加資格

エンジニア:ウェブ開発、iPhone、Androidアプリ開発などのいずれかの経験
UI/UXデザイナー:Illustrator・Photoshopの基本スキル

参加方法

こちらのpeatixのURLで受付しております
参加受付URL:http://photohackdayjapan.peatix.com/
定員:150名(先着順)
※申し込みは個人でもチームでも歓迎です。
※個人で申し込んで、プレパーティーでチームを組んで頂いても大丈夫です。

日程

2月21日(金)

19時〜22時 / Pre-Party

shutterstock様のご厚意により、イベント前夜祭を開催します。参加受付方法などはハッカソン参加者の方に別途ご連絡さしあげます。
もちろん参加無料ですので、ハッカソンに参加される方は是非ご参加ください。

2月22日(土)

09:00 / 開場〜 22:00 / 1日目終了

開場は9時で10時にはAPIデモなどの説明が始まりますので、10時にはご来場をお願いします。

23日(日)

09:00 / 開場〜12:00/ 成果物の提出 〜15:30 / 結果発表

12:00に成果物の提出がありますので、実質12:00までが開発に使える時間だと思ってください。

※22日は朝昼晩の3食、23日は朝昼の2食が無償提供になります!

会場

株式会社ミクシィ - 東京都渋谷区東1-2-20 渋谷ファーストタワー
(渋谷駅から歩いて10分弱くらいです)

協賛

多数の企業からスポンサー参加頂くことになりました。2014年2月7日時点での参加企業は以下の通りです(敬称略)

お問い合わせ先

本イベントに関する詳細は下記メールアドレスよりお問い合わせください。

株式会社ミクシィ
〒150-0011
東京都渋谷区東1-2-20
住友不動産渋谷ファーストタワー7F

phd5@mixi.co.jp

Copyright © mixi, Inc. All rights reserved.