ウェブ系企業において技術を学ぶことについて

技術部の牧本です。

最近は主に新卒社員研修や新卒採用選考プロセスの設計などに携わっています。

半年ほど前に書いた「クックパッドの新卒研修2015」という記事の中で、みんなが技術を理解することを大事にしたいという旨を述べました。

クックパッドでは、様々な役割の社員が技術を学ぶことを志すケースが多くあり、このブログでもいくつか事例を紹介しています。

本稿では、主にエンジニアではないメンバーが技術を学ぼうというときのモチベーションを分析し、それに対するクックパッドの取り組みについてお話しします。

1. ソフトウェア開発を体験したい

「プログラミングをしてみたい」という話をエンジニア以外の方からたびたび聞きます。 これは、同僚のエンジニアが普段何をしているのかという興味などから来るものが多いです。

この場合は、プログラムを書き、それが動くという体験が重視されます。 その目的にはウェブアプリケーションが適していると考えています。

私の場合、プログラミングを体験してもらう目的のために、簡単なハンズオンを作って公開しており、興味のある人にやってもらっています。 *1

https://github.com/makimoto/handson

これは Ruby on Rails を使って掲示板アプリを作り、それを Heroku にホストするという単純なものです。 とにかく動かすということにフォーカスしていて、技術的背景を省き、単純に書かれた指示通りに作るとものができあがるようになっています。

その他、プログラミング経験の少ない人向けのチュートリアル *2 を試してもらうのも良いと考えます。

小さなアプリを作るという経験は、ソフトウェア開発はどういったものか、どういうところでつまずくのか (例えば、単純な typo で半日を棒に振ったことなど、みなさんも経験があると思います) というのを体験できるものだと考えています。

2. 技術の背景を理解したい

技術を学ぶ動機のもっとも大きい一つは、自分の日々の仕事や生活で使う仕組みを詳しく知りたいというものです。 それは、業務上必要に迫られての場合もありますし、興味本位の場合もあります。

この文脈で技術を学びたい人には、業務で関わる話をしたりします。

例えば、ユーザーがログインするという機能はウェブアプリケーションにおいて頻繁に登場しますが、これが実際何をしているかを大雑把に説明すると、以下のようになります。

「ユーザーはログインするために ID とパスワードをウェブサーバに送り、サーバは自身の持つユーザー情報と付き合わせて ID とパスワードの組み合わせが有効であることを確認し、ユーザー情報にもとづいたコンテンツと一緒にユーザーがログインしていることを示す情報を cookie としてブラウザに送り、ブラウザはその情報を保存する。」

ただ、これを口頭で説明するのはつらいので、私の場合はブラウザの開発者ツールで cookie やリクエスト・リスポンスを見てもらったりします。

これを理解していると、「ログインさせなくてもサーバーから任意の cookie を発行すれば、ユーザーを識別できる」「ウェブブラウザ (クライアント) が変わるとログインしているという情報は原則引き継げない」などといったことが導き出せるようになります。

このように、普段使っている技術の背景を理解するということで、業務の精度や速度向上に繋がり、また、チームのメンバー間が共通の言葉で議論することができる下地を作れると考えられます。

3. ツールを使いたい

技術を学ぶという場合の次の観点は、エンジニアが使うツールを使えるようになりたいというものです。

たとえば、クックパッドにおいて、GitHub Enterprise はエンジニア以外にも積極的に使われているツールです。

サービス開発のチームが仕様を検討したり、ユーザーサポートが各部門のエンジニアやマネージャとお問い合わせを受けた内容について議論するのに使われています。

GitHub にはレポジトリのファイルを直接編集して pull request を出す機能があります。 *3 そのため、文言を修正したいなどの要求はエディタを開くことなく GitHub で完結できるので、エンジニア以外の人にも扱うことができます。

別の例として、サービスディレクターが仮説の検証のためにデータを分析したいという場合、SQL で直接データを引き出すというケースも多くあります。

クックパッドでは、リレーショナル DB へのアクセスには、phpMyAdmin や phpPgAdmin などの UI と、その利用方法が記されたドキュメントが整備されています。 そのため、ターミナル (いわゆる黒い画面) で操作することなく、データを引き出して適切なフォーマットでダウンロードすることができるようになっています。 *4

このように、各個人ができることの幅を増やすことで、誰かに作業を依頼することが少なくなり、効率的に業務を進めることが期待できます。

4. ソフトウェアエンジニアとして活躍できるようになりたい

最後に、ソフトウェアエンジニアの役割で活躍できるように技術を学ぶという例です。 クックパッドには入社後にソフトウェアエンジニアに転向した社員が何人かいます。

直近だと、2015年4月に新卒として入社した土谷が例として挙げられます。 彼は、入社後の集合研修のあとに技術部に配属され、エンジニアになるための教育プログラムを受けています。 彼がエンジニアリングを学ぶ過程を以下のエントリーで記述しています。

総合職で入社した新卒がクックパッドでエンジニアになるまで - クックパッド開発者ブログ

エンジニア以外の役割の人がエンジニアとして活躍できるようになる道筋は、今までクックパッド社内で人それぞれでした。 土谷の例は、技術教育を体系化する試みの一環でもあり、トレーニングを受ける土谷とトレーナーであるわれわれが一緒に、どのような道筋でエンジニアとして活躍できるようになるのかを模索しています。

おわりに

本稿では、技術を学ぶこととはどういうことなのか考察しました。

技術を活かすことは、エンジニアチームだけの課題ではなく、会社全体で取り組む課題だと考えており、今年度からクックパッドの新卒社員研修では、総合職の新入社員にも技術を学ぶ研修を実施しています。 *5

この記事が公開される日に、2017年のクックパッドの新卒採用の募集が開始されました。 一緒に学び、クックパッドと一緒に成長してくれる方の応募をお待ちしております。

さあ、一緒に次のステージへ | クックパッド株式会社 採用情報

*1:このハンズオンは、クックパッドの内定者やインターンシップ経験者などに対してオフィスの会議室を開放し、個人のプロジェクトを進めたり技術の勉強をする場を提供するエンジニア自習室という取り組みの中で生まれ、主に技術に明るくない人にウェブ開発を体験してもらうという動機で作られました。

*2:たとえば、 Rails Girls のリソースなど

*3:https://help.github.com/articles/editing-files-in-your-repository/

*4:ここで、MySQL 用の phpMyAdmin と PostgreSQL 用の phpPgAdmin が両方用意されているのは、永続化データのほとんどは MySQL に、一部ログデータなどは PosgreSQL クライアントから利用する Amazon Redshift に保存されているという事情があるからです。

*5:クックパッドの新卒研修2015 - クックパッド開発者ブログでその一端を述べました。

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('http://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('http://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/