熱海でハッカソンを開催した意味とは?

初めまして。gumiでエンジニアをしています中野と申します。
そろそろ8月も終わり、9月がやってきますね。時間の経過は本当にあっと言う間です。


さて、去る8月3日(土)に有志を募り、熱海でハッカソンを開催してきました。
今回は、その時の様子と感想を書かせて頂こうと思います。
あと、少しネタになるのですが、「ビール駆動開発」をやってみましたので、そちらの感想も書いてみたいと思います。


ハッカソンとは?
ハッカソンという言葉は良く耳にされる方も多いのではないでしょうか。
簡単に説明しますと、ハッキング+マラソンの造語で、決まった期間でひとつのプロダクトを作るイベントです。


今回はそのハッカソンを熱海で開催してきました。


事の始まりは非常にシンプルで、以下の理由です。
・私自身ハッカソンに参加した経験がなかったので、開催しようと思った。
・いつもとは違う環境で開発してみたいと思った。
・熱海に行ったことがなかったので、行ってみたかった。


なんというとんでもない理由でしょう。(笑)


以上の理由を踏まえた上で、同じチームのエンジニアに声を掛けた所、「おもしろそうですね」と良い返事が貰え、どうせなら社内のエンジニアに呼び掛けてみてはどうかという話になり、社内のエンジニア達に呼びかけてみました。
最初はかなり食いつきがよかったのですが、月初という事もあり、最終的に6名の参加となりました。


さて、今回お世話になった旅館は「芳泉閣」さんです。
こちらの旅館は研修施設としても利用できるようで、ホワイトボード、wifi、プロジェクター、会議室などハッカソンで使えるものが完備されていました。
また、宿泊は一組までと決めているそうで、宿泊した際は、お客さんは私達だけでした。「その方が気楽でしょ?」と旅館の方がおっしゃっていました。


さて、当日のスケジュールはこの様になりました。


8/3
12:00 チェックイン
12:30 ハッカソン開始!
18:00 晩ご飯


8/4
8:00 朝ご飯
10:00 成果発表!
11:00 チェックアウト


ハッカソンではテーマがあったりするのですが、今回は初めての開催ということもありましたので、テーマは設けず、各々がやりたい事をやることにしました。
そしてハッカソンでやることをホワイトボードに書いて発表。


中にはcocos2d-xをやる方もいたり、scalaでwebサーバを作る方も。
また弊社ではバージョン管理にGitHubを使用しておりますので、GitHubに関するものを作る方もいたり、
webサービスをゴリゴリ作る目標を立てた方もいました。
ちなみに私はnginxとnode.jsでチャットを作る目標を立てました。


ビール駆動開発
冒頭で紹介しましたビール駆動開発ですが、こちらは弊社で開催しましたgumi study#14でLTをされた千葉さんのお話がきっかけです。
こちらのスライドはCreators MeetUpというイベントで千葉さんがお話されたのですが、拝聴させて頂いたときに私は開発合宿を考えていたので、これはやってみたいと思いました。


やってみた感想は以下の通りです。
・テンションの維持には多いに役立つ。
・途中眠気が襲いかかってくる。(笑)


チームでハッカソンする場合は、テンションアップするので良いのではないでしょうか。
千葉さんありがとうございます。


ハッカソンの感想
最終日にハッカソンしたものを発表するのですが、皆さんすばらしい集中力で、目標を達成させていました。
※私もなんとか達成しました。


全体的な感想としては以下の通りです。
1.参加者はやる気がある人達なので自分もやらなきゃ!という気持ちになり、やる気が出る。
2.同じ社員の方ばかりなので、気軽に質問ができる。
3.成果発表の際にその成果を振り返るので、どれだけ出来たかわかる。次の課題も見える。
4.他チームのエンジニアと関わる機会があまり無かったので、関わる機会が出来る。
5.普段とは違う環境で開発できるので、気分がリフレッシュされる。


5に関しては、わざわざ遠方へ行く必要はないかなと当初考えましたが、旅館が少し山の方という事もあり、自然に囲まれた中で開発ができ、気分転換ができました。
遠方へ足を運ぶのも悪くないですね。熱海で開催して良かったと思いました。


また、お気づきの方もいらっしゃるかと思いますが、ハッカソンというより勉強合宿といった方が正しいかと思います。
次はテーマを決め、デザイナーやフロントエンジニアを交えて開催してみたいと思います。


gumiでは他にランニング部や登山部などがあり、積極的に活動しております。
これを機にハッカソン部など出来るかもしれません。(笑)


以上、熱海ハッカソンの感想でした。

gumiStudy#15を開催しました。

少し涼しい気候から急に真夏の日差しが強くなってきた7月22日(月)に、弊社大会議室にてgumiStudy#15を開催させていただきました!場の進行をさせていただいた技術教育担当の高柳です。当日は小雨の降り出す天候でしたが、40名近い方の参加、ありがとうございました。


 「今年自分がgumiで経験したフロントエンドの取り組み、仕組みについて事例として発表したいのですが、gumiStudyで時間をもらえませんか?」そんな相談を受けたのが、ちょうど次のgumiStudyのテーマについて考え始めていた6月初旬。そこからソーシャルゲームの開発としてはあまり聞かない「10名以上のUIエンジニアで協業」という開発をいかに乗り切ったかについて聞かされ、今回のgumiStudyのテーマを「UI」という切り口でいく事を決めました。gumiStudyは、SAPとしての「ゲームを世に出す」というのとは違う方法でエンジニアのアウトプットを世に出すためのチャネルという目的もあり、その意味でも今までアウトプットの場を持っていなかったメンバーがアウトプット意欲を持って接してくれたことがうれしく、即決で決めたのを覚えています。

 その後、打ち合わせを進める中でもう一つの講演をどうするかで悩みましたが、1つが技術寄りな内容になるので、もう一つはごりごりな技術でないものにしようという考えも出て、ユーザーエクスペリエンス(UX)にたどり着きました。そこでUXに詳しい人ということで以前から個人的に交流のあった株式会社セカンドファクトリーの佐々木さんにお願いし、快諾していただきました。



 さて、当日のレポートですが、1つ目の講演はそんな熱い想いのUIエンジニア3名による変則タッグマッチのような講演になりました。メインの原口が20分、2番手渡邉が10分、最後の岡田が5分(LT?)という時間配分。原口からは今回の講演へのモチベーションや、開発の概要から話し始めて、開発者の人数が増えてもフロントエンド部分がカオスにならない開発にするべく構造化に乗り出した物語を語ってくれました。そして、実際の課題に対しての構造化のポイントを事例ならではの具体的な内容で説明しました。

 渡邊はGruntを使った自動化についての実践内容を発表しました。gitのハッシュ値を比較して更新のあった画像を圧縮するタスクを自動化したあたりでは、多くの参加者がうなづいている様子が見て取れました。「フロントエンドエンジニアの母語は JS/CS」という名言や「Gruntは梃子である」という有名な言葉での比喩も飛び出し、つぶやきをにぎわせていました。Gruntを選択した理由にUIエンジニアが慣れ親しんだjsで記述できる。というのがあり、すっきりと納得しました。

 最後の岡田はライトニングトークス風のテンポの良いエッジの効いたスライドで、jsについて1ファイルにまとめるが、モジュールでの分割を行なう事でパフォーマンスを意識した実装ができる話などをしてくれました。

※スライドは公開用にシンプルにしてもらいましたので、当日のエッジは効いていません。(笑)



 休憩を挟んで株式会社セカンドファクトリーの佐々木さんに「UXとUXDのはなし」というタイトルで講演していただきました。佐々木さんの考えているUXとUXDについて、図解を交えながら丁寧に話していただきました。参加者のイメージが想像しづらいので、UXについてあまり聞いた事が無い人にも伝わるようにとスライドを作っていただいたようです。会場でも恐らく始めて話に触れた人ともいたと思いますが、おもしろさは伝わったと思います。参加者の方も「学び」モード全快で、手持ちのPCや手書きのノートにメモを取っていたのが印象的でした。

スライドの表紙画像:スライド本体は:http://bit.ly/1bYCIAE(※Silverlightのインストールが必要になります。)


 
 最後はライトニングトークス。1つ目は公募からのkabochhaさんのGrantを使ったフロントエンドのツールという内容で話していただき、実際の操作もデモンストレーションを入れていただいたので、参加者の方から「それはやってみたかったことでした」という感想が懇親会で出ていたので、参加者に響いた内容でした。※スライドについては近日公開というお話でしたので、こちらも#gumiStudyをチェックしてみてください。
 2つ目のライトニングトークスは、弊社のメンバーでしたが、今度はUIデザイナーの2人がSassについての小ネタを披露してくれました。エンジニアだけでなく、デザイナーもアウトプットを意識してくれているのがうれしかったですし、終わった後に「楽しかったです!」と言ってもらえたのもうれしかったです。単に二人で交代するというものではなく、掛け合いを入れたり、ネタを入れたりしていて楽しいライトニングデュオでした。



 懇親会では静かならがらも、参加者から得たものについての共有などがあり、しっかりと学びのある場になっていたのだと確信できた時間でした。ちなみに進行していた私に「どちらの芸人さんですか?」と質問をいただいたので、お答えしておきますと、普通にgumiの社員です。(笑)

 次回の東京でのgumiStudyは10月を予定していますが、今回ご講演いただいた佐々木さん、ライトニングトークスをしていただいたkabochhaさん、そして参加いただいたみなさん、ありがとうございました。gumiでは、交流とエンジニアの発信力育成の一環としてgumiStudyを続けて行きますので、よろしくお願いします。
当日のつぶやきまとめはこちら:http://togetter.com/li/537689

レポート:高柳

gumiWestStudy #1 〜 Cocos2d-xとUnity

5/16日にUnityとCocos2d-xについて、社外から識者をお招きし勉強会「gumiWestStudy #1」を開催しました!
今回はネイティブアプリを作る技術として注目されている「Cocos2d-x」と「Unity」について。
ネイティブアプリを作る場合、通常iOS(Objective-C)とAndroid(Java)で別々に開発する必要があるのですが、Cocos2d-xやUnityというツールを使うと1つ作るだけでiOSAndroid両方でアプリを配信できるという大変便利な技術です。
以下、発表頂いた内容のご紹介です。

「cocos2d-x でのダウンロードコンテンツ(DLC)の実装と運用について」

まずは株式会社TKS2の清水友晶さんが、アプリ配布後にサーバ側の画像やテキストを追加・更新することでアプリ更新せずにコンテンツの更新が行える仕組みについてお話頂きました。

DLCの実現方法として「CCHttpRequestが非同期通信できて便利」「curlは習得がやや難しいがプログレスバーの実装など柔軟な表現が可能」など、アプリ開発経験に裏付けされた現場で役立つ大変興味深い内容でした。
特に以下の点が印象的でした。
DLCで取得後は永続データとして保持すると便利に使える
DLCで取得後に使い捨てる場合はCCImageを使うのも手
・マルチレゾリューションの場合は端末の解像度毎に合わせた画像を別々に用意
・画像+データを配信する場合はzipにまとめる
(他にも非常に興味深いお話を聞けたのですが、公開できない内容を含んでおりました。清水さん開催の勉強会に参加されると、さらに深いお話が聞けるかもしれません。)

「ASSET BUNDLE 含む UNITY3D の基礎知識」

続いて九州大学 花田恒一さんが、画像やデータを後からダウンロードできるAssetBundleの説明とUnityのメモリ管理方法についてお話頂きました。

AssetBundleの扱いとして「LoadFromCacheOrDownload関数を使うのがベスト」「AssetBundleは不要になったらすぐ破棄」など、メモリ管理の仕組みを理解した上で扱うことが重要であるという技術的に高度な内容となりました。
特に以下の点が印象的でした。
・ClassよりStructで省メモリ化
・OnGUIはかなりメモリを消費するので避ける
・AssetBundleは並列ではなく一つずつ読み込んだ方が省メモリ
スペシャルフォルダ(Standard Assetsなど)を跨いでGetComponent()で参照する場合、フォルダ毎のコンパイル順の関係で参照できない事がある
・AssetBundleを扱う上での選択肢は3つ
1. LoadFromCacheOrDownload、省メモリ、ストレージは圧迫
2. CreateFromFile、圧縮非対応、省メモリ、ストレージは圧迫
3. CreateFromMemory、メモリが必要、ストレージは節約

コミュニティ紹介 LT

ライトニングトークとしてHatchUpの八反田智和さんが cocos2d-x.jp をご紹介頂きました。
またUnity Fukuoka と cocos2d Fukuoka のコミュニティから金子さん、小柳さんが以下の5つのコミュニティをご紹介頂きました。
・Cocos2d fukuoka 次回は6/8 http://atnd.org/events/39347
・Unity Fukuoka
・八時間耐久制作委員会(ハチタイ)
IGDA Fukuoka http://igda-fukuoka.org/jp/index.html
・The Global Game Jam 次回は2014/1/25 http://globalgamejam.org

八反田さん発表資料
https://docs.google.com/file/d/0By8I-4mQ8YAXSW04R29JdXNSek0/edit?pli=1

小柳さん発表資料

勉強会を終えて

貴重なお話を頂いた清水友晶さんと花田恒一さん、ありがとうございました!
八反田智和さん、金子さん、小柳さんのコミュニティ紹介も大変興味深く、gumi Westでこのような勉強会を開催できたことを嬉しく思います。
特に今回の勉強会はコミュニティの方々のご協力が非常に大きく感じましたので、この場を借りてお礼申し上げます。

ちなみに、昨年末に gumi 福岡オフィスから gumi West に分社化した初めての勉強会となりました。
これからもIT技術を通じて福岡を盛り上げていきたいと思っております。

gumiStudy #14 を開催しました!

春も終わりを告げるGW直前企画、4月24日(水)に gumiStudy #14 を開催させていただきました。第一部はgumiの海外開発事例を、第二部は海外開発でも使ったNode.jsの検証結果をお送りしつつ、さらに公募によるライトニングトークス+懇親会付きという2時間半で行われました。


第一部は『やっぱり大変!?海外ゲーム開発最前線』と題して、gumiの執行役員でありトップエンジニアでもある田村から「やっぱり大変」だった話(笑)を。海外のマーケットやトレンド、技術について分析を入れながら説明し、さらには現地の食べ物レポートも織り交ぜつつ、現場でのリアルな苦労話とそこから導きだされた改善や対応のポイントを伝えていました。講演後は質問が殺到しそうだったので、質問タイムは懇親会に持ち越しに…。


第二部は『もしErlang使いがNode.jsを製品開発に使ったら』というテーマで、当社スペシャリストの幾田から、最新バージョンのNode.jsを検証して得られた見解と考察を述べました。結論は…(笑)。参加者の中には初めてNode.jsと向き合う方も多かったようで、判断材料の一つにもなったようです。



「参加者のみなさん真剣に聴いてます」 「会場は大会議室を利用しました」



本編後にはお楽しみのライトニングトークス(各5分)を開催。

@rechiba3さん『現地でおふしょあ!ベトナム赴任レポート』
rechiba3さんのライトニングトークは会場の心をがっちり掴む楽しいスライドと話題で、本編をしのぐ会場との一体感はさすがでした。

  ※資料公開:http://www.slideshare.net/re_3_19/ss-19897828

@ymotongpooさん『Go+ソーシャルゲーム
ymotongpooさんは一転して本編のガチな技術話に呼応するかのような、「Go」に技術者として挑んだ、5分だけど大作な内容でした。このLTでGoを触らずにはいられなくなった人もいたことでしょう。


「銅鑼はスマホ音源というLT風景」          「gumiでグミを配る…」


続いて同会場でささやかな懇親会をさせていただきましたが、来場されたほとんどの方がそのまま参加されるといううれしい状況。質問や話題もどんどん出てきて、いい感じで話せる場ができていたようです。ある参加者の方から「アットホームな雰囲気でしたが、常連さんが多いのですか?」と聴かれましたが、LTトーカーや参加してくださった方々のおかげです。参加されたみなさんに感謝です。ありがとうございます!


福岡でも gumiWestStudy を開催しています。5月16日(木)にはテーマ「ネイティブアプリ」で開催予定ですので、お近くの方はぜひお立ち寄りください。
  詳細および、お申込みはこちらから → http://connpass.com/event/2362/


次回 gumiStudy #15 は7月を予定しています。これからもgumiStudyをよろしくお願いします。

レポート:高柳

GitHub Enterpriseのススメ

gumiではバージョン管理システムにGitを採用していますが、
その中でもGitHub Enterpriseを推進しています。

GitHubは皆さんご存じかと思いますが、
GitHub Enterpriseは社内にGitHubを構築できるという画期的なサービスです。

多くの人がGitを使ったことがあるとは思いますが、
GitHubって便利ですよね。
Gitがこれほど普及した理由の一つとしてGitHubというツールがあったから、
というのは非常に大きいと思っています。

ここで疑問があると思います。
「何故GitHubのprivateリポジトリを使わないのか?」


答えの一つとして、
「情報共有の範囲を社内に区切ることによってより密度の高い情報共有をする」
という事があります。


人によってはprivateじゃなく、
publicにしてオープンソース化し、
外に公開すれば良いじゃない、
そうすれば優れたエンジニアがどんどん更新してくれるよ、
って言うかもしれません。


でも、違います。
自分たちの持つナレッジやスキルに最適化され、
かつ、そこでのみ輝きを持つコードというものも確かにあるのです。
クローズなソーシャルコーディングでこそ生きるコードもあるのです。
勿論、クローズな意味合いを持つコメントもありますし、
モジュールや、APIもあるのです。


じゃ、
「何故GitHubBusiness Plansを使わないのか?」


これは、GitHub Enterpriseがセキュアコントロール可能であるということもあります。
例えばBusiness Plansは外部のGitHubを用いるため、会社によっては社内のソースコードを外部に置くなんてとんでもない、という話があるかもしれません。
それなら、GitHub Enterpriseで内部に置けばいいのです。
それに加え、LDAPのようなアカウント管理まで揃っているので準備は万全です。(追記)


また、GitHubが落ちていたりメンテナンスしていてもそこに依存せず、
自分たちはコードを気兼ねなくpush/pullすることができますし、
GitHubというツールを使うことは阻害されません。
加えて、バックアップも自由に取ることができます。


もう一つの選択肢として、Gitoriousを挙げる人もいるでしょう。
オープンソースGitHubクローンです。


確かにGitHub Enterpriseは有料です。カスタマイズもできません。
しかし、GitoriousはGitoriousで運用コストが高くなりがちです。
バージョンアップであるとか、カスタマイズのコストは自分たちで支払わなければなりません。


そういう意味で、GitHub Enterpriseは完全にソフトウェアとして提供されている、
という強みがあります。
機能の向上や、Bugfixなど非常に便利に行えます。
実行イメージで提供されるため、コードをいじったりする必要性はありません。


そして、何より、「自分たちだけのGitHub」って格好良くありませんか?
gumiならではのGitHubを育てるって、凄いことなんです。

gumiオリジナルのGitHub、あなたも一緒に育ててみませんか?

盛り上がるキーボード談義

皆さんはキーボード何を使っていますか?
エディタ論争と同じくキーボード論争はよく巻き起こる永遠の議題でもありますが、
gumiではやはりHHKBが人気です。

Professional2の愛用者もいれば、Professional2 Type-Sの静音が良いだの、
タイプ音にはある程度の音が必要だの、
様々な拘りが見て取れます。
はたまた英語配列だ、無刻印だ、みたいな論争も巻き起こります。

しかし、RealForceも負けておらず、
逆にMacBook Airのキーボードそのままが良いという話だったり、
MajestouchやThinkPad USB トラックポイントキーボードだったりと千差万別です。

キーボードはエンジニアの思考と直結し、美しいコードを生み出す源泉でもあります。
使い込んだ道具はいつでも良きパートナーとなってくれます。
だからこそ、拘りの逸品とも言える訳です。

あなたはどんなキーボードを使っていますか?

MySQL Casual Talks @gumi福岡

MySQL Casual Talks というイベントをご存知でしょうか。
「もっと深く浅く、広く狭くMySQLを使っていこう」と思っている趣旨の人との
つながりを作っていくための緩めのコミュニティです。


福岡でも、MySQL Casual Talksを開催したいよねという Sprint_MT さんの呼びかけで
"MySQL Casual Talks @gumi福岡" が6/27に開催されました。

MySQL Casual Talks @gumi福岡を主催 & Talkしてきました
http://spring-mt.tumblr.com/post/26006714783/mysql-casual-talks-gumi-talk


大規模Webサービスにはもはや定番ともいえるMySQL
gumiでも、もちろん多くのサービスで使用しています。
「カジュアル」と言いながらも、性能面やバックアップなど濃い内容の話が多く
私たちも大変勉強させて頂きました。


中でも、MySQL5.6系やMySQL Clusterの話は本当に良い内容でした。
MySQL ClusterをKVSとして使うこともできるなど、NoSQLの台頭を踏まえつつ
それらを取り込み、MySQLが更に進化していることが実感できました。


gumi福岡では、今後も社外のコミュニティ活動を通じて
福岡のITエンジニアに貢献できればと考えております。