kyo_ago

GREEのUserAgent比率を公開します(2014/07)

このアイコン使い始めてそろそろ7年になります。ago(@kyo_ago)です。

今月もGREEを利用して頂いているクライアントのUA比率を公開します。

グラフは以下のデータを元に作成しています。

  • 本データはGREEのSNSサービスのブラウザに基くデータです。
  • 本データの内容の正確性・信頼性については保証いたしかねます。
  • データはスマートフォンに限ったブラウザ比率を元に集計しています。
tep

グリー新卒研修2014 ふりかえり

はじめまして、開発企画室の三木です。グリーではエンジニアの採用・教育・PR等、バックオフィス周りを色々と担当させて頂いています。

今回は、今年の4月に晴れてグリーに入社した新卒たちが技術研修を終了し各チームに旅立っていきましたので、本年度の技術研修を振り返り、どんな内容だったのかざっくりとご紹介したいと思います。

超今更感はありますが(もはや夏ですね・・・)、最後までお付き合いください。


はじめに

グリーでは新卒が入社すると(職種にかかわらず)約半月の導入研修を最初に受講します。ここでは社会人としてのマインドセット、ビジネススキルを身に付けるために、ビジネスマナー、チーム単位でのグループワーク課題などを一通り行います。

その後に技術研修がスタートするのですが、本年度は以下3つのラインナップで実施しました。

  • GREE BootCamp(エンジニア共通技術研修)
  • プログラミング基礎研修(企画職/総合職/クリエイターが対象)
  • インフラ技術研修(インフラ部門のエンジニアが対象)

本年度の技術研修は、従来の研修コンテンツの見直し、受講対象者の拡大・・・と大幅にバージョンアップしました。企画・指導側としてはなかなかに大変な研修となりました。

本記事では、ひとつずつご紹介していきたいと思います。


GREE BootCamp

GREE Bootcampは、グリーに入社した新卒/中途エンジニアには以下を狙いとして必ず受講してもらっている共通技術研修です。

  • グリーの開発スタイルや、使用しているフレームワークに慣れる事で、チームにスムーズに合流
  • グリーのエンジニアが行う「企画から実装まで」を小さなレベルで体験

本年度は、約20名の新卒エンジニアが受講しました。以下のカリキュラムを、約6週間かけて行います。なお、基本的にチーム制ではなく個人制です。

  1. 開発環境の構築
  2. 座学による開発知識の習得
  3. セキュリティ資料の輪読
  4. 各フレームワークのチュートリアル実施
  5. GREEプログラミング演習
  6. アプリケーション構築課題

写真 1 (1)


研修では、1週間を1Sprintとして設定して、最初に計画を立てる時間と最後に成果発表・KPTの時間を設けました。また、朝会や相互レビューで各自の課題や進捗を共有してもらうようにしました。

なお、指導は研修チームの専属コーチが2名で行ったのですが、ドキュメントを正しく書く習慣をつけるよう、作業記録や設計文書に対してコーチから毎日コメントを付けるようにしました。

座学については、社内の有識エンジニアによる講義と、資料・動画を閲覧する形式をおりまぜて実施しました。ラインナップは以下の通りです。

  • グリーのエンジニアマインド(by CTO)
  • エンジニアの基礎知識(git、ソフトウェアテスト、認証、プロファイリング)
  • グリー特有の開発知識(開発環境、基盤技術、サーバ、ネットワーク、アプリケーション、ログシステム)
  • 社内ガイドライン(リリース作業手順、障害対応、特許)

最後のアプリケーション構築課題では、3週間という期間で新卒が作りたいサービスを企画・実装します。ログイン認証がある、スマートフォン対応など最低限の要件を提示し、サーバ&クライアント(JavaScript または iOS または Android)構成のアプリケーションを開発してもらいました。バックエンドの開発言語は、原則としてphpを使用してもらいました。

この課題では、以下のようなポイントを踏まえて指導しました。

  • サービスのビジョンを整理(Lean Canvas、Product Canvasを使ってみる等)
  • 開発プロセスについて基本を理解(スクラム、DDD等)
  • 画面遷移・通信仕様の整理
  • 利用する技術の詳細やシステムのアーキテクチャの整理
  • 社内のコーディング規約を守る
  • 研修環境のサーバへのデプロイを経験してみる

最終日には、社内のセミナールームで成果物のプレゼンテーションを実施しました。配属予定の各チームのメンターを始め社内から集まったオーディエンスの前で、順番にサービスのデモを行ってもらいました。3軸加速度センサーを使った歩数計や、外部API(Twillio)を利用した音声ファイル共有サービスなど、それぞれ個性的で興味深いサービスが発表されました。

IMG_0255

まだ配属先に合流して間もない彼らですが、GREE BootCampで身に付けた技術・経験を元に、各チームで新しいサービスや機能を産み出していって欲しいと思います。


プログラミング基礎研修

今回の研修の初の試みとして、非エンジニア職(企画職・総合職・クリエイター)向けのプログラミング研修を実施しました。

背景としては、研修の企画段階において社内で意見交換を行う中で

「そもそもインターネットサービスの会社だし最低限の知識は理解しておく必要があるよね」「エンジニア以外の人もプログラミングを理解していれば、各チーム内での生産性・コミュニケーションも良くなるよね」

という意見があったのが発端です。ではどのあたりの知識を身につけてもらったら良いか、という摺合せを行った上で、以下をゴールラインとして設定し研修を実施しました。

  • WEBサービスの仕組みを理解すること
  • HTML/CSSでWEBサービスのモックが作れるようになること
  • データベースからデータ解析に必要なデータを取得できるようになること

GREE BootCampとの並行運用、また対象者が50名以上という大人数だったため、研修の運営体制が課題でした。そこでコーチに加えて複数のエンジニアにも協力してもらい、各チーム(5-6人)につき1人のメンターがフォローするという体制で臨みました。また、知識をインプットするだけでは効果が薄いので、実際に手を動かしてやってみながら覚えてもらう、という指導方針で行いました。

カリキュラムは、以下の通りです。期間は、エンジニアと同じ約6週間です。

  1. 開発環境構築
  2. HTML/CSS入門
  3. Bootstrap入門
  4. MySQL入門
  5. PHP入門
  6. Smarty入門
  7. CakePHP入門
  8. データ分析演習
  9. Webサービス開発演習

各カリキュラムごとに、[動画で視聴]->[自分で課題をやってみる]->[メンターが合否判断]->[合格したらNext Step]、というサイクルで進めました。当然分からない事にいっぱい直面しますが、その場合はとにかく検索&ログを読む、という事を徹底してもらいました。

また、非エンジニアとはいえ自分でサービス開発した経験がある人もいるので、研修進捗に差が出てくる事を考慮しスケジュールにはある程度の自由度を持たせておきました。

IMG_0247

最終日にはエンジニア同様、メンターから推薦を受けた優秀な新卒によるWebサービスのプレゼンテ―ションを行いました。モックレベルとしてはかなりハイクオリティなアプリが出来上がってきたため、非エンジニアとは思えない予想以上の完成度に、オーディエンスからも驚きの声が上がっていました。

どのくらい効果的で有意義な研修となったのかは、配属部署における彼らの今後のパフォーマンス次第だと思うので、期待したいと思います!

また、今回は試験的な運用でしたが、今後も機会があれば研修対象を拡大するなど、継続的に行っていく事も視野に入れています。


インフラ技術研修

GREE BootCamp終了後、基本的にエンジニアは各部・各チームに配属となるのですが、インフラ部門に配属になった人はさらに1か月以上研修が続きます。現在まだ研修の真っ最中ですが、簡単に内容をご紹介したいと思います。

写真 2014-07-08 14 56 08

インフラの研修は、習得する内容に合わせて、ふたつのStepにプログラムを分けています。

  • Step1:一般的なインフラの知識・技術・経験を習得
  • Step2:グリーでのインフラ構成の運用・管理方法を習得

Step1は、個人ワークとグループワークで構成されます。まず個人ワークでは、一般的なWEB構成、 DB構成を構築するという課題に取り組んでもらいました。次にグループワークでは、新卒を2チームに分けて、LAMP環境のパフォーマンスチューニングの競技を行ってもらいました。具体的にはチケット販売サイトにおける3日間のチケット販売数を競う、というものです。毎日測定会を実施し、最終日にスコアの発表と、チューニングの過程で工夫した点などの成果プレゼンを各チームから行ってもらいました。

こちらの大会(ISUCON2)で使用されていたソースコード(チケット販売サイト+ベンチマークツール)が公開されていましたので、アレンジして題材として使用させて頂きました。

Step2では、グリーの基本的な本番環境やミドルウェアの仕組み・運用方法について理解を深めてもらうため、各講義を行いました。ラインナップは、グリーの本番環境、Webシステム(LVS-リバースプロキシ-アプリケーションサーバ)、MySQL、NoSQL(Memcached,Flare)、画像配信、モニタリング、セキュリティ等です。また本年度からの重視項目として、仮想化(OpenStack)とChefを追加しました。各担当チームのエンジニアより講義を行い、その後復習のため課題を解く、という形式で進めました。

Step2終了後は、チームに合流し、OJTベースでグリーのインフラ環境の運用を一通り経験してもらう予定です。

最後に

グリーでは新卒向けの技術研修を体系的に整備し始めてから今年で3年目になりますが(それまでは中途エンジニアの採用がメインだったので、新卒向けにはそこまでちゃんと整備していませんでした)、事業環境の変化や、社内のニーズにあわせて研修内容をスケールアップしてきました。

グリーでは現在、新卒エンジニアの採用を通年実施してますので、関心のある方は是非ご応募ください!(すいません、宣伝でした)

また機会あれば、グリーのエンジニアリングを支える制度、取り組みのご紹介をしたいと思います。

sashima

インフラ開発合宿を6月20(金)・21(土)に開催しました

こんにちは、開発企画室の佐島です。

少し時間が経ってしまいましたが、6月半ばに開催したインフラ開発合宿についてご紹介したいと思います。

インフラ開発合宿とは

一泊二日、いつもとは違う環境に身を置き「仮想化、自動化」をテーマに何か開発しようという試みです。

テーマと言いつつもゆるい感じで、実際は開発したい or 試してみたいものを自由にやる場になりました。

GREEのインフラを支えているエンジニアは、新しいインフラを開発する部隊と、稼働中のインフラを安定運用するための部隊にざっくり分けることができるのですが、今回の開発合宿は開発部隊を中心に企画しました。

事前準備

何を開発するか決める

参加者には事前に開発するものを公開してもらいました。

自分がやりたいものより面白そうなものがあればチーム開発もあり、という狙いでしたが、結果的にはみんな自分のが一番ということで全員ソロとなりました。

以下、いくつかピックアップさせて頂きますが、結構バラエティーにとんだ内容になっていることが伺えると思います。

  • 線形計画法やヒューリスティックなどを使ってサーバの最適配置を求めるツール
  • distributedな何か (haskell+distributed-process or akka あたりを使う)
  • オンプレ (OpenStack 環境) とパブリッククラウド (AWS) のマルチクラウドオーケストレーション (仮)
  • ペンシルパズルのsolverツール
  • Serfを利用してなんかする
  • 非同期 worker プロセスを Docker で使い捨てにしてみる
  • (OpenWRT 化したルータなど)ネットワーク機器に対して設定を自動デプロイする仕組みのモック作り
  • Scala + Play2 (+ chef or docker) を使ってサーバの構築(not オーケストレーション)ツール
  • ブラウザゲームにおける不正なツール使用をアクセスログから検出するツール
  • Kontiki (Haskell の Raft library) を over distributed-process でつかってみる
  • OpenStack nova で lxc か Docker virt driver & CoreOS を試す、余裕があれば Kubernetes 触ってみる

どこで開発するか決める

開発合宿はホテル一宮シーサイドオーツカという場所をお借りして開催しました。

IMG_0378

このホテルはには「セミナー・会議プラン」というものがあり、宿泊と会議室利用がセットになっているのですが、最大の特徴は部屋を11時にチェックアウトしても、会議室が継続して利用できるというところです。今回はそのシステムを最大限利用させて頂き、翌日もたっぷりと開発時間を取ることができました。

ネットワークや電源まわりも完備しているのでPCだけ持っていけば大丈夫という開発合宿に適したホテルだと思います。(Wi-Fiがないので、Wi-Fiルータの持参をお勧めします。)

開発環境を調達する

色々実験的な試みも想定されたため、合宿専用のAWSアカウントを準備し参加者全員で共用しました。

合宿の模様

初日

13:30 移動開始。

IMG_0366

東京駅から特急で1時間、その後ホテルのバスで移動しました。

15:30 開発開始

IMG_0377

LANケーブル、HUB、OAタップはホテルの備品をお借りし開発できる環境を整え、いざ開発開始。

19:30 夕食

IMG_0409

ホテル内のレストランで夕食です。

20:00 部屋での開発

IMG_0426

こちらのホテル、12畳の和室がついてネット環境が整っている広い部屋が1部屋だけあったので、夜の開発部屋として確保しておきました。

みんなでこの部屋へ集まり開発続行です。ちなみに22名で利用したのですが、大部屋含め6部屋確保しました。部屋割りは行わず、眠くなった人から順番に空いてる部屋へ行く方式。

参加者の中にはCTOもいたのですが、全く同じルールを適用させて頂きました。

2日目

8:00 朝食

写真撮り忘れましたがビュッフェでした。

9:00 開発再開

IMG_0380

ホテルの中庭に椅子とテーブルが置いてあり、そこで開発する人も。

12:00 昼食

IMG_0436

昼食もプランに含まれています。1泊3食という聞き慣れないプランですがお得です。

16:00 発表会

いよいよ成果発表会です。

ゆるいとは言え「仮想化、自動化」というテーマがあったのでDocker、オーケストレーションツールなどテーマに即した発表が続きます。

中でも参加者の興味を特に引いた取り組みを2つほど紹介させて頂きます。

1つめは限られた制約のもと、必要なラックの数が最小になるよう自動的にサーバを割り当てるツール。

IMG_0458

線形計画問題を解くためのソルバー、GLPK(Gnu Linear Programming Kit)を利用して解を導くというチャレンジです。ところが式は非常に簡単に書けるもののサイズが40以上になると解けなくなるという問題に直面します。そのため近似解を使う方法に変更し再度チャレンジ。うまく行きそうな兆しが見えたので実際のデータを利用して解析した結果、なんとラックを空けることに成功!(しかも解析は10秒以下)

論理的な制約条件下での実験ではありますが、実データでラックを空ける余地があることを示せたというのはすごい成果だったと思います。

そして2つめはWeb上でマルチトラックレコーディングを行うというもの。

IMG_0479

USBマイク経由で入力された音声データをSocket.IOを利用してAWS上へ保存し、保存したデータを再生させながら別トラックを録音、それぞれのトラックをWeb上でmixできるというWebサービスでした。

4分という短いプレゼン時間で、この日のためにわざわざ持参したギターでデモをするという、やや詰め込みすぎな内容もあいまってプレゼンは非常に盛り上がりました。(実際には4分を軽くオーバーしたわけですが)

最後に

ということで無事にインフラ開発合宿は終了したのですが、この2日間のチャレンジを参加者だけの知見にしてしまうのはもったいないということで、グリーで毎週金曜日のお昼に開催されている社内勉強会「Mini Tech Talk」の場をお借りして、そこでも成果発表を行いました。さすがに全部というわけにはいきませんので、いくつかピックアップしての発表ではありましたが、参加できなかったエンジニアへも共有できたのは良かったなと思います。

今年の4月に入社した新卒エンジニアからCTOまで、なんとも幅広い参加者で開催された今回の合宿ですが、今後のGREEを支える「種」がいくつも生まれとても有意義な2日間でした。また開催される機会がありましたらレポートさせて頂きます!

chobi_e

天下一InfluxDB勉強会開催してきました

こんにちは。ちょびえです。先日6/27(金)にDeNAさん会場にて天下一InfluxDB勉強会を開催してきました。当日はあいにくの悪天候ながら参加いただき有難うございました。また、会場を快く提供していただきましたDeNAさんに感謝申し上げます。

天下一InfluxDB勉強会 イベントページ

きっかけはanatooのtweetにより始まりました

もともとanatooとはPHPつながりで闇PHP勉強会など企画して頂いて参加させていただいていたのですが、今回は二人共InfluxDBに興味があるよね!ってことでInfluxDBの勉強会を企画・開催してきました。

本記事では天下一InfluxDB勉強会のレポートまとめ、という事で資料+動画を簡単にまとめておこうかと思います。@sonotsさんがtogetterのまとめを作ってくださっているので雰囲気はtogetterを見て感じ取ってください。

InfluxDB の概要 @sonots

InfluxDBの概要を知るのにはとてもオススメです!

goraft & InfluxDB @nobu_k

PFIで3月にひらかれたraftセミナーのスライドもぜひ御覧ください

LevelDB入門 @yosuke_furukawa

InfluxDBやってるとLevelDB関連でつまる所があるので勉強になりました!

InfluxDB Internals @chobi_e

goのエラーハンドリングとかモニタリングとかgoroutineのキャンセルテクニックをテーマとした勉強会やりたいと思った

InfluxDB の可視化ツール比較 @hakobera

1千万件のデータ突っ込んでるなんてスゲーっす!

資料

LevelDB のちょっとした話 @n_hiroki

スライド

DockerコンテナのメトリクスをGrafanaで可視化 @tmeb4

次回にむけて

発表者の皆様お忙しい中準備いただきまして本当にありがとうございました。

CAさんがClusteringすごい、と噂を伺っているのでぜひ次回はそこらへんのお話聞かせて頂きたいです!私のほうでも次回勉強会やるころにはきっとクラスタリング構成で運用しているんじゃないかなー(白目)

InfluxDBのステッカーとかも配布できるように準備進めていたのですが残念なことに悪天候で遅延してしまったので、次回開催時に配りたいなーと思ってます。

そいでは、また!