Lambdaカクテル

Common LISPが好きなWeb屋さんです 自宅サーバやフロントエンドもできます

打ちのめされるようなすごいインターン - はてなサマーインターンに行ってきました

f:id:Windymelt:20140906225942j:plain

(写真はインターンが終わった後で皆で行った三嶋亭のスキヤキ。最高じゃん!?)

はてなインターン2014に参加してきました。この記事は、その感想エントリです。

記事修正: id修正、リリースした機能に関する修正、typo修正 @ 9/11

記事修正: 他のインターン生のブログを追加 @ 9/30

要約

  • 個性的なメンツだった
  • 自分で作ったブログアプリに変な機能をつけて遊んだ
  • はてなブログにいろいろ新機能を付けた
  • はてなのみなさん、ありがとう

どうやらインターンブログの各所で僕の事がScalaおじさん呼ばわりされているようですね。その認識で正しいです。

P2P2chというP2Pな掲示板をScala+Play2+Akkaで作っています。ちなみに開発中なのでろくに動きません。あしからず。

僕がはてなインターンを知ったのは去年の夏頃でインターンブログを介してのことだった。個性的な面子と個性的な会社の絶妙な組合せで開発されていくソフトウェアとその風景は僕の心に強く焼き付いた。 そしてその一年後、僕はそのブログをこうして書く立場にある。一ヶ月近く続いた未知の体験は、何もかもが僕にとっては新しく、あらゆる所に学びがあった。このインターンを介してエンジニアをして僕は大きく成長したように感じる。この記事で、はたなサマーインターンに興味を持つ学生の後押しになればと思う。

正直、ブログを見て受けた参加前の印象は「ドクペイベント」でした。ごめんなさい。

参加へ

インターンに参加する旨のメールを送信してからしばらくして、選考に通過した旨のメールが届いた。面談を実施することがあると記載されていたので気構えていたが、どうやら大規模コースにのみ面談があったらしい。

インターン生には事前課題が課され、期日内に解答をGithubで提出しなければならない。Githubを使うあたりがオシャレだなあと感じていた。

課題はPerlJavaScriptで書くもので、簡単なLTSVパーサを書いてその結果を表示するという感じのものだった。僕はPerlを初めて触ったので大学図書館から「初めてのPerl」を借りて読み込んだ。オライリーの本は間違いないなあ。

インターンの内容

はてなインターンは二つの期間に分かれている。

前半期間

前半の二週間は各種のプログラミング言語やデータベース等の技能と知識の修得を目的としたワークショップ的な期間で、午前中に講師として社員さんに講義をしていただき、そこでインターン生には講義で学んだ内容を応用した課題が出される。そして午後の時間はその課題を解くための時間となる。この時間じゅう、社員さんが数人メンターとしてつきっきりでコーディングのサポートをしてくださった。

メンター駆動開発

課題は翌日の午前十時までに提出しなければ失格?となり、インターンの後半過程に進めなくなってしまうから皆必死でメンターの助けを借りながらひたすらコードを書き、プログラムを走らせ、デバッグに頭を抱える。こんな日々が二週間続いたのだが、案外苦しくない。むしろ様々なテクニックをメンターから教えていただけて僕は嬉しかった。

ところがどっこい、なんと課題は提出するだけでは終わらず、メンターのコードレビューを通過しなければならない。これに通過しなければ再提出だ。前半期間中に再提出ができなければ後半過程にまで進むことができない。そういうわけでホテルの中でもコードを書かねばならずに参った。それでもやはり、同じインターン仲間とコーディングテクニックやエディタ、プラグイン、流行の技術について語り合いながら共通の課題を助け合いながらこなしていくのは存外の喜びだった。僕は身の回りにエンジニアの知り合いが居ないので技術的な話を一緒にするという経験をこれまで持つ事ができなかったのだ。

はてなインターンではエンジニア仲間が沢山できるから、エンジニアの知り合いが少ないとお嘆きの方は、是非応募をおすすめします。

はてなでは定時は七時だけれど、インターン生は(進捗がヤバくて)みんな残って実装するものだからメンターさんを困らせていた。ありがとうメンターさん。なんというか、独特の雰囲気の中で開発が進んでいって、そして例年通りインターン生のボキャブラリーは壊滅的な打撃を受けて「やばい」「わいわい」「いい感じ」「最高じゃん」等の言葉しか発しなくなる現象が発生した。つらい。

ひととおり実装の目処が付いたらみんなでご飯を食べに行った。社員さんたちが烏丸御池周辺のお店を色々と紹介してくれて満腹になった。

さて、前半期間を通した課題は、ブログツールを作成することだ。ブログツールを作成するために講義と課題が出されていて、前回の課題で書いたコードが次の課題でも普通に使われ、どんどんコードが積み上がっていく。僕は最初この事に気が付かなかったので適当に実装していたら、後からヤバいという事に薄々感付いてきて急いでコードを修正していった。最初の設計は大事です。

おもしろ機能

ブログツールの最後の課題は、自分で面白機能をそのブログツールに追加することだ。まず講義で「新機能を開発するワークショップ」が開かれ、エレベーターピッチと呼ばれる手法を使ってアイデアを絞り込んでいく。インターン同士でアイデアのメリットやデメリットを洗い出し、最終的に一人一つの企画を実践することになる。僕は、「ブログに線を引いてコメントを残す機能」を提案し、実装することになった。他のインターン生も、例えば「一定期間が経過すると消滅してしまうブログ(id:doughnutomo)」や「記事を書くのに時間制限が付いていて超過すると勝手に投稿されてしまうブログ(id:yebis0942)」といった、常軌を逸した独創的な機能を作り出していて、創作意欲が刺激された。しかし僕は設計が甘かったらしく、自分で決めた設計通りにコードを書くのがうまく行かずにバグを沢山出したり全然コーディングが進まなかったりした。少ない製作期間もあいまって、インターン生全員で変なテンションになって夜遅くまでコードを書いていた。あれは傍から見たら相当奇妙な光景だったと思う。

残念ながら最終日に行なわれた成果発表会では優勝できなかった。優勝したのはid:spring_rainingの「背景画像にアニメーションするGIFを貼れるブログ」だった。UIが良くできていて、使い勝手にも配慮した素敵な面白機能だった。僕は悔しかったというよりは、なんとか自分でコードを書ききったという達成感があった。

後半期間

後半期間は実際にはてなで動いているプロダクトのチームに配属され、何らかのリリースを行なうことになる。僕はブログチームに配属された。アイデア出しの過程を経て、ブログチームに配属されたインターン生はさらに2つの班に分かれた。

僕とid:mactkgはoEmbed/記事埋め込み機能の追加をする事になった。最初はすぐに終わるだろうと思い込んでいたけれど、いざプロダクトコードを触ってみるとなかなか進まずにmactkgに頼りきりだった。趣味でなら適当に済ませてしまうような事でも、実際のサービスで使われるコードを弄るときでは勝手が全く違って、後から他の人が見た時でも意図がしっかり把握できるコードを書かなければならないのだなと、一つ勉強になった。

そうこうしているうちにある程度oEmbedがまとまってきて、ブログの埋め込み表示機能も書けそうだということで、ここからはデザイナーのid:uedayさんとGithub Enterpriseを利用した共同同時開発体制で作業が進んでいった。途中で色々とつまずいたけれど、id:hitode909さんが定期的に助けにきてくださったのでなんとか生きながらえた。

最後の方では告知の文章とかを書いていて、伝えられる文章って難しいなあとコーディング以外の難しさを感じた。

id:mactkgも同じような感覚だったみたいだ。

よい文章を書きたい - 半空洞男女関係

最終的にブログカードという名前でリリースされることになる機能はそうやって開発され、ついでに他のサイトにも対応させてしまおうというのでOGPに対応させて他のサイトをいい感じにブログに埋め込めるようになった。

インターンブログチームによりリリースされた機能

短い期間ではあったけれど色々な便利機能をリリースできてよかった。

はてなブログの記事を紹介しやすくしました。URLを貼るだけで、コンパクトに整ったブログカードを貼り付けることができます【追記あり】 - はてなブログ開発ブログ

上一つはリリースしたわけではないけれど関係のあるリリース。

はてなブログoEmbed APIを公開しました。ブログカードの情報をAPIで取得できます(開発者向け) - はてなブログ開発ブログ

記事へのリアクションがわかる「言及の一覧」パネルを追加しました - はてなブログ開発ブログ

「ブログカード」をOGPなどに対応しました。さまざまなWebページをコンパクトに整形して掲載できます - はてなブログ開発ブログ

他のインターン生について

他のインターン生とそのインターン記事も紹介しておきます。例年通り、情報系じゃない人が多いらしい。ちなみに僕は法律勉強してます。。。唯一の文系です。。。好きな条文は民法第709条です。

各方面から同じ事をするために集まると、意見が融合したり異なる分野の知識が衝突したりしていいですよね。

随時追加します。

id:doughnutomo

インターンではおそらく唯一のiPhoneアプリ開発経験者。スゴイ。Xcodeが定期的に落ちたり勝手にログアウトしたり大変そうだった。理学系の人。古参のマカー。漢字Talk!!PowerPC!!*1

「はてなインターン」という革命について - どーなつの連続性定理

id:masawada

端末の人。端末を5つくらい持っている。それだけの端末を保有する理由が全く理解できないが、持つ事に意味があるらしい。途中で端末を紛失したと狼狽していたが、あっさり自室で発見されたようだ。電子工作的なものからインフラまで、幅広い知識を持っているなあと感じた。前半過程で作成したポケットミクのChrome用コードを公開するらしい。プレゼンがすごくうまい。自宅サーバの人でもある。

はてなインターンに参加してクレジットカードを作ってアイロンを買った話 - あんパン

ちなみに飯テロ.inというサイトをやってる。(埋め込みたいところだがOGPがないのでリンクだけだ!)

飯テロ.in - 飯テロ画像共有サービス

id:mactkg

名前をどう読むのかでインターン生が騒然としたという。(うそ) コードを読むのが速いという印象を受けた。電子工作やフィジカルコンピューティングなどに詳しいようで、先日は山口のYCAMにいたらしい。Web1.0を愛しているようだ。面白い話を色々知っていて、奥深い人。

はてなインターンに行って高2から使ってるはてなブログのコードを触った - 半空洞男女関係

id:yebis0942

謎が多いという扱いになってしまった人。実際に謎が多い。ブログが長いことで知られる。彼は一日の出来事の中から的確に興味深い話をチョイスしてくるので面白い。機械系の人。激辛カレーを一緒に食べに行ったら辛さでダウンしてしまったのですまないと思っている。

id:spring_raining

名前は春雨から。JSが得意のようだ。デザインに造詣が深い。前半課題発表会で優勝したので酒と場の勢いでインターンリーダーにされてしまった。実権は無い。

はてなサマーインターンに参加してきました(写真多めで) - harusamex.blog

id:flankyhiro

大規模コースの人。インフラに詳しい。前半課題では大学での研究内容を流用応用して文章の感情を判定していた。ナイーブベイズ最高!!いきなりグループウェアの最初のエントリにインカ帝国史について書き込んだ実績がある。

イベントいろいろ

はてなでは隔週くらいの頻度で定期的にイベントが開催されるらしいのだが、八月はインターンも居るという事で様々なイベントが催された。

TGIF 

Thanks God It's Friday!です。小さなパーティが開かれます。その二週間で行なわれたリリース等の発表がここで行なわれ、一同がめでたい気持ちをシェアする行事です。

LT大会

はてなではTGIFに合わせてLT(Lightning Talk)大会が開催されるようだ。これは、参加者が各々話題を持ち寄りLTを行うことで互いのプレゼン能力を高めようという催しだ。皆さんはすっかりツワモノといった感じで、完全に発表慣れしていたのが印象的だった。僕も先日「私立プログラミングキャンプ」に参加してXFDを作った事を思い出したので「XFDのススメ」といった内容で飛び入り参加したけど緊張してタジタジしてしまった。ちなみにXFDとはExtreme Feedback Deviceの略で、標準とは一味異なる通知手段のこと。私立プログラミングキャンプに参加した時の話についてはこの記事にも書いているのでよかったら見てくれると嬉しい。

私立プログラミングキャンプに行ってScala+PlayでWebSocket通信してみた - Lambdaカクテル

たしかこのLT大会の中でid:sawaaccioさんが「京都で見掛けた面白い看板」の話をして僕は腹を抱えて笑ったのを覚えている。

囲む会

社長を囲んでいろいろ話をする会。これについて記事を書きそびれていたので後日書こうと思う。

社長に色々訊いたり有り難いお話を聞く会であった筈なのだが、途中から皆が好き勝手に飲むだけの会になってしまった。

囲む会 エピソードII

なんと会長を囲む会も催された。これは会社のはからいではなくid:doughnutomoのはたらきかけによるものである。

浮いてないサービスの話 - Lambdaカクテル

はてなインターンで会長と飲んだ話 - どーなつの連続性定理

サッカー観戦するぞい!

社長がサッカーの招待券を貰われたらしく、僕たちも連れて行ってくださる事になった。オクトーバーフェストをやっているというので少し早い時間に行って飲んでいたら、mactkgが完全に出来上がっていた。諸行無常

試合は引き分けだったが、一丸となって応援するのは楽しかった。mactkgがどこぞやで入手した吹くと伸びるあのオモチャが社長のお子さんに大ウケしていた。シュール。

ボキャブラリが貧しくなる話

はてなでは語彙力が低下する難病が蔓延している。はてなではSlackという便利なチャットツールが使われていて、そこで各種の伝達を行なっているのだけれど、どんどん会話のコンテキストが濃密になっていって、「しゅっとする」などの適当な語彙で会話が成立するようになってしまう。その結果、前に述べた通りインターン生はボキャ貧になってしまったのであった。コワイ!

この病の後遺症がまだ僕には残っていて、友人に「最高じゃん!」などと発言などしています。最悪じゃん。

初めてエンジニアと触れ合った話

これも先程書いたことだけれど、身の回りにエンジニアが居て、気軽に相談とか会話ができる環境というのはとても大事で貴重なものだという事を実感している。人間って環境に大きく左右されるところがあって、さっぱりコードや文章をアウトプットしていなかった僕のような人がガンガンブログとコードを書くようになったのは身の回りにエンジニアが沢山居たからに他ならないと思うし、環境にはこだわってもいいんじゃないかなと思う。ここで言う環境というのは周辺機器とかイスとかも含まれていて、体に触れる物にこそ金を掛けるべきだと昔から言われている。

人間一人がやることには限界があるし、いくら凄い人でも一人だけでは何もできない。そういった凄い人の才能を開化させることができるのは、良い友人であり良い同僚のような、優れた人の集まりなんだなと感じた。はてなはそういった意味において最高な人で溢れていたし、最高な書籍が沢山置いてあって勝手に読めるし、まかないが最高だし、最高じゃん?

とにもかくにも、初めてコンピュータエンジニアと触れ合ったのがはてなインターンで良かったと思う。

まとめ&紹介

はてなインターンはこういう所です!!

  • 堅苦しくなく、ただ純粋に技術を吸い込むことを良しとする雰囲気
  • 素敵なエンジニア仲間が出来る
  • 社内に色々な趣味の人や世界観が存在するので知見が広がる
  • 社員と酒の席で豊かな交流ができる
  • hitode909さんはもう少し肝臓をご自愛ください

一ヶ月もの長きに渡りインターン生をお世話してくださった社員の皆さん、そして社長と会長、本当にありがとうございました。特に前半期間でメンターとしてお世話になったid:skozawaさん、iphoneアプリ製作でお世話になったid:cockscombさん、後半期間でメンターとしてお世話になったid:hitode909さん、そしてインターン前からお世話になったid:tomomiiさん、重ねてありがとうございました。

関連記事紹介

インターンに関連した自分の記事。

はてなインターン一日目 - Lambdaカクテル

情報のアウトプット能力を高めたい話 - Lambdaカクテル

プログラミングと血圧 - Lambdaカクテル

インターンの折り返し - Lambdaカクテル

はてブロに新機能! - Lambdaカクテル

浮いてないサービスの話 - Lambdaカクテル

インターンが終わりに近づいている! - Lambdaカクテル

競技プレゼンというものがあってもよいのではないか - Lambdaカクテル

会話のあるインターンが終わり、孤独な家へ戻る - Lambdaカクテル

私立プログラミングキャンプに行ってScala+PlayでWebSocket通信してみた - Lambdaカクテル

有益情報

本を持って行くな、せめて一冊か二冊にしろ

遠方組なのでホテルに宿泊するという都合、僕は暇潰し用に本を数冊持参したけれど、結構忙しかったのであまり読む暇はなかった。技術書なら社内に沢山置いてあるのでそれを読むほうが荷物の節約になる筈だ。

ついでに僕が持参してまともに読めた本を紹介。

帰ってきたヒトラー 上

帰ってきたヒトラー 上

帰ってきたヒトラー 下

帰ってきたヒトラー 下

ヒトラーがどういうわけか現代ドイツにタイムリープしてしまい、ひょんな事からお笑い芸人になってしまうコメディなストーリーだが、歴史ネタがふんだんに盛り込まれているので大戦中の歴史事情や有名人などを知っているとより楽しめる。

スマイルズの世界的名著 自助論 知的生きかた文庫

スマイルズの世界的名著 自助論 知的生きかた文庫

意識が高まるまじめな本。自己啓発はこの一冊があれば十分です。自分は怠けがちなのでたまに読んで喝を入れています。「チマチマ努力しろ!」というのがこの本の基底となるテーマです。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

エッセイを集めた形式なので少ない時間でも読めます。凝縮された智慧が集まっていてどこを読んでも勉強になります。

乾きやすい衣類を持参する

長期宿泊につきものな洗濯。乾かなかったら最悪な気分で出社することになるので計画的に洗濯し、乾燥しましょう。

メモをとる癖を付けよう

インターン期間中は未知との遭遇が頻発する。その時の感動を忘れてはいけない。メモしておいて後からブログに書くと情報が共有されて後から振り返るときに役立つ。

僕はリーガルパッドを持ち歩いてノートの代わりにしている。万年筆でゴリゴリ書いて破る。一時的なメモは用が済めば捨てられるし、記録になるものは後からPC等にまとめることもできる。プロッキーとの相性も最高。

習慣を学ぶ

面白い習慣を実践している人が沢山居るので、話を聞いたりするのも良いと思う。おすすめの本を訊くのも良い。

書籍&ボドゲ紹介

最後に、社員さんたちから教えていただいた本と定時後・TGIFで遊んだボードゲームを紹介。

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects’Archive CLASSIC MODER)

オブジェクト指向入門 第2版 方法論・実践 (IT Architects’Archive CLASSIC MODER)

名著。高いけどゆっくり勉強したい。

イシューからはじめよ―知的生産の「シンプルな本質」

イシューからはじめよ―知的生産の「シンプルな本質」

id:shiba_yu36さんが読んでいた。

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

  • 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
  • 出版社/メーカー: 早川書房
  • 発売日: 2012/01/11
  • メディア: 単行本
  • 購入: 21人 クリック: 325回
  • この商品を含むブログ (35件) を見る

子どもが体験するべき50の危険なこと (Make: Japan Books)

子どもが体験するべき50の危険なこと (Make: Japan Books)

私家版 青春デンデケデケデケ (角川文庫)

私家版 青春デンデケデケデケ (角川文庫)

社長のおすすめシリーズ。

ククカード アークライトゲームズ版

ククカード アークライトゲームズ版

メビウス ごきぶりポーカー

メビウス ごきぶりポーカー

*1:ところで昔のMacのデカいキーボード良かったのにどうして薄くなってしまったんだろう。アイソレーションキーボード嫌い。