hironomiu's Blog

こそっと書いていきます。twitter_id:hironomiu

リーンスタートアップ的な価値のあるモノ創りについて

このエントリーは、VOYAGE GROUPエンジニアblog Advent Calendarの12/23分です。

こんにちは。システム本部 三浦(@hironomiu)です。

毎年恒例のVOYAGE GROUPアドベントカレンダーも5年目に突入しました!

例年振り返りについてエントリーしているのですが、今回は振り返りではなくインターンや学生イベントなど様々な場面で学生さんに向けて私が良く口にする「価値のあるモノ創り」についてエントリーしたいと思います。

価値のあるモノ創りとは?

毎年開催される夏の風物詩インターンTreasureにて謳っているテーマです。このテーマを背景にインターンは構築されています。

voyagegroup.com

自分の考える価値のあるモノ創り

スライドは今年の3月に学生さん向けの勉強会で話した簡単なワークも含めた資料です。(公開用に修正箇所あり)

内容はタイトルの通りリーンスタートアップ的なアプローチとサイモン・シネック氏のゴールデンサークルをモチーフにしたものとなります。

www.slideshare.net

目新しい内容ではありませんがスライド内のゴールデンサークルなどは意識しても中々実践に至らない難しいテーマだと思っています。

f:id:hironomiu:20161222163237p:plain

まとめ

「価値のあるモノ創り」と言うテーマを学生さんに向けて発信した分、私自身が「価値のあるモノ創り」精神をより実践していかないとなと改めて思いました。

そして来年も良いエントリーができるよう様々な場面で「価値のあるモノ作り」精神を実践しながらパワフルに挑戦していこうと思います。

それでは良いクリスマスを!


PS. ポケモンGO TL37になりました!

f:id:hironomiu:20161222121943j:plain:w200

今年も振り返ってみる!!!

このエントリーは、VOYAGE GROUPエンジニアblog Advent Calendarの12/23分です。

こんにちは。システム本部 三浦(@hironomiu)です。

毎年恒例になってきた振り返りも4年目です。去年のエントリーからもう1年経ったのかと思うとあっという間な1年でした!今年も本当に充実した1年だったと思う反面、様々な方にフォローしてもらったなと言うのが率直な感想です。

今年も去年と同様に三浦がこの1年関わった取組みからVOYAGE GROUPの雰囲気の一面が少しでも伝わりましたら幸いです。

エントリーを記載してみると色々なことを2015年はしたなぁと自分でも感心しています!引用が多く結構長くなってしまいましたがご了承くださいmm

エントリー中の引用はTechBlog、TwitterFacebookにて発信している内容から引用しました。日々情報発信していますのでウォッチして頂ければ幸いです!

スライドについてはコーポレートサイトに三浦分、他のクルーも含めたのスライドのまとめがありますのでそちらもご覧頂ければ幸いです!

1月 16卒エンジニア学生向け1Dayインターン

GitHubのissue -> branch -> 開発 -> push -> pull reqの開発サイクルをJavaScriptのサンプルアプリに機能追加を行いながら学ぶインターンでした!

1月 - 4月 14新卒エンジニア向けSQLアンチパターン勉強会

技術書は何年もすると風化するのが一般的だと思いますがRDBMSの歴史の長さのなせるものなのか、この本のアンチパターンは色褪せるどころかより歴史に学べる箇所が際立ってくるなと何度も勉強会を開催し痛感します。

www.slideshare.net

余談ですが15新卒エンジニア向けが既に始まっています!

1月 - 3月 VOYAGE GROUPエンジニアブログ移行

techlog.voyagegroup.com

11月 - 3月 15卒エンジニア内定者勉強会

techlog.voyagegroup.com

2月 - 7月 16卒エンジニア内定者開発 TechTrain

夏のTreasureで使われる事前課題サイトの開発です。今年も「リーンスタートアップ」に倣いターゲット、課題、ソリューションと仮説検証のフィードバックループを回しMVPに近づけていきました。各々の開発出来る時間、場所も異なるためGitHub&Slackを中心にPull Requestベースの「リモート開発」で開発を行っていきました。自分はスクラムマスタに近い形で内定者メンバーと接していきましたが、本当に沢山の挑戦を内定者メンバーがしている姿を見て頼もしくなったのを昨日のことのように思い出します!

f:id:hironomiu:20151222233903p:plain f:id:hironomiu:20150317152231j:plain f:id:hironomiu:20150403145444j:plain

5月 - 7月 15卒新卒研修

5/14から週に1回(基本木曜日)丸1日を使ったエンジニア向け新卒研修が全9回開催されました。先輩エンジニアの筋の良さや現場で培われた実践的な技術や考え方が伝わった研修でした!

techlog.voyagegroup.com

5月 - 7月 17卒エンジニア学生向け1Dayインターン

メッセージアプリをテーマにフロント(Swift or JavaScript)とサーバサイドをAPI連携させたサンプルアプリに対しGit&GitHubの開発フロー上でMission形式で改善していく実践的なワークを繰り返し、ラストはチーム開発でGit&GitHubの開発フローを実践しました!学生さんのアウトプットの高さから回を追うごとに講義内容もブラッシュアップできたインターンでした!

techlog.voyagegroup.com

8月 Treasure2015

今年は8/10から8/28の3週間で開催されました!3週間ぶっ通しで学び、そして創り上げる苦しさ、出来上がった時の達成感と様々な価値のあったインターンだったと思っています!

techlog.voyagegroup.com

10月 17卒エンジニア学生向け1Dayインターン

翌月に行われるSunriseで使われる環境をハンズオンで構築、サンプルアプリを配置し負荷テストを行いました!インフラインターンは難易度が高めになるのですが学生さんの飲み込み、対応力の良さに驚かされたインターンでした!

f:id:hironomiu:20151223083448p:plain

11月 16卒内定者勉強会

現場エンジニアを招き生きた知見が得られた素晴らしい機会でした!

11月 Sunrise2015

今年は11月21,22,28,29の土日4日間でSunrise2015が開催されました!今年で5回目の開催となり歴史を感じるようになってきました!前半2日は講義で後半2日でアウトプット&発表とハードなインターンです!

番外編

2015年は社外により情報発信を行うことや、社内の取組みで挑戦をしようと言うことを掲げていました。今後も強化していきたいと思います!

4月 SQLアンチパターンNight

2年連続でこのエントリーでは登場している良書の監訳者の@t_wadaさんをお招きして勉強会が実現しました!ありがとうございます!

connpass.com

www.slideshare.net

5月 BPStudy

VOYAGE GROUPの若手の技術力向上についてお話しさせて頂きました!沢山の質問があり興味の多いテーマだと思いました!ありがとうございます!

bpstudy.connpass.com

www.slideshare.net

8月 事業提案制度EBI

若手と接する際に言うだけの人ではなく社内の取組みの重要性を自身の行動でしっかり背中を見せることも重要だと考えています。当然ですが記念受験のような軽い気持ちではなく必死に考えて臨みましたが撃沈してしまいました(ぐやじい。。)今後もリベンジして行きたいと思います!

www.facebook.com

10月 理論から学ぶデータベース実践入門Night

リレーショナルモデルと言えばこのお方!著者の@nippondanjiさんをお招きして勉強会が実現しました!ありがとうございます! connpass.com

www.slideshare.net

おわりに

他にもエンジニア志望学生向け座談会、就活イベント、大学訪問、短期Guild、Guildバイトなどのエントリーしたい取組みがありましたが今回はここまでにしたいと思います。改めて沢山のクルーの協力があって有意義な取組みに昇華できた1年だったと思います!ありがとうございます!

最終日の明日は我らがCTO 小賀さん(@makoga)からのエントリーです。最終日にふさわしい素晴らしいエントリーだと思います!乞うご期待!!それでは良いクリスマスを!!

日中のAJITOでの勉強会風景

この記事は #ajiting Advent Calendar 2015 の13日目の記事です。

こんにちは。@hironomiuです。

このエントリーでは2015年に日中にAJITOで行われている勉強会の風景を自分の持っている画像でお伝えしたいと思います。 (決して手抜きジャナイヨ!)

知ってますか?AJITOは夜だけではなく日中も大活躍してるんです!

VOYAGE GROUPは勉強会がすごく盛んな会社だと思います。テーマも様々で単発のものもあれば長期に渡るものと色々あります。 その中でAJITOで行われている勉強会の雰囲気が少しでも伝われば幸いです!!

1/8

f:id:hironomiu:20150108150834j:plain 業務にて行っているデータ解析&適用についてFBと改善点などについて議論する勉強会でした!

2/4

f:id:hironomiu:20150204160602j:plain VOYAGE GROUPエンジニア on Twitter: "本日は定期的に開催される社内勉強会(通称ほげほげ勉強会)が開催されました。今回はfluentd,Elasticsearch,kibana,BigQueryなどを用いたログマネジメントをテーマに若手のたじーが登壇しました。 http://t.co/sk0qg9C3oZ"

4/10

f:id:hironomiu:20150410130259j:plain:w400 f:id:hironomiu:20150410130310j:plain:w400

お酒美味しいですよね!これはSQLアンチパターンNightの懇親会向けにどこまでビールを詰め込めるか挑戦していた図ですw

6/3

f:id:hironomiu:20150603142658j:plain VOYAGE GROUPエンジニア on Twitter: "本日は定期的に開催される社内勉強会(通称ほげほげ勉強会)が開催されました。今回はDDD(ドメイン駆動設計)をテーマに新卒2年目のはむちゃんが発表しました! http://t.co/5mu0gH2I37"

6/29

f:id:hironomiu:20150629151101j:plain 新卒メンバーによる新卒研修の感想などのFB風景でした!

9/3

f:id:hironomiu:20150903143059j:plain VOYAGE GROUPエンジニア on Twitter: "本日は定期的に開催される社内勉強会(通称ほげほげ勉強会)が開催されました。今回はZucks内での開発で得た知見をテーマに新卒2年目のさるへいが発表しました! http://t.co/E9FUu7mYHV"

11/18

f:id:hironomiu:20151118130608j:plain VOYAGE GROUPエンジニア on Twitter: "本日は@suzu_v による社内golang勉強会が開催されました!内容はA tour of Go https://t.co/wXkTbN4V1t の課題の解説から実際にコーディングする形で進めていきました! https://t.co/SKlZYexsgw"

11/22

f:id:hironomiu:20151122174134j:plain 大規模インターンSunrise中にCTO直々に行われたアドテク勉強会の風景です!

11/25

f:id:hironomiu:20151125133646j:plain golang勉強会の第2回目です!(この勉強会は現在も継続中です!)

自分の持ってる画像はこのぐらいですが多分5~6倍は行われてるんじゃないでしょうか。(パンゲアOASIS、会議室を入れると10倍以上?) きっと2016年も様々な勉強会がAJITOで開催されると思います。学びの場としてもAJITOは大活躍しています!!

ありがとうAJITO!ビバAJITO!乾杯AJITO!

明日はnekoyaさんです!お楽しみに!

今年も振り返ってみる!!

このエントリーは、VOYAGE GROUPエンジニアblog Advent Calendarの12/23分です。

こんにちは。システム本部 三浦(@hironomiu)です。

VOYAGE GROUPのAdvent Calendarも今年で3年目ですね。 去年一昨年と引き続き今年も23日を担当となります!(このブログが完全にAdvent Calendar専用になってるのは内緒です!)去年末からシステム本部内でERDG(Engineer Resources Department Group)と言うグループを立ち上げ担当職責もDBAから技術者育成責任者となり、より育成やエンジニアインターンにコミットする年となりました。

このエントリーでは三浦(@hironomiu)が今年1年で携わったエンジニアインターン、社内育成&勉強会などについて関わったクルーも含め時系列で紹介しVOYAGE GROUPの雰囲気や学びに対する取組みについて少しでも伝えられたと思います。

書きたいことが沢山あり長くなってしまったので短的に言うと「充実した1年でした!」「来年は更に頑張る!」です。

エントリー中の引用はTechBlog、TwitterFacebookにて発信している内容から引用しました。日々情報発信していますのでウォッチして頂ければ幸いです!

スライドについてはコーポレートサイトに三浦分、他のクルーも含めたのスライドのまとめがありますのでそちらもご覧頂ければ幸いです!


1月〜4月 SQLアンチパターン勉強会

スライド資料

1月中旬から4月一杯に渡って週に1回のペースで全章を読み解いていく勉強会を2期開催しました。こちらについてTech BlogにSQLアンチパターンのススメとして記載しています。興味を持たれた方はこちらも合わせてご覧ください。

第3期の開催

2015年も1月から第3期を14エンジニア新卒を中心に11週を目処に開催する予定です。資料などをブラッシュアップしながら更に有意義な勉強会にしていきたいと思っています。

意欲的な新卒メンバーで3期も楽しみ!

f:id:hironomiu:20141223144527p:plain


2月〜8月 15エンジニア内定者サービス開発

制作物のVOYAGE Challenge

f:id:hironomiu:20141223144535p:plain

2月から8月まで15エンジニア内定者が任意でJOINしドメインSSL証明書なども取得しWebサービス開発について学んでいくプロジェクトです。フォローでゆうくん(@yuu_ito)にも手伝ってもらい進めていきました。この開発については2つの軸を念頭に進めていきました。1つ目は純粋にリーンスタートアップに倣ったWebサービス開発です。2つ目は夏のエンジニアインターンTreasureに向けた準備です。エンジニア内定者はTreasureのTAを任意で参加出来ます。その際に必要なスキルセットをこの開発では身につけていきます。

リーンスタートアップ

VOYAGE GROUPでは「価値」と言う言葉を大事にしています。そこからリーンスタートアップの考え方は共感出来る部分が多くTreasureでは随所にエッセンスを取り入れています。そのため事前にリーンスタートアップに倣った仮説検証のフィードバックループを行いMVPの作成、更なるプロダクトへの昇華と言う手法をここでは進めていきます。

リモート開発

リーンキャンバスで言う「ターゲット」「課題」について仮説、検証を行いMVPに差し掛かろうとしたところで続々とエンジニア内定者がJOINしてきました。エンジニア内定者は住んでる地域も様々でかつ活動出来る時間帯も学業やプライベートな活動などとの兼ね合いもありリモート開発をベースとしたチーム開発の最適化を進めていきました。

GitHub

リモート開発を行う上でGitHub、Slackをフル活用しました。開発サイクルは各内定者が実装単位でissueを作成し対応したbranchを切りpull requestからdevにmerge、最終的にmasterに取り込むと言う流れで行います。開発中に必要となるコミュニケーション手段やGitHubリポジトリ上の進行状況の可視化(apiを利用しpull request、issue、コメントなどを通知)としてSlackを利用しました。ストックしたい情報は全てGitHubリポジトリWikiに集約していきます。

リモート開発コミュニケーションの救世主Slack

ちょっと大袈裟ですが当初は流れる情報の共有手段としてSkypeを利用していました。Slackの優位性について深くはここでは触れませんがロケーションの違う内定者達から一番大きな課題として出ていたのが「周りが何をしているのかが分からない」でした。Skypeに限界を感じていた中Slackに移行したことで上でも触れましたがapiを利用しGitHubのpull request、issue、コメントなどをチャット上に通知出来きることで開発の状況が可視化できメンションを使ってやりとりするなどで情報が埋もれず情報を発信する程好循環となる仕組みの土台が出来てきました。

ハブとなる大変さ

今年の開発は最終的に内定者8人が参加しました。開発が好調になるにつれGitHubのpull requestベースの開発サイクル、Wikiによるストック情報の集約、Slackによる開発状況の可視化だけでは賄えない部分が見えてきました。顕著に現れたのが三浦がハブになり各内定者間の細かい認識の擦り合わせの重要度が高まってきたことです。空いている時間も8人が程よくバラバラなため同じタイミングで現状を共有する事が出来ないことで内定者間の状況の認識のズレからコミュニケーションロスによる開発の停滞が顕著になることもありました。リモート開発を主体にすることの大変さは覚悟はしていましたが、各内定者毎の共有タイミングで認識の擦り合わせはどんなに二度手間になろうとも全員に同じ内容を都度都度丁寧に共有し、その繰り返しのサイクルを短くしないと開発が停滞すると確信する反面、繰り返しのサイクルを短くすることはハブの役割の負担が飛躍的に膨らむジレンマで苦心したことは今でも強く覚えています。

リリースを終えて

閉じたissueの数281、閉じたpull requestの数もほぼ同数の279と開発の内容をこの手の数字だけで語るのはナンセンスかもしれまんせが頑張って開発をやりきった15エンジニア内定者には拍手を送りたいです!


7月 京都1Dayインターン開催(GitHub編)

インターン後のソースコードレビュー風景(FaceBookより)

京都1Dayインターン

7月に15エンジニア内定者サービス開発でも実践しているGitHubの開発サイクル(issue -> branch -> 開発 -> pull request -> merge)にフォーカスを当ててGitHub入門編として京都で1Dayインターンを開催しました。ただGitHubの開発サイクルを説明しただけではHowを伝えるだけとなります。なぜGitHubの開発サイクルを使うのかWhyの部分について実際にGitHubの開発サイクル上でJavaScriptの簡単なアプリをテーマに開発を実践し体験しながらWhyの部分まで学んでいきます。

関西初インターン

Treasure、Sunriseと関東だけではなく地方の学生さんとも接する機会が多数あるのですが実際に京都でインターンを開催してみて予想以上に関西にはWeb好きなエンジニア志望の学生さんが多いことに驚かされました。


9月 Treasure2014開催

全体集合写真(TechBlog後半より)

9月頭からVOYAGE GROUP夏の風物詩となりましたエンジニアインターンTreasure2014が開催されました。実は2012から肩書きの上ではメイン講師と言う立場で携わっています。毎年早いタイミングからCTO小賀さん(@makoga)、人事のHさん(@339)とTreasureのコンセプト、想いなど様々な観点を詰めいくのですが、その中で今年はメイン講師としてTreasureはどうあるべきか?をより強く意識することが多かったインターンでした。

3週間ぶっ通しで全力で学ぶインターンの価値

夏のインターンは同業他社さんに限らず理系学生向けのインターンが沢山あります。その中でTreasureは3週間と言う比較的長いインターンです。学生さんが夏の貴重な時間を使ってTreasureに期待して参加した期待値以上の価値をどう造り上げて行くか難易度の高いテーマですがやりがいのあるテーマでした。Treasureで掲げている圧倒的成長を体現出来るインターンであるために講師、サポータ、Treasure生の全員が絡み合って造り上げる血が通った生き物になるように自分なりにどう働き掛ける事が出来るか特に意識しました。

こちらについてTech Blogに圧倒的な成長を目指す「Treasure2014」(前編)圧倒的な成長を目指す「Treasure2014」(後編)として記載しています。興味を持たれた方はこちらや講師のえびちゃん(@co3k)のエントリーWeb セキュリティに関するインターンで伝えようとしたことも是非ご覧ください。

Thanks

改めて講師、サポータ、人事、TA内定者の皆さん本当にお疲れさまでした!


9月 勉強会をテーマに社外で登壇

スライド資料

VOYAGE GROUPの成長する勉強会カルチャー

ご縁があって社外で勉強会をテーマにVOYAGE GROUPの成長し続ける勉強会カルチャーと言うお題で登壇させて頂く機会がありました。1クルーが社内の勉強会やカルチャーなどを胸を張って社外に発信出来る状況は健康的だなと思いました。

余談

このエントリーでは三浦が関わった勉強会などをあげていますが社内ではSICP勉強会を2年継続したり良書や気になる論文について気軽に勉強会が開かれたりと三浦以上に勉強会カルチャーを牽引するクルーが多数おり学びの多い職場だと思います。


10月 京都1Dayインターン開催(セキュリティ編)

講義風景(VOYAGE GROUP Facebookより)

セキュリティ編のインターンは進行サポートとして京都へ赴きました。内容に関しては前述していますが講師のえびちゃん(@co3k)のエントリーWeb セキュリティに関するインターンで伝えようとしたことにある通りスペシャリストならではの講義で三浦も勉強になるほどでした!事前に講義内容を詰めてる際に見えてきた課題としてこの素晴らしい内容を1Dayと言う限られた時間で手を動かす時間を取りながらどれだけ盛り込めるかが浮かんできました。その部分に関して実際に手を動かして確認の協力をしてくれた15エンジニア内定者のせんちゃん(@1000_ch)&わっさん(@YOwatari)の時間計測などの事前確認のおかげで完成度の高いインターンとなりました!ありがとう!


11月 Sunrise2014開催

全体集合写真(TechBlogより)

11月中旬からVOYAGE GROUP冬のエンジニアインターンSunrise2014が開催されました。初年度の2011から1から作ってきたこともありTreasureとはまた違った思い入れのあるインターンです。TreasureがWebサービスアプリ開発に比重を置いているのとは対照的にSunriseでは大規模Webサービスインフラにフォーカスを当てており、期間に関しても3週間から土日2回開催の4日間と限られています。限られた期間で出来る限り大規模WebサービスのDBを中心としたインフラ設計についての気付きを伝えられるよう全体のストーリーを練っていきます。

チューニングバトル

期間は土日2回開催と触れましたが間の平日5日間で何か出来ないかと考えた末にチューニングバトルと言う案が去年浮かびました。こちらの用意したクラウド上に構築したLAMP環境、PHP+Silexのサンプルアプリに対し負荷ツール(siege)で時間あたりの実行回数で競います。今年も同様の案を採用しブラッシュアップしたチューニング課題を提示してみたところ及第点として

  • RDBの領域で適切なインデックスを作成すること。
  • リバースプロキシの領域で静的コンテンツとして判断して良いと思われるエンドポイントについてはキャッシュすること。

を想定していたのですが

  • Apache + PHPからNginx + HHVM
  • PHPフレームワークSilexからSlim(サンプルソースも適切な書き換え)
  • MySQLからMongDB(データも完全に移行)
  • ulimit、I/Oスケジューラなどカーネルパラメータのチューニング
  • varnishのDSLにてキャッシュ対象、間隔の細かいチューニング
  • チューニングに特化した不要デーモンの停止

と想定以上の回答が多数現れエンジニア志望学生のスキルレベルの向上は年を追うごとに凄いものがあると痛感させられたと同時に三浦もウカウカしてられないととても良い刺激を受けました。

こちらについてTech Blogに100万人が使うWebサービスを創造せよ!!大規模サービス構築プログラム「Sunrise2014」として記載しています。興味を持たれた方はこちらも是非ご覧ください。

Thanks

改めて講師、サポータ、人事の皆さん本当にお疲れさまでした!


11月〜現在 15エンジニア内定者育成支援

会議室でのTDD勉強会の風景(tech_voyagetweetより)

TDD風景 TDD風景

図書スペースOASISで1DayTDD勉強会の風景(tech_voyagetweetより)

1DayTDD勉強会風景

11月からは15エンジニア内定者向けの育成支援プロジェクトが開始しました。三浦に加え4人のクルー(西郡さん(@_nishigori)、駒崎さん、さやちゃん(@sayadroid)、じゅえる(@jewel_x12))をメンターに迎え2015年3月までバックアップしていきます。進め方は全体のテーマを決め各自のペースでGitHubにてpull requestベースによるレビューで行います。こちらも「15エンジニア内定者サービス開発」と同様にリモートによる学習が基本となるため、pull requestのコミュニケーションを補完する形でSlackの利用や毎週水曜、午前と午後に各1時間を使って参加可能な内定者はpull requestの内容をSkypeによる音声チャット、出社出来る内定者は顔をつき合わせてより理解度を高めていきます。11月、12月のテーマはTDDで行いました。 又、隔月ぐらいのペースを目標にVOYAGE GROUPに集まり1Dayでワークショップの開催なども行います。

育成支援のあり方

入社が近づき卒論などの学業も忙しい中で新卒からグイグイ活躍したい、伸びたいと思っている姿勢に少しでも後押しが出来ればと考えています。入社後にVOYAGE GROUPの目指している方向性にフィットしながら各内定者自身が納得の行く活躍をするための助走期間として学び伸びていく環境作りの第一歩をサポータと共に作っていければと思っています。


終わりに

他にも14エンジニア新卒研修や社外向け#ajiting、勤続5年休暇などなどまだまだ書ききれなかったことが沢山ありますが今回はここまでにしたいと思います。関わったクルーの皆さんには改めて色々刺激を受けながら、助けられたなと思っています。冒頭に述べましたが来年もより一層頑張っていきたいと思います!

最終日の明日は15エンジニア内定者育成支援でサポータをして頂いている、じゅえる(@jewel_x12)からのエントリーです。最終日にふさわしい素晴らしいエントリーを期待しましょう!!それでは良いクリスマスを!!

今年も振り返ってみる!

このエントリーは VOYAGE GROUP エンジニアブログ : Advent Calendar 2013の23日目の記事です。

今年もこの季節になりましたね。去年のエントリー「一年の振り返り - hironomiuの日記」から丸1年振りのエントリーです。(あっという間で早いですね!)

今年も去年と同様に前半は@hironomiuの視点で2013エンジニアインターンの取組みについての振り返りを行い、後半は簡単なtipsですがSQL初学者向けのtipsをエントリーしたいと思います。(イヴイヴ感ゼロですね!)

インターン

夏のTreasure2013 、冬のSunrise2013 ともにメイン講師として初日から最終日までフル参戦となりました。両インターンともに成長意欲の高い学生が多くこちらの方が沢山刺激され成長させて貰えたのではと思っています。

Treasure2013

プログラミングによるサービス開発が主体のインターンですが裏ではイマドキ個人開発環境ってあるよね!と言うことでVirtualBox + Vagrant + Puppet + ServerSpecでのインターン生が持ち込んだPCに対してローカルでの個人開発環境の提供や本番環境を直接触るのではなく開発環境(今回は個人開発環境)からgithub + Jenkinsでのデプロイ連携で本番にアップするようなフローも経験して欲しいよねと環境や運用についても限られた時間の中モダンと言うキーワードを意識した意欲的な取り組みも行えたインターンでした。

インターン中の雰囲気については以下のブログを見て頂けると幸いです。

VOYAGE GROUP エンジニアブログ : 圧倒的な成長を目指す「Treasure2013」(前編改めプロローグ)
VOYAGE GROUP エンジニアブログ : 圧倒的な成長を目指す「Treasure2013」(前編)
VOYAGE GROUP エンジニアブログ : 圧倒的な成長を目指す「Treasure2013」(後編)

Sunrise2013

今年は技術的なコンセプトデザイン、そこから講師としての講義資料の作成、課題(事前、中間、最終)、実技用の環境構築、モックアプリの準備と全てを行った事もあり一大プロジェクトとなりました。Sunrise2013は大規模サービスを運営していく上での抽象度が若干高いサービス設計技術にフォーカスを当てています。そのため座学、実技を含めた講義の内容やアプリのモックなどについてもできるだけ個別な技術にフォーカスが当たらないように気をつけながら詳細を詰めていきました。*1

インターン中の雰囲気については以下のブログを見て頂けると幸いです。

VOYAGE GROUP エンジニアブログ : 100万人が使うWebサービスを創造せよ!!大規模サービス構築プログラム「Sunrise2013」

SQL tips

初学者向けなtipsですが社内ではたまに触れるtipsでしたので今回はそれを記載したいと思います。良く初学者の方で範囲検索の際にbetweenを使うべきなのかどのような等号の組み合わせを用いるべきなのかコーディングのお作法に近い質問を受けたりSQL作成時に苦慮が感じたりすることがあります。SQLを実行する際に実行計画について全く無視した解説は乱暴かもしれませんがあえて今回は実行計画には触れずtipsを記載したいと思います。

とある1日分のデータを取得する

例えば以下のようなレコードがあり12月23日分のレコード全てを取得したいとします。

mysql> select * from hoge;
+----+---------------------+
| id | created_at |
+----+---------------------+
| 1 | 2013-12-22 00:00:00 |
| 2 | 2013-12-22 23:59:59 |
| 3 | 2013-12-23 00:00:00 |
| 4 | 2013-12-23 12:00:00 |
| 5 | 2013-12-23 23:59:59 |
| 6 | 2013-12-24 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)

パターン1 betweenでの書き方

mysql> select * from hoge where created_at between '2013-12-23' and '2013-12-24';
+----+---------------------+
| id | created_at |
+----+---------------------+
| 3 | 2013-12-23 00:00:00 |
| 4 | 2013-12-23 12:00:00 |
| 5 | 2013-12-23 23:59:59 |
| 6 | 2013-12-24 00:00:00 |
+----+---------------------+
4 rows in set (0.00 sec)

当然ですが上記では「| 6 | 2013-12-24 00:00:00 |」まで取得してしまいます。これでは仕様を満たせていませんね。

mysql> select * from hoge where created_at between '2013-12-23' and '2013-12-23 23:59:59';
+----+---------------------+
| id | created_at |
+----+---------------------+
| 3 | 2013-12-23 00:00:00 |
| 4 | 2013-12-23 12:00:00 |
| 5 | 2013-12-23 23:59:59 |
+----+---------------------+
3 rows in set (0.00 sec)

なんとか仕様を満たせました。ただ「'2013-12-23 23:59:59'」のようにデータ型を踏まえた境界値となる値を指定しないといけなそうですね。

パターン2 対義(<= >= | < >)となる等号を組み合わせる書き方

mysql> select * from hoge where created_at >= '2013-12-23' and created_at <='2013-12-23 23:59:59';
+----+---------------------+
| id | created_at |
+----+---------------------+
| 3 | 2013-12-23 00:00:00 |
| 4 | 2013-12-23 12:00:00 |
| 5 | 2013-12-23 23:59:59 |
+----+---------------------+
3 rows in set (0.00 sec)

どうもこの場合も「'2013-12-23 23:59:59'」のようにデータ型を踏まえた境界値となる値を指定しないといけなそうですね。

パターン3 個人的にオヌヌメな書き方

mysql> select * from hoge where created_at >= '2013-12-23' and created_at < '2013-12-24';
+----+---------------------+
| id | created_at |
+----+---------------------+
| 3 | 2013-12-23 00:00:00 |
| 4 | 2013-12-23 12:00:00 |
| 5 | 2013-12-23 23:59:59 |
+----+---------------------+
3 rows in set (0.00 sec)

上記はいかがでしょう?慣れの問題もありますがSQLの可読性も高くなった気がします。そして日付型の特徴である時刻を指定しない場合「00:00:00」に丸めることを利用し境界値についての敷居が低くなりました。

今回はMySQLinnodb)で例を作成しましたが大体のRDBMSでは日付型について日付を指定した際に時刻を省略した場合、時刻については「00:00:00」に丸める特徴は共通しているためRDBMSごとに日付型で持つ時刻の精度(時分秒〜ミリ秒...etc)について考慮することが不要となり他のRDBMSへの移植性も高くなります。*2

今回は範囲検索の中でも引っ掛かりやすい日付型でtipsを記載しましたが、日付型に限らず条件句での範囲指定の際にbetweenを必ず使用する必要はありませんし等号に関しても可読性を考慮して柔軟に組み合わせる事が大事ではないかと自分は考えています。逆に言うとSQLは柔軟な記述が出来るので日付型に限らず型による特性を理解し柔軟な記述をすることで可読性、移植性が高く意図した結果セットが取得できるSQLになるのでは?と考えています。

自分のエントリーはここまでにしたいと思います。

最終日の明日は圧倒的に事業を牽引している@suzu_vです。最終日にふさわしい素晴らしいエントリーを期待しましょう!!

それでは良いクリスマスを!!

*1:余談ですが裏では講義用にクラウド上にて約30台のサーバを用意しましたがgithub + puppetを主軸にミドルウェアパッケージのセットアップ、DBデータのセットアップ、モックアプリのデプロイ、動作検証までを、まだまだ改善の余地がありますが、ある程度自動化でき構築作業の工数を大きく下げ、他の作業に時間を割けた事は個人的には手応え感が大きかったインターンとなりました。

*2:当然ですがRDBMSごとに文字列を日付型として暗黙的にキャストすると等で認識するフォーマット等の考慮は必要ですね。

一年の振り返り

このエントリーは、VOYAGE GROUPエンジニアblog Advent Calendarの12/23分です。


こんにちは。
VOYAGE GROUPでDBAをしている@hironomiuです。


DBAと言うデータベースと言う切り口で業務全体を俯瞰、
運用出来る仕事やデータベース技術の検証をさせて頂いている傍ら
インターンのメイン講師&環境の取り纏めや新卒研修、
社内勉強会(RDBMS)の講師など育成の仕事もさせて頂いています。

今回は@hironomiuの今年1年で携わった業務イベントの幾つかを紹介して
VOYAGE GROUPの取り組みを少しでも伝えられたと思います。


Treasure
去年より前半の座学の日数を2週間から1週間短くし取り組むべきカリキュラムを
ワンランク上げた大きな挑戦をしたインターンでした。
最終日の成果発表は期待値を超える成果物が出てきて素晴らしい挑戦が出来たと思っています。
Treasure後も学生さん達は継続して成果物のブラッシュアップを行い
MashupAwardに応募したりと成長し続ける姿が印象的でした。
(応募作品はこちら
短い開発期間でしたが見事株式会社ハートレイルズ賞を頂けて講師としても嬉しかったです。




Sunrise
土日を2回出社し間の平日はSkypefacebookなどで連絡を取り合いながら
大規模サービスのノウハウを学ぶSunriseも今年で2回目でした。
去年のSunrese後に学生さんにFBを貰ったことを踏まえCTOの小賀さんの提案で
実際のサーバの性能観測、調査からのボトルネックの特定、解消などを
交えたより実践的なカリキュラムにシフトしました。
今年の学生さんにFBを貰ったところ期待以上に実践的なカリキュラムは好評でした。


Treasure、Sunriseを通して改めて思ったのは学生さんの成長スピードの速さです。
成長に対して素直に貪欲であり続けようと気付きを沢山頂きました。



・データベース検証
今年はMySQL5.6の検証をメインにやらせて頂きました。
(検証資料はこちら
中々仮説通りの動きにならなかったり度重なるバグの発見で検証が足踏みすることや
まだまだ自分の実力や試行するための準備が不足している部分もあり
今後更に頑張り有意義な情報を発信していきたいと考えています。


通常業務も含め様々な人とお仕事をさせて頂いた1年でした。
来年も様々な形でVOYAGE GROUPを支えていきたいと思っています。


明日は@ajiyoshiさんです。

AWS 障害のとき

AWS 障害のとき

AWSで障害が起きているのかも?と思ったときに確認した備忘録

サポートページ

https://aws.amazon.com/support/

ステータス

使っているリージョンを確認。
http://status.aws.amazon.com/

twitterハッシュタグ #jawsug)

https://twitter.com/#!/search/%23jawsug

ちなみに今日は障害発生してました。