Pastalablog in はてな

時代はブログ! 日記もあるよ→http://pastak-diary.hatenadiary.com

はてなインターンで美少女に出会ってドクターペッパーを40本飲んだ話

はてなインターンに参加しました。
参加したあと、特にやることもなかったので、寝る起きる食事インターネットの人間生活の基本に忠実な生活をしていましたら、他のインターン生が続々と意識の高い最高の感想エントリーを書き上げていて、度肝を抜かれ、はてなブログにはトピックページが開設されていました。
トピック「はてなインターン2013」 - はてなブログ
更には 丸坊主をかけたPerlハッカー id:moznion vs Pythonアイドル id:cocodripsはてブ数勝負一騎打ちが展開されているという世の中になっていました。

id:moznion 氏におかれましては、大変な精神状態だとインターネットで見聞きしました*1ので是非とも頑張っていただきたく思いますし、 id:cocodrips 氏におかれましてもチームメイトとして2週間共に頑張った仲間として頑張っていただきたく思います。

ちなみに個人的にはこの記事をありがたやありがたやと思いながら読んでおりました。

ただ、現在はてなインターントピック内では、ダントツでgithub上の「はてな教科書」に、iOSアプリ開発など新規のテキストを追加しました - Hatena Developer Blogはてブ数を稼いでおり、やはりこのテキストを用いて直に学ぶことが出来たインターンは素晴らしい体験だったのだなぁとひしひしと感じています。

表題について

タイトルの前半部分については、一緒にブクマチームで過ごした id:cocodripsことPythonアイドルぱいせんのこちらの記事をオマージュしました。
YahooインターンでC++を愛する美少女に出会った話を書こう - ぴよぴよ.py

後半部分はインターン中の活動についてです。
はてなには皆さん御存知の通り、フリードリンク制度があり、素晴らしいことにドクターペッパーが常備されていました。
それを日々愛飲しつつ記録をとったものがこちらになります。

はてなグラフ - Pasta-Kのグラフ
関連エントリー:インターンの途中成果です - ぱすたけ日記
日々、ドクターペッパーを摂取することが出来るはてなインターンは本当に素晴らしい体験でした。ありがとうございました。

はてなインターンについて

僕自身、中学3年の頃にはてななりTwitterなりのSNSを使い出したのですが、その頃から京都に住んでいた縁もあって*2か、はてなインターン経験者の人たちやはてなの人たちとも交流があって、ずっと自分もはてなインターンには行きたいと思っていました。
前置きが長くなった感じもありますが、はてなインターンに参加した感想などを書いていきたいと思います。

内容について

開始前

開始前にはまず応募をします。
応募要項はサイトとかに載ってるので適当にチェックをすると良いです。
このページとかに載る可能性が高いと思います。
http://www.hatena.ne.jp/company/staff/intern
聞いた噂によると「技術力しか見てない」とのことですので、githubとかで普段からコードを書いてたりすると評価されたりするかもしれません。
小論文については、読める日本語を心がけましょう。日本語が難しくてなかなか書き終わらなかったことだけは記憶しています。
あとはメールを送信します。
メールを送信しても、特に受領メールとかは来ませんが、ボーっとしてたら唐突に「はてなインターンに参加しても良いよ」的なメールが飛んできます。

ここで重要なことがあります。
それは「面接」がある場合があるということです。

この事実を逃していると、インターン生同士で集まった際に、
「面接の時にはてなに注文いっぱい言ったんだけど、それを実際に作ることになるとは〜」やそもそもの「面接の時、何答えた?」という会話に突入した時に衝撃を受けることになりますし、
感想エントリーにおいても

id:Pasta-K : 面接大変だったよね

http://krrrr.hatenablog.com/entry/2013/09/08/104152

という文言を書かれることになりますので、来年参加される皆さんにおかれましては念頭に置かれることをおすすめします。
そして、参加しても良いよメールが来ると、はてなグループに招待されるので、そこの指示に従って課題とかをやりつつ、過ごすと良いと思います。

はてなインターン前半

前半の2週間はざっとこんな感じ。

  • Perl の基本的な文法・書き方
  • DB の基礎知識、SQL の知識、O/R マッパとはなにか
  • Javascript の基本的な文法・書き方、イベントドリブンなプログラミングの知識
  • WAF (Web Application Framework) の知識、使い方
  • 簡単な iOS アプリの作成
  • 評価アルゴリズムの検討・考察 (講義・演習では、はてなブックマークのホットエントリーアルゴリズムを題材に)
  • Web サービスの企画ワークショップ
はてなインターン2013に参加して参りました、そして与太話がしたい - その手の平は尻もつかめるさ

それぞれの内容ごとに講師のはてなスタッフさんから午前中はみっちり講義、午後は課題でコーディングという感じでした。
講義中のテキストはgithub上の「はてな教科書」に、iOSアプリ開発など新規のテキストを追加しました - Hatena Developer Blogで公開されているものとほぼ同一の物でした。
日々の課題はGHEでPull Requestを送る形で提出し、講師やメンターからのコードレビューやコメントを頂き、修正した物を期間内に再提出するという仕組みでした。
この中でPerlやJSのコードの基本的な書き方を抑えたり、DBやSQL、WAF更にはiOSに至るまでの知識を叩きこまれます。
PerlやJSについては講義があったり事前課題があるといっても、一定以上の知識は要求されるので、基本的な考え方や文法にしっかり慣れておくことは重要だと思いました。自分はPerlの書き方になかなか慣れることが出来なくて、課題をこなすときに結構苦労しました。
課題も結構ボリュームがあって、詰まったら講師や自分たちのメンターに尋ねながら格闘するという感じでした。
ちなみに自分のメンターは id:aerealさんにお世話になりました。ありがとうございました。
また、この期間中には京都観光*3や初日には歓迎会などもありました。
また初日の開始直後の様子は日記にも書いてますので参考にしてください。
http://pastak-diary.hatenadiary.com/entry/2013/08/12/135544

はてなインターン後半

ここからはチーム分けです。
僕は結構ギリギリまで悩んだのですが、長年自分がユーザーとしてお世話になっている「はてなブックマーク」のチームにjoinさせていただきました。また、チームにはインターン生からid:ast_jさん、id:tonerorinさん、id:cocodripsさんがjoinしていました。
僕はid:cocodripsさんと一緒にid:nobuokaさんにメンターについて頂いて、はてなブックマークGoogle Chrome拡張の新機能リリースを行わさせていただきました。
コメント一覧ページの関連商品の精度を改善し、Google Chrome 拡張から人気のコメントが確認出来るようになりました - はてなブックマーク開発ブログ

  • ページについたブックマークの「人気のコメント」を表示する機能
  • 表示するコメントの種類を切り替えるユーザーインタフェースの改良
  • ショートカットキーから Google Chrome 拡張を起動する機能
  • コンテキストメニュー(右クリックメニュー)から Google Chrome 拡張を起動する機能
  • コンテキストメニューから選択状態のテキストではてなブックマーク全体を全文検索する機能
  • 選択状態のテキストをブックマークの際のコメントとして簡単に引用する機能
  • コメントを入力した状態で、そのページに別なURLが提示されていた場合、URLを変更すると入力中のコメントが消えてしまう不具合の修正
コメント一覧ページの関連商品の精度を改善し、Google Chrome 拡張から人気のコメントが確認出来るようになりました - はてなブックマーク開発ブログ

また、窓の杜さんにも紹介して頂いていました。ありがとうございます><
「はてなブックマーク GoogleChrome 拡張」v1.4が公開、人気コメントをチェック可能に - 窓の杜
この中のコンテキストメニュー(右クリックメニュー)関係の機能コメントが消える不具合の修正を主に担当させていただきました。
後者のコメント欄に関する不具合については、自分自身がユーザーとして使っている中でストレスに感じていた部分をチーム配属後のミーティングでアイデアとして提案させて頂いて、今回直接修正に関わることが出来て嬉かったです。
この不具合についてはあまりピンと来ない人も多いと思いますので、成果報告会用に作成したGifアニメを貼っておきます。
修正前

http://gifzo.net/BMxE3dupDkD
修正後

http://gifzo.net/qkVEgtaiEo

コンテキストメニューについても実装をさせていただきました。
この機能に関しては賛否両論はてブコメなどを中心に色々とコメントが付いていて、はてなブックマークという多くのユーザーを抱えるサービスの拡張に手を入れてリリースすることの影響力を特に感じました。
言い訳のようになってしまうのですが、Google Chrome拡張機能のコンテキストメニュー周りの実装に絡めて少しコメントしておきます。
正直、今回のコンテキストメニューの実装に当たっては「どのメニューを表示するか」という部分にコーディングよりも時間を割いた気がします。
どのメニューを表示するかに関してははてなブックマークのFirefox拡張を参考にしたのですが、

  • Firefoxではコンテキストメニュー表示時の一覧に任意の個数のメニューを追加できる
  • Google Chromeでは2つ以上のメニューを追加すると「<拡張名>▶」の中に格納される

という実装の差異があり、苦肉の選択で現在のようなメニュー構成を選ばせていただきました。
また、Mac上のGoogle Chromeでリンクテキスト上でコンテキストメニューを表示させると、リンクテキストが選択されるという実装になっています。
そのために拡張でコンテキストメニューを設定する際にはそのメニューを表示させるcontextを設定するのですが、

contexts ( optional array of enum of "all", "page", "frame", "selection", "link", "editable", "image", "video", "audio", or "launcher" )

https://developer.chrome.com/extensions/contextMenus.html#method-create

この中の「link」と「selection」の条件が同時に必ず発火*4してしまうために表示されるメニューが多くなってしまうということにもなってしまっていました。

id:nobuokaさんにはJSの文法のことから、実装の相談、gitのコマンドに至るまで多岐に渡ってサポートしていただきました。細やかなコードレビューも勉強になることばかりでした。
また、隣の席で意外な接点が発覚したid:moretさんにはコンテキストメニューのUIのことなどで相談に乗っていただきました。
ありがとうございました。

これを読んでくださっている方は便利になってると思いますので、是非インストールしてこの記事をブクマするなりしてお試しいただければと思います。よろしくお願いします。
Chrome Web Store - Hatena Bookmark GoogleChrome extension

id:cocodripsさんについて

現在ブログのコメント欄が大人気の「Pythonアイドル」「あいどるぱいせん」ことid:cocodripsさんについて記述しておきます。
自身のブログにも書かれてましたが、

Ctrl+F押すとFacebook開きますよ。

Perlの書けない女子大生がはてなインターンに参加してきた - ぴよぴよ.py

の他にも初日の環境構築時にはMySQLが3つインストールされていたなどの逸話を有しています。
はてなブックマークチームに所属していた時には、通りがかりのid:jkondo社長から「野生っぽいね」というコメントを引き出した強者でもあります。
また、id:cocodripsさんは独特の世界観を持っていて、非常に楽しませてもらいました。

id:Pasta-Kくんは若いのに私の意味のわからない発言をいつもちゃんと聞いてなだめてくれる最高の相方でした。

Perlの書けない女子大生がはてなインターンに参加してきた - ぴよぴよ.py

ここでid:cocodripsさん作の最終日の成果報告会スライドのダイジェスト版を掲載しておきます。

「ユーザー大増殖中」の背景にいるのが「子どものひよこ」で、他のスライドにいるのは「大人のひよこ」とのことでした。
特に面白かったエピソードとしては、インターン生はチームごとにid:jkondo社長と一緒に食事に行く通称「囲む会」というのが開催されるのですが、その時に社長id:jkondoさんとCTOのid:stanakaさんを前に上のスライドダイジェストにも出てくる「はてなブックマークは嫁」理論を展開していたのが非常に印象に残っています。

追記

ブコメより

何度でも言おう、美少女画像も貼らずにスレ立てとな?

http://b.hatena.ne.jp/nori090/20130919#bookmark-162111598

貼りたい気持ちは山々なのですが、


という諸事情があるので、Pythonアイドルが嫁イメージイラストを描いている様子のGifアニメでご容赦いただければと思います。よろしくお願いします。

きっと公式のインターンレポートが公開されれば写り込んでいるのではないでしょうか。
期待しましょう。

その他のこと

インターン期間中は美味しいまかないが毎日出ます。
すごく美味しいので毎日食べまくってしまいます。
写真は id:FromAtomさんの感想ブログにいっぱい載ってるのでそっちを御覧ください。
はてなサマーインターン2013と、僕たちの夏が終わった。 - 文字っぽいの。
体重計は持ってないので細かいことは分かりませんが、少し太ったような気がします。気のせいかもしれません。
金曜日はカレーが出ます。これが楽しみで金曜日も頑張れます。最高。
あと、美味しいご飯を食べながらインターン生や社員の人と話すのはとても楽しかったです。最高。
「最高」という言葉ですが、他のインターン生のブログにも書かれている通り、インターン中は「最高」「最悪」「めでたい」「禅の精神」などの言葉がバズワードになります。大体、毎日言いまくってた記憶があります。最高!

他のインターン生も書いてるけど、ずっとコード書いてると発話が適当になって「最高」「最悪っぽい」「ワイワイ」しか言えなくなる。

もう24歳なのに、はてなインターンに参加した - マルシテイア
  • デメリット
    • やばい,最高,最悪,などといった言葉の価値が減る
はてなインターン2013に参加した - krrrr38.com

本名についても記しておきます。
はてなインターンでは基本的にはてなidで呼び合います。社員さんもidで呼び合っています。
逆に本名を名乗る機会はありません。自分は期間中に一度も本名を名乗りませんでした。
id:moznionさんが物を注文した時にオフィスにその物が届くも、id:moznionさんの本名が知れ渡っておらず、宅配業者が荷物を持ち帰ってしまうということもあったので、たまには本名を周知しておくのも良いかもしれません。

インターン仲間について

インターン仲間は全員仲が良く、毎日定時後にはご飯に行ったり、ゲームしたりしていました。
趣味のコードの話やエディタの話などなど語りだしたら止まらない人が多くて、とても楽しかったです。
皆さんのお陰で充実した日々を過ごせたと思います。
id:astjid:amagitakayosiid:cocodripsid:c255id:FromAtomid:moznionid:krrrrid:questbeatid:tonerorin
皆さんありがとうございました!!!
あと、名誉インターンのid:gigi-netさんにもインターンの先輩としてお世話になりました。承認します!!!!!

今までずっと1人でコードを書いてきたのですが、はてなインターンで初めて自分のコードが評価されるという機会に恵まれました。
そこでコードレビューや他の人のコードを読んだりすることを通して、「コードが意図通りに動く」だけではなくて、コードの「設計」であったり、「可読性」であったりの重要性を本当に痛感しました。
自分はまだまだ他人の書いたコードを読んだりとか、コードの全体の設計を考える経験が浅いという自覚を強く持ちました。
これからプログラミングや計算機科学を学んでいく上で1つの指針というか目標のようなものを得たような気がします。
「若い」という評価(?)を多くの人から頂いたように記憶しているのですが、そんな「若い」状態でこういう経験が出来たことを本当に感謝しています。
このような機会を頂いたはてなの皆さんや共に最高の夏を過ごしてくれたインターン仲間たちに感謝します。

この記事を書いていたら10代が終わっていたPasta-Kでした。

関連エントリー

おまけ

京産大の安田先生や「詳解 Objective-C 2.0 第3版」の萩原先生たちが主宰されている「iPhoneプログラミング勉強会京都」が月1回ペースで、はてなのセミナールームで開催しています。僕は広報部長を仰せつかって後ろのほうで座って眺めてますので良ければお越しください。(宣伝)

*1:”ここの所「アイドルに勝ちたい!まけられない!勝たなければセップクしかない!超えられるなら、毛髪をかけてもよい!きえええええ!!!」と大騒ぎしていて、さっさとアイドルのブクマをぬいてもらってmoznion君(彼女募集中)におかれましては精神を安定して頂きたい所です。” via http://hachiojipm.github.io/entry/2013-09-12-01.html

*2:一番最初にオフィスにお邪魔したのは、はてなキーワードのリリース前ユーザーテストの時で、その後2009年の年末にg91で見学に行ったりもしていました。→ [http://pastak.hatenablog.com/entry/20091228/1261961459:title]

*3:今年は嵐山電電宮や錦市場に行きました

*4:文字列選択時は「selection」のみが発火