エンジニアの未来サミットに参加してきました

9/13に行われた「エンジニアの未来サミット」に聴講者として参加してきました。遅ればせながら、まとめを書きます。

個人的に、第1部の「アルファギーク vs 学生」について思うところが多いので、そちらについて書きます。進行や議論の流れなどへの批判は、他の方が既にたくさん書いているので、あの混乱の中でも重要だと思った話がいくつかあったので、それを取り上げたいと思います。なお、アルファギークの方はブログなどを通して、少なくとも名前は全員知っていたので、多少の前提知識がある者の弁としてお聞きください。

エンジニアの未来サミット 

今回、討議された中で最も重要だと思ったのが、最後に金子さんがまとめで仰った

学生と企業側間での情報の非対称性

だと思います。naoyaさんの「学生がブラック企業に行かないようにすることが、業界にとって大事」という発言を受けて出てきた議論だと記憶しているのですが、学生はそういう企業を探す方法を知らない、という話。これは僕自身の経験からも、大いに頷ける内容でした。

 

そして、それを受けて出てきた、ひがさんの

社員がこういうことをしている、と伝えるのが大切

社員が情報を外に出しやすい空気を会社につくる

という発言が、一番生産的な結論だと思います。惜しむらくは、この議論が全く盛り上がらずに流れてしまったことですが・・・。

 

逆に、danさんやよしおかさんが自己責任を強調されるのは、どう見てもマッチョ論で、あまり生産的な議論につながるとは思えなかったです。

結局自分でやるしかないなんてことは、みんなわかってるに決まってるじゃないですか。それを強調しすぎたのは、明らかにマイナスな印象を生み出したと思います。だからどうするのか。どこから始めたらよいのか。そのためにOSSの話などが出てきたと思うのですが、うまくそちらに繋がらなかった印象があります。

エンジニアの未来サミット

 

以下、ログです。途中、danさんとよしおかさんの掛け合いで混乱した部分はあまりメモをとれませんでしたが、それ以外は概ね再現されていると思います。しかし開催の趣旨、全く無視されてましたね・・・。

 

開催の趣旨

IT業界へのネガティブなイメージを振り払う

 

このイベント開催の経緯

先日、IT業界のネガティブなイメージが拡大したイベントがあった・・・。それに対して、ひがやすをさんがアルファギークと学生を対談させればよいのでは、と発言。それに対して、技評が応えた。

 

パネラー紹介

ギーク側

dankogaiさん (以下、dan)

にぽたんさん ライブドア (以下、にぽたん)

naoyaさん (以下、naoya)

よしお ひろたかかさん (以下、よしおか)

ひがやすをさん (以下、ひが)

 

学生側

益子謙介さん (以下、益子(メガネスーツ))芝浦工大3年 IT系を目指している 会場ではメガネスーツと呼ばれていた 

新井貴晴さん (以下、新井)芝浦工大3年 

田村健太郎さん (以下、田村)一橋大 モバイルの会社でCTOやってる

源馬照明さん (以下、源馬)名古屋大学大学院 8月にはてなでインターンやってた

 

ひが

IT業界が泥ばかりでもないが、光ばかりでもない。

光の部分だけを協調しても意味がない。

いいところも悪いところも見て欲しい。

将来は学生の方にもIT業界に来て欲しい。

 

dan

SIに関してはあまりよく知られていない

 

よしおか

IT業界について整理したい。

ドメイン別

  • 基盤技術系 OS、コンパイラなど
  • エンタープライズ系
  • ミッションクリティカル系 社会の基盤、インフラ
  • Webサービス
  • 組み込み系

 

ビジネス形態別

  • ソフトウェア製品開発、販売
  • SI
  • コンサルティング
  • 運用サービス、サポート
  • Webサービス

それぞれの業界で、意見が違うという前提の元で討議してみたい。

 

 

ひが

SIer系

自身は自由に何をやっても良い立場

OSSをずっとやってる

いちおうSIerのこともわかっている

しかしプログラムを書くことを認めてもらっている

 

よしおか

ソフトウェア製品のサポート

OSやコンパイラを20年ほどやっていた

 

naoya

Webサービス

クライアントさんがいるというよりは、ユーザサイド

独立系

前職のISPでは協力会社がいたので、その立場もわかる

 

にぽたん

Web系

データセンターを持っている

インフラっぽいこともやっている

昔はWeb系の受託開発もやっている

かつてはそちらの方が中心だったが

 

dankogai

組み込み以外は全部やったことがある

現在はしいて上げればコンサルティング

しかし手を動かしている

まだ誰もやっていない

人が手をつけていないことをあえてやっている

 

泥のように働くってどういうこと?

はてなキーワードが表示される

 

にぽたん

肉体労働をやって泥まみれになったこともある

いろんな人のイメージがあるので、勝手に定義してしまうのはどうかと

 

naoya

記事を読んだ 少し泥を協調しすぎかな、と

金融などはフローを覚えるのに10年くらい働くのが必要と言う意味だったのでは

学生は自信満々で即戦力でいろいろやりたがる

そこにギャップがあったのではないか

 

自分も入ってすぐプログラムをばりばりかいて第一線で働きたいと思っていた

実際はあまりうまくいかなかった

大人数でものを作らないといけない

趣味のプログラムと業務のプログラムは結構違う

 

よしおか

IPAのひとが不用意に発言しすぎた

IT業界が協調されすぎた

メディアがおもしろおかしく書くのは当たり前

OSSに参加するのがオススメ

学生のうちからできる

企業に勤めているひとも、したたかにやっていく方法はある

下積みというところもあるが、自分でやるひとはいろいろある

 

ひが

学生に喋らせよう

 

益子

なぜこの業界だけ泥が協調されたのかよくわからない

 

dankogai

その間日も当たらない

泥の中には「評価されない」も入っている

 

新井

ITは最近になって注目されはじめた

 

田村

銀行とかもたぶん泥のように働いている

 

源馬

たぶんどの業界でもある

ドクターに進んでも、ニートになってしまう人もいる

自分の今の生活も、朝パソコンを立ち上げて、論文を読んでと、いろいろやっている

これは仕事だとすれば泥かも

 

dankogai

論文は外に出して評価されるから良いのでは?

 

源馬

(ドクターを出ても)就職する際には、論文より実務経験の方が重視されている気がする

 

 

35歳定年説

大学を卒業して10年働くと32歳だ

陽の当たるのは3年だけ?!

 

ひが

(自身は)プログラマーとして外に出だしたのが35くらい

プログラミングに価値を付けられれば、35歳とか関係ない

 

よしおか

ひとのせいにしてはいけない

35歳定年は(もちろん)法律で決まっているわけではない

いつになってもデビューできる

 

naoya

入社して1年くらいは下積みをやっていた

入社して3年目くらいでプロダクトが評価された

自分でプログラムが書き続けられるひとなら問題ない

しかし、どうやったらひがさんやよしおかさんのようになれるのかわからない人は不安になっているのではないか

31が目の前だが、だんだんマネジメントも増えてきた

これはこれで結構面白い

無自覚に管理職になってしまうのは結構辛いかも

35くらいまでに自分はなにがしたいのか、何が面白いかを自覚しておくのが重要

 

にぽたん

デザイナになりたかった

デザインセンスがなくてプログラマになった

プログラムが面白すぎた

下積み時代があったから今がある

某SIerの人と話したら、若いひとが早く上流に行きたがってた

コード書くのがいやなひとは上に行きたがる傾向にある

コードを書きたい人は、そういうことをさせてくれる場所を探す、作るかしないといけない

 

よしおか

OSSと受託では結構違う

受託で書いたコードは相手にもっていかれてしまう

OSSやWebサービスは自分がattachした充実感がある

OSSが受託開発より気持ちいいのは、書いたコードが自分のものになるから

 

田村 (CTO)

できるものに感心があるので、コードにはあまり興味がない

 

dankogai

ショック!

 

田村

プロダクトが目的であって、コードではない

 

dankogai

CTOがコードに興味がないってのは珍しい

 

naoya

コード自体に興味があるひとと、そうでない人は確かにいる

しかしCTOは興味を持った方が良い

 

源馬

コンピュータサイエンスの知識はある

はてなのインターンに参加して、あまり知識だけでは通用しないことを感じた

社会に貢献したいとは思うが、漠然としている

 

新井

アルバイトをしていて、お客様にサービスを提供して、お客様に喜ばれると嬉しい

 

益子

プログラムをやりたくて大学に入った

でも、だんだんコードだけではなく、製品のプロセスに興味が出てきた

コミュニケーションを取るためにプログラムを書く

 

naoya

世の中に新しいものを提供するには、技術を知っているひとの発想が必要

世界を変えるプロダクトを作るには、プログラマの力が絶対必要

 

益子

(技術を)知っているからこそ限界を感じてしまったりもするのでは

 

よしおか

それはないです

限界を決めているのは自分

言葉で説得するのではなく、コードで語るひとたちがハッカー

 

源馬

コードを書くこと自体が好き

外からやれって言われるのが嫌い

 

dankogai

コードを書いているうちにいつの間にか有名になってしまうのがアルファギークという理解でOK?

 

源馬

そうですね

自分はktkrリーダをOSSでリリースしている

 

dankogai

素晴らしい

そういうことをしていれば、学生のうちに注目されてしまうこともあるね

OSSにコミットしている人の中には、泥の段階をすっとばしている人もいる

好きなことをやっているうちに、起業してしまったひとなどはいるのか?

 

源馬

あまり知らない

 

dankogai

自分は嫌いなことを避けているうちにこの立場になった

 

にぽたん

アルファギークのことがよくわからない

自分はアルファギークだとは思っていない

 

ひが

泥にこだわってもあまり生産的にな話にならない

 

よしおか

ひがさんは10年間業務をしつつ、Javaに巡り会った

そしてそれを会社の主力事業にまでして、自由な立場を得た

自分で勝ち取った立場

 

ひが

Seasarやるまでは、普通のひとだった

プログラミングは好きな方だったが、会社の評価はあまりよくなかった

設計するひとたちがコードも理解できないといけない

丸投げモデルはいずれ崩壊するという危機感を抱いていた

会社がもっとコードを書ける人を育てていかないといけないという風潮になった

会社にもOSSを出して、コードをかけることをアピールした

 

よしおか

自分でやったというところがポイント

たいていのひとは手を動かさずに文句を言うだけ

ひがさんは成功例を出したというところが素晴らしい

 

ひが

一般的なエンジニアのキャリアパスが気要らないけど、どうしようもないと思っている人は結構いるのではないか

OSSなどで出して行けば、アピールできるかも

 

dankogai

OSSでは実はマネージャが不足気味

 

naoya

マネジメントは非常に重要

技術を極めたいと思っているひとがいて、世の中に貢献したいと思っているとする。

製品に結びつけて、世に出せるひとが必要。

 

マネジメントをする人にも技術力が必要

そうでないと技術の有無が見極められない

 

よしおか

経営や管理の重要性

ギークは技術技術と言いがちだが、マネジメントの重要性も認めるべき

技術をお金に換える人が少なすぎる

OSSが金になるか、という質問には意味がない

お金に結びつけるセンスがないひとが多いだけ

 

ひがさんに質問

なぜOSSか

 

ひが

オープンソースにするといろいろな人からのフィードバックが得られるから、出した

会社がきちんと認めていてくれても、OSSの考え方が好きなので外に出したと思う

 

ひがさんに質問

会社は変わったのか、特に丸投げの空気などは

 

ひが

変わっている。実際に新人研修でも、コードをきっちり教えるようになった。

 

質問

プログラムなどをあまりやらずにSIerに入ってしまうのが問題なのではないか

 

よしおか

それに対する回答はない

就職先は自分できちんと選ばないと

自分の人生

 

naoya

みんなちょっと自己責任論に偏りすぎ

会社に入ってからプログラムを書き始める人は結構いると思う

自分は会社に入ってから自分で勉強した

しかし忙しすぎて勉強できないところもあると思う

会社を辞めても良い

 

よしおか

教育やOJTを与えるのは経営者

それを与えないのは馬鹿な経営者

自分の人生は自分で決めなきゃ

 

SIerにいる人からの質問

入って数年は新しい技術に敏感だったひとたちが飼い慣らされてしまった

ビジネスモデルに負けている感がある

 

よしおか

それはその方がぬるま湯的で楽だから

ひがさんがはそこに危機意識を持っている

ウリがないところは、そのうち単価が安いところに駆逐されてしまう

 

よしおか

業界の中で、すごく苦労しているひとたちがいる

上流指向だけでは、差別化する要因がなくなる、ただの価格競争になる

全部自分たちの中でやれるSIerが付加価値を出せる

 

dankogai

外注が始まったのはいつ頃からか

 

ひが

就職する頃には既にあった

なぜSIerが存在するのか

日本企業は社員を勝手に解雇できない

社員を遊ばせておくのはもったいないので、下請けを使わざるを得ない

 

dankogai

SI業界はなぜ建設業界や公共事業的な流れに似ているんだろう

なぜ自分たちの中でやらないの?

 

ひが

簡単に首にできなにので。

 

dankogai

DECやIBMはそんなに簡単に首にしてたっけ?

 

よしおか

企業は利潤を生むために存在している

人件費を削ると、価値を生み出す力がなくなってデススパイラルに陥る

 

中国やインドなどでは一次受けがかなりの人数を持っているんで、あまりピラミッドは深くならない

 

よしおか

日本には技術を蓄積しないで、舌に流せばよいと思っている人たちが多い

中国やインドのひとたちは自分たちの技術をさらに磨こうとがんばっている

経営の問題

 

価値があることを認めさせるギークも少ない

みんなで高めあってもっともうけようとする人も少ない

スーツもギークもどちらも必要

技術者側がアピールしないだけ

 

益子

(業界が変わらないのは)ぬるま湯が気持ちいいからか

 

よしおか

そうだ

少しでもいい生活がしたいなら、したたかに自分から変えていくしかない

いやだと思うなら、自分が変えていくしかない

 

dankogai

ソフトウェアと製造業を単純に比較することは出来ない

中国で会社を作ったことはあるが、教育をしていない段階では、(中国人社員の生産性は)比べものにならないくらい低かった

 

よしおか

OSやコンパイラなどはそこまで進化していないのだから、経験のあるひとがOSSなどに集えば何かが起こるのではないか

 

dankoga

それには反対する!

彼らの知識が邪魔になることもありうるのではないか。

過去のコンピュータの知識が邪魔になることも

GFSを見ろ

 

よしおか

RDBMSなどは変わっていない

 

(混乱中)

 

田村

自己責任を押しつけてくるのはいやだ

 

naoya

どうやってそういう会社を探す?

 
エンジニアの未来サミット
 

田村

リクナビなど以外の情報の取得方法がわからない

 

naoya

学生がブラック企業に行かないのが淘汰に繋がって良いが、企業もどうやって伝えれば良いのかわからない

 

益子

離職率が36%

ネガティブ転職が多い

ビジョンが見えてなくて適当に入った会社だから、簡単にやめる

次のビジョンもない

自分が何ができるのかわかっていない

自己分析能力が欠けている

 

源馬

起業することで社会を変えることが出来る

日本は起業するのに優しい社会か

 

田村

企業すること自体は難しくない

ただ、学生間での情報の格差がすごい

自分はたまたま起業系のサークルにいたから情報が豊富にあったが、普通にしていたら考えもつかないと思う

 

益子

就職サイトでみてもどこか良いのかわからない

文で差別化なんかできない

職場を見せるインターンのようなことをどんどんやるべき

 

よしおか

それは本当にその通り

 

ひが

社員がこういうことをしている、と伝えるのが大切

社員が情報を外に出しやすい空気を会社につくる

 

ひが

ピラミッドのトップにいるSIerは潰れてしまえ、と思っている

SIerにいるなら会社を変えてみる努力もするべき

 

dan

会社いやならやめればいいじゃん

日本の業界がどうの、とか言うな

 

にぽたん

みんなこの感じでは残糞感があるんじゃない?

目を付けた会社に自分から動いていく勇気を持つことが重要

 

naoya

自分ができるのは、自分がいる産業を大きくすること

そこでエンジニアがハッピーになれる業界にしたい

はてなは現在拡大路線

 

よしおか

自分の人生は自分のもの

東京は勉強会がすごくある

今日みたいなセッションも雇用と思えばこれる

ustでも見れる

自分で何かを変えようと思えば変えられる

最終的には自分の人生は自分で決めよう

 

ひが

まずは行動しよう

月に一回ひがやすを飲み会をやろうと思っている

 

益子

最初の方は言っていることがよくわからなかった

最後のほうは学生目線でいろいろ言えて楽しかった

学生が足りない部分もある、それは認める

しかし、企業側にも足りないところがある

 

田村

情報の非対称が問題

改善したい

 

源馬

はてなのような会社ががんばると良いと思います

がんばってください

 

終わり


エンジニアの未来サミット

 

出演者の方の感想リンク

アルファギークが空回り - ひがやすを blog

エンジニアの未来サミットに行ってきた - 未来のいつか/hyoshiokの日記

エンジニアの未来サミットについて、色々考えてみました - にぽたん研究所

エンジニアの未来サミットで学生役してきた - タムケンブログ

 

まとめ

syttruの日記


感想追記

個人的には、知人である源馬さんが、はてなマンセーを言い過ぎているような気がして、多少気になりました・・・。はてなだけ良くても意味がないので、業界全体にどうやって繋げていくのか、という流れで話をして欲しかった。

源馬さんと知り合いだったため、終了後の楽屋に潜り込むことができたのですが、みんなぐったりしていました。お疲れ様でした・・・。

インターンの成果、はてなキーワードランキングリリース

本日付で、リニューアルしたはてなキーワードがリリースされました。そのキーワードの右下にある「人気ブログ」ランキングが、僕とid:nanto_viががインターンで手がけた機能です。

はじめにアイデアと大まかな実現を方法が示され、後は2人でペアプログラミングをしながら作っていきました。仕様書などはなく、作っては面白さを追求して改良を重ねる開発、ユーザビリティテストの結果をフィードバックさせて良いものに仕上げる仕事は、とてもエキサイティングでした。

技術的な相談はもとより、様々な面で良くしていただいたid:antipop,  id:motemen (Git神), 我々の気づかないところまでディレクションをしてくれたid:nmy, 見やすいデザインでランキングの魅力をアップさせてくれたid:tikedaに感謝します。

そして何より、インターンのペアに恵まれました。僕の稚拙なコードや設計のあらを指摘してくれ、ペアプログラミングを通じて多くのことを教えてくれたid:nanto_viに感謝します。ありがとう。一緒に仕事ができて楽しかったです。また銭湯行きましょう。

なにぶん速度面やバグなどでご不便をかけることがあるかもしれませんが、その際はサポートやはてなアイデアにフィードバックをお寄せ頂ければ幸いです。その際にはキーワードチームの皆さん、よろしくお願いいたします。

Hatena Keyword Team 

キーワードチームの皆さんと、オフィスにて 撮影cho45さん

はてなインターンのカリキュラム

インターンも2週間が終了し、これからが後半戦です。僕は合格点ぎりぎりでしたが、後半に進むことが出来ました。その前半全10日、OOPからMapReduceまでの模様を振り返りたいと思います。

IMGP3134.PEF

 
1日目: はてなイントロダクション
id:jkondoからはてなの概要とインターンの趣旨について、id:naoyaからはてなの大規模システムについて、それぞれプレゼンテーションがありました。その後はウェルカムパーティー。

メンバーがかなりすごいバックグラウンドの人ばかりで、気後れするも、ビールの力でわいわいやっているうちに時間は過ぎていきました。

 

2日目: Perlオブジェクト指向プログラミング
id:antipopからPerlでのOOPについて解説。OOPとは何か、なぜOOPかという説明からはじまって、実際のコードを使った解説へと進みます。デザインパターン、テスト駆動開発等についても触れていきます。(テストがない状態でのリファクタリングは、すぐに泥沼化すること等)

恥ずかしながら普段はC言語しか使わないので、OOPには馴染みが薄かったのですが、一応Objective-CとC++を使ったことがあるので、その知識を動員してなんとか乗り切りました。Observerパターンを使う課題があって、とりあえず本の通りに実装したら綺麗に動いて感動。この日は割と遅くまで残って課題をこなしました。

 

3日目: ORマッパー
id:onishiからはてなの内製ORマッパーであるDBIx::MoCoについて解説。MoCoはid:jkondo開発とのこと。社長がライブラリを作っている会社・・・。ライブラリを自作すると、必要な機能をコンパクトに実装できて良いらしい。対応DBはMySQL。名前の由来は、近藤家にあるいい感じのクッションらしいです・・・適当!

この日はTodoリストを管理するCLIアプリケーションを作成。この日の課題を5日目まで使い回すので、もう少し頑張っておくべきだったか・・・。

IMGP3140.PEF 

4日目: MVCによるWebアプリケーション作成
昨日の課題をModelとして、ViewとControllerを実装します。これまた自社フレームワークであるRidge (id:naoya作) を使う方法を、id:motemenのご指導のもとで学んでいきます。Ridgeには簡易サーバも付いているので、自分のローカル環境で試すことが可能です。ViewにはTemplate Toolkitが使われていました。

昨日のORマッパに比べて結構簡単に感じたのですが、画面遷移のセオリーがわからず、アクションがごちゃごちゃのまま設計したところ、厳しく採点されてしまいました。また、ちょっとつっこんだことをやろうと思うとすぐにControllerが汚くなってしまうので、Modelをまた弄り直して・・・と結構手戻りが発生して意外と消耗。

 

5日目: ユーザインターフェイス
この日の講義はid:secondlifeから。JavaScriptを使って、昨日までの課題のUIを改良します。言うまでもなく自社ライブラリのTen.jsを使います。このTen.jsも、社内に様々なJSライブラリが氾濫していることを憂慮した社長が勉強しまくって(id:onishi曰く、id:jkondoは非常な頑張り屋とのこと)作ったそうです。

先週も書きましたが、JSとDOMの概念を全然知らなかったので、僕はここで結構躓きました。。id:GemmaにHello Worldから教えてもらって頑張ってみたのですが、その日のうちに課題終わらず。一応完成した人も、土日で完成度を上げていたようで、どうやらみんな土日に休むという概念はないらしい。

IMGP3120.PEF 

6日目: ThriftでRPC
この週から発展課題に入り、はてなの中でも割と導入してから日が浅い技術を扱います。この日はFacebookによるRPC実装Thriftが題材。異なる言語や処理系の間でRPCできるのですが、IDLをちょろちょろ書くと(サポートがあれば)スケルトンを生成してくれて、そこに処理を書くだけになっている親切設計。これは研究でも活用できるかも。

課題は異なる言語でサーバとクライアントを書くもの。呼び出す処理自体はただの加算と乗算なので簡単だったため、余った時間でいろいろな言語に走る人が多かったです。人気はC++とRubyでした。Scalaでサーバを実装したcho45さんやCocoaでクライアントを実装したhakobeさんのような猛者も現る。

この日は時間が余ったため、先週終わらなかった課題を実装・・・。

 

7日目: 大規模データ設計
id:naoyaから、大規模なデータを扱うシステムについての講義。DB設計や、Linuxのキャッシュについての話が前半で、後半は課題で使うアルゴリズムの説明でした。

課題は2つから選択可能で、僕ははてなブックマークから抽出したキーワードの転置インデックスを用いて、キーワードからブックマークの検索を行う課題をチョイス。Cosine Similarityという尺度を使って検索するのですが、データファイルが数百MBあるため、ナイーブに実装するとメモリ消費量が大変なことになります。そこで・・・というところまで含めて課題です。

IMGP3123.PEF

8日目: HadoopによるMapReduce
id:stanakaからMapReduceを使ったデータ処理について講義を伺いました。GoogleのMapReduceのオープンソース実装Hadoopを使って、実際にMapReduceプログラミングをするところまでが内容です。Java以外の言語でHadoopを使うHadoop Streamingについても詳しい解説アリ。

課題では、RFC仕様書のテキストデータすべてを読み込んで転置インデックスを作り、検索まで実装。僕はn-gramを使って順位付けを行う方法でやりました。MapReduceを二回回せば、n-gram入りの転置インデックスができます。MapとReduceの進行表示を見てにやにやする、異様な一日。ほとんどの人がMapReduce初体験だったので、盛り上がりました。

 

9日目: はてなを支えるインフラストラクチャ
id:hideokiからはてなのインフラについての講義。冗長化でいかにSPOF (Single Point of Failure) を回避するかという話や、ロードバランサ等のお話を伺いました。また、分散ファイルシステムMogileFSや、内製のサーバ管理ツールについても説明。1OSしか搭載しないサーバでも仮想化しておくと、ゲストOSがコケた際にホストOSから再起動できて便利、などのノウハウも。

この日は課題はなしで、昨日までの課題の再提出や、復習に充てる日になりました。僕はこの隙に課題を再提出して、なんとか及第点に到達。

IMGP3149.PEF 

10日目: 結果発表、配属決定
この日までの課題の評価で、後半に進むことが出来るかが決定されます。残念ながら10人のうち、1人が後半に進むことができませんでした。

その後、後半で配属される各チームのプレゼンテーションを見てから自分の希望するチームを選び、人数調整のあと晴れて配属先が決定となります。みんなそれぞれこだわりがあるので、この作業が結構難航。15分くらいわいわいやった末に、無事チームが決定。

僕ははてなダイアリーキーワードチームに配属になり、id:nmy, id:antipop, id:motemenにお世話になることになりました。id:nanto_viとはチームメイトです。皆さん、来週からよろしくお願いします!

IMGP3155.PEF 

以上までがこの2週間の流れでした。インターンのページにカリキュラムがなかなか出てこないので、日報を頼りに書いてみました。読み返してみると、やはり相当詰め込まれてますね (^^;) これでインターンのイメージが多少なりとも伝わると良いな、と思います。9月のインターンは明日が8/20が申込み〆切のようなので、迷っている方はお早めに! 

インターンが課題でどういうものを作ったかは、id:Gemmaの日記で見られます。
http://d.hatena.ne.jp/Gemma/20080814/1218709185

IMGP3105.PEF 

IMGP3159.PEF

IMGP3132.PEF 

IMGP3160.PEF 

IMGP3126.PEF

後半もよろしくお願いします!

 

8/17追記

インターンの申込み〆切は18日ではなく20日でしたので訂正しました。

はてなインターンの手引き

はてなインターンの id:ninjinkun アサノです。8月4~29日までインターンとしてはてなに勤務しています。

このエントリは、Webアプリケーション未経験者の私が無謀にもはてなインターンに応募し、苦労している視点から書いています。同期のインターンは皆優秀で、私はどちらかというと着いていくので精一杯なのですが、未経験者の視点から書くのも逆に意味があるのかなと思い、インターンに来るまでにやっておいて良かったこと、やっておけば良かったことをメモしておきます。

IMGP2842.PEF

Perlの知識
はてなはPerlの会社です。「初めてのPerl」(リャマ本)と「続: はじめてのPerl」(アルパカアルカパ本)は読んでから行きましょう。特に「続」の方が重要で、リファレンスやオブジェクト指向はもちろんのこと、テスト等も使った課題が待ち受けています。私はスクリプト言語自体にそんなに馴染みがなかったので、この本を読んでいなかったら正直死んでいたと思います。なんらかのLLを常用している方なら「Perlクックブック」とかでも良いのかもしれません。

*NIXシェルの知識
基本的にターミナルを使って作業することになります。はてなの独自フレームワークをローカルに入れて課題をこなすのですが、自分のPCにインストール or インストール済みVMWareイメージをもらって使う、という選択ができます。いずれにしても*NIXのシェル操作は必須です。zsh + screen厨多し。

エディタの知識
Emacs vs Vimの論争に着いて行けるようにしましょう。基本的にはどちらかの陣営につくことになります。便利なEmacs LispやVimscriptを入れて、自慢し合いましょう。どちらも使ったことのないひとは、とにかく入れてみて、キーバインドを覚えましょう。

JavaScript + DOMの知識
ユーザインターフェイスプログラミングをさせられます。これが結構盲点で、DOMに触ったことのなかった私は現在ここで結構ハマっています。同期ではこの周辺に強い人が多いので、助けられながら何とかやっています。JavaScriptの簡単な構文と、DOMを弄る知識は身につけていきましょう。ライブラリなどを少し使ってみるのも良いと思います。ちなみにはてなは自社製ライブラリです。

はてな社員の知識
id:jkondoやid:naoyaはもちろんですが、id:antipopやid:secondlife、id:onishi, id:nagayama、id:motemen 等、京都でエンジニアとして勤務しているひとたちの知識を仕入れておくと良いです。僕に教えてくれるひとしか書いていません。すみません。ここに書かなかったひとも、今度いろいろ教えてください。

最後のはネタですが、会社に来てからでも良いので、どの社員の方がどの分野に強いのかを把握しておくと、いろいろ聞きやすいかも知れません。社員の方は全員恐ろしく優秀なので、どの分野のことでもさっと答えてくれますけどね!

他にも必須ではないですが、バージョン管理システムに多少慣れておくと良いでしょう。社内のバージョン管理システムはgitなので、自分でしばらくgitgitしてみると良いと思います。この辺はすぐになんとかなると思うので、あまり重要ではないです。

id:antipop

Web系アプリやLLの経験なしで、「はてな面白そうだぜ!とりあえず行けばなんとかなるやろ!」という勢いで応募してしまう人がいると思いますが、全くおすすめできません。勢いで応募してしまった私が断言します。同期は皆なんらかの経験を持っていて、さくさく課題を進めて行きますが、私は結構息切れしています。C言語で画像処理をしている人間には、新しいことが多すぎます。

しかしこのエントリにある事柄を予習してから参加されれば、課題についていくことは可能だと思います。まあ、同期は課題にさらに付加機能を付けて提出しているようですが・・・。

実際のインターンのプログラムも公開を検討していると聞いていますので、もしかしたらそのうち応募ページに掲載されるかもしれません。

id:jkondo

最後になりますが、はてなの環境は素晴らしく、社員の方も皆親切です。社長とも気軽に話せるし、手作りのお昼は出るし、冷蔵庫にはドクターペッパーが常備されているし・・・。

そして何より、ゼロベースだった私が飛躍的に成長している感覚があります。上ではおすすめできないと書いたのですが、未経験でもWebアプリケーションに興味を持っている人は、今すぐ応募するべきです。それは、このインターンがWebアプリの開発を学ぶ最短経路だと感じるからです。大学や大学院に通いながら片手間で勉強しているよりも、はるかに早いスピードで知識を身につけることができます。id:umedamochioが言われている、「高速道路」ですね。

はてなのインターンはその辺の「就業体験」とは全く違います。彼らはプロダクションレベルのコードを求めてきます。そして、実際にインターン生のコードがプロダクトに入る可能性があるのです。そのことに、私は今からわくわくしています。

未経験者こそ行くべき、というようなことを言えるほど甘い環境ではありません。しかし、向上心があり、今からインターンに向けた勉強を始められる方なら、飛び込んでみる価値はあると思います。このエントリはそのような方を対象に書きました。Webの世界にわくわくしている、まだ何者でもないひとへ、9月のインターン募集がまもなく始まります。あなたの夏の予定のなかに、はてなを加えてみてはいかがでしょう。

IMGP2909.PEF

IMGP2895.PEF

IMGP2911.PEF

IMGP2914.PEF

IMGP2899.PEF

IMGP2880.PEF

IMGP2878.PEF

8/11 追記
インターンが発表されていますね。デザイナーのインターンもあるようです。
http://www.hatena.ne.jp/company/staff/intern

はてなnaoyaさん「はてなを支えるバックエンドシステム」

京都で行われたオープンソースカンファレンス2008 Kansaiに行ってきました。

OSC KANSAI

はてなのCTO naoyaさんの発表を聞いて来たのですが、創業時から現在までのインフラ構築の工夫や苦労を語られていました。

はてなnaoyaさん
はてなを支えるバックエンドシステム
関西のエンジニア業界を盛り上げたい

OSC KANSAI

アジェンダ
はてなのサービスを支えるバックエンドシステムを解説
創業時からこれまでの変遷

はてな
ハードウェア350台
14ラック
トラフィックはピーク時は200Mbps

OSC KANSAI

はてなの2001年創業時
人力検索
PentiumsIIIの自作PCで動していた
CGIがボトルネック
CGI->Apache::Registryに変更

mod_perlサーバのメモリ消費が多い
mod_perlが必要ないリクエストもmod_perlが応答する
staticな情報もmod_perlが応答してしまう
Reverse Proxyで三層構造に
静的ファイルはmod_perlなしのフロントが
動的ページはバックエンドが返却

アクセス増加に伴いリソースが不足
Web/DBでハードを分けて分散
PostgreSQL->MySQLへ変更
Web+DB PressでMySQLがおすすめされちた
監視用にNagios導入−>ケータイへメールして監視

Webサーバ自体のリソースの不足
Reverse Proxyとバックエンドのハードウェアを分離

当時のはてな
会社を支えるだけの収益はまだ見えず
受託開発を開始
同じようなプログラム開発の繰り返し
Hatenaフレームワーク作成
MVCフレームワーク
Perlオブジェクト指向
DB操作、mod_perl API

OSC KANSAI

OSC KANSAI

はてなアンテナ開発
複数の異なるサービスをひとつのサイトで運営
Reverse Proxyで振り分け

試行錯誤により徐々に三層構造に
フレームワークにより開発が効率化->はてなアンテナ
はてなアンテナのヒットによってサーバが増え始める

負荷が増大
mod_perlを増設
mod_reireのRewriteMapで振り分け
DBをテーブル単位で分割
巡回サーバを追加
結合していないテーブルを別のサーバに振り分けていた

増え続けるハードウェア
形がバラバラのPCケース
場所

メンテナンス性

商用サーバは高品質だが効果的

サーバーケースを設計
ケースを設計
サーバーは自作
エアフローも考慮

MySQLが過負荷
MySQLレプリケーション
レプリケーションでレプリカを増やす
参照クエリはスレーブへ、更新はマスタへ
レプリケーションはサポートされたばかりで少し危なかった
振り分けロジックはフレームワークで吸収

mod_perlサーバを継続的に追加
MySQLスレーブを継続的に追加

ルータもLinuxボックス

サービスは週末に開発

2003年はてなダイアリーサービス開始
はてなダイアリーのバックエンド
過去の反省を活かしたテーブル編成

Revese Proxyが接続集荷場に

サービス毎に一つ以上配置
一部はDNSラウンドロビン
ロードバランサを買うお金がなかった
2004年2月東京移転
サービスを一日停止してトラックで搬送
当時のサーバー台数は50台
配送の様子をリアルタイム配信したりしていた

続々サービス追加
フレームワークのバージョンアップ
設計の見直し、UTF-8対応

サーバー追加
トラフィック追加

続くブログブーム
予測不可能なトラフィックの伸び
商用サーバ納期数週間では間に合わない

自作サーバの利点
早い、うまい、安い
柔軟に構成変更可能

mod_perlサーバが落ちると数分の一の確率で繋がらなくなる
Rverse Proxyはフェイルオーバー機能を持っていないため
mod_proxy_balancer追加

開発合宿でブックマークが開発

エンジニアが増加、サービス追加が続く

当時の運用の問題点
SPOF多数
まともにフェイルオーバーしていたのはmod_prxy_balancerのみ

人力対応の限界
回線飽和
ベストエフォート100Mbps回線
太い商用回線を借りるほどのお金がない
電力不足
サーバを追加したらブレーカーが落ちる
運用担当の踏ん張りに依存
消耗戦

運用の複雑化
属人的な運用体制の限界

Klabさんとの出会い
DSASオープンソースで完璧な可用性
こんなに簡単!Linuxでロードバランサ
ほとんどお金をかけずに耐障害性を上げていた

DSAS構築の経験からアドバイスを頂く
安心して寝たいから頑張る
データセンターを見学させていただく

LVS+keepalived
Linuxでロードバランサ
VRRPを使ってサーバの入れ替えを自答でやってくれるm
MySQLの手前にLVSを導入
内向けロードバランス
多数のSPOFが解消される

運用の効率化
アプリケーション担当とインフラ担当の仕事の分離が可能に
インフラ側はアプリケーションのことをあまり知らなくてもLVSの操作で切り替えができるようなった
さーくらインターネットiDCへ
DC分の収益は確保できるまでに成長
一年がかりでデータセンター移行
また車で移動・・・
データセンターで体を動かすとなぜか充実感

データセンター移行に伴い
インフラチームを発足、体制強化
古いサーバーをリプレース
CentOS、64bit化
Web+DB部分はほぼ冗長化

故障後のリカバリが面倒な箇所を一部商用サーバに
商用サーバはメモリの故障なども検知可能なのが助かった
メモリが壊れてビット反転、テーブルが壊れるなどあったので・・・

64bt化の追い風
メモリ4GBの壁を突破
メモリが安くなった
DBデータの大部分をOSがキャッシュできる
テーブル分割の必要性が下がる

MySQLのマスタがSPOF

マルチマスタ化
お互いにお互いのスレーブの関係

ファイルサーバがSPOF

DRBDの導入
ブロックデバイスのドライバ
ネットワーク経由でRAIDのようなことが出来る
DRBDで画像保持
lighttpdで画像は信
Squidでキャッシュ
大容量ファイルはMogileFS

新しいインフラが出来るまで
はてなインフラのターニングポイント
klabさんに感謝
チーム体制の役割分担
DC移転タイミングでの再設計
オープンソースでも高可用性インフラ

攻めのインフラ

フレームワークの刷新
Rails, Catalystと比べると古い
自社開発のPerlフレームワーク
Ridge+DBIx::MoCo
ORマッパDVIx::MoCoは近藤社長が開発
メソッドチェインが実装されている
ローカルで開発可能

自分たちで作る意味
コアの設計を自分たちで変えられる
サーバーリソースを使い切れない多数のホスト
バッチ処理専用サーバ
メルサーバ
トラフィックの少ないサーバ

仮想化技術の導入
Xen
1台のハードウェアで複数のOS
現在450ホスト中100ホストが仮想環境で動作中

仮想ホストをディスクレスサーバーで
中央のファイルサーバからOSのイメージを転送

ログ解析が終わらない
大規模データ処理に時間がかかる
Hadoopの導入
GoogleのMapReduceのOSS版
分散ファイルクラスタ

さらなる運用の効率化
OSの自動インストール
PXE Bootでインストール
はてな内RPMレポジトリ
Perlモジュール、カスタマイズしたソフト、自社ライブラリ

Puppet
Capistrano

数百台規模のサーバー情報の管理
スペック、用途、ラック番号、負荷グラフ
サーバー管理ツールの開発
サーバーホストの情報はサーバーから自動取得
負荷状況調査
他ツールとの連携
Nagios設定ファイルの自動生成Capistranoへデプロイ先を自動配信

バックアップツールNotch

はてなと風力発電

試行錯誤のうちに定番手法に行き着くことが多い

守りから責め攻めに転じることができた
インフラの仕事はとてもクリエイティブ
自分たちの得意技を活かして運用効率化できる

インターン募集中