yaotti's diary

Software is Eating the World

2011年を振り返って

今年は大学を卒業したりQiitaを作ったりと自分にとって大きな転機となる1年だったので,きちんとまとめておく.大きなイベントを時系列順に10個ほど並べてみる.色々とあったのだなあ…


卒論

f:id:yaotti:20111231034520g:plain
「Dalvik VMにおけるインクリメンタルコンパクションの実装と評価」というテーマで,昨年11月ごろから今年7月ぐらいまで取り組んだ.プログラマなら皆好きなGC関連の研究です.
卒論提出間際はQiitaの開発と並行していたため,研究でCのコードを書き,実験を走らせている間にQiitaのためにRubyを書いたり,id:kony_tと昼間Qiita開発をしてから夜研究室に戻って卒論書いたりという生活だった.大変ながらも楽しかったなあ.
卒業研究で初めてCをしっかり書く良い機会になったけれど,もう「メモリの一部データが壊れている」なんてバグのデバッグはやりたくない.LLがいかに楽かということが身にしみて分かった…
それまでアルバイトやインターンで触れてきたものとは違ったレイヤーについて考えられたので良い経験になった.


FCRC 11, Fluxflexメンバーとの会話

f:id:yaotti:20110608070910j:plain
fluxflex
人生のターニングポイントとなった出来事.
6月最初に学会&卒研関係で*1FCRC 2011に行ったとき,Fluxflexの人達と話した.
せっかく近くに来たのだし(滞在していたホテルから数ブロック離れた場所が彼らのオフィスだった!)まあちょっと食事でも,というつもりだった…が,大きな影響を受けることになった.
ここでの会話はほんの数時間だったけれど,id:keikuboさんやid:kyoro353さん,id:sowawaさんの話すシリコンバレーのスタートアップ事情や彼らの日常の話はとても魅力的で,聞いていてワクワクするようなものだった.
彼らと別れてホテルに戻ったあと,シャワーを浴びている間悩んだり叫んだりしていたのを覚えている.


結果,ここでの話もあって自分の進路を考え直すことになった.話をしようと誘ってくれたid:sowawaさんには本当に感謝している.
もしFCRCの学会に行っていなければ,もし泊まったホテルと彼らのオフィスが近くなければ,もし一緒に食事していなければ今どうなっていただろう.人生に何がどう影響してくるかわからない.


院進学を辞める

それまでは院に行きつつQiitaを開発していくつもりだったのだけれど,院には進学せずにフルタイムでQiitaを作っていくと決めたのは6月下旬ごろ.
Qiitaの他2人のメンバーは仕事を辞めてフルコミットで関わっていく中,1人だけレールに乗りながら関わるのが嫌だった*2のと,上述のfluxflexメンバーとの会話で「新しい価値を生みだす」ということに挑戦したい気持ちが非常に大きくなっていたことが大きな理由.*3


「迷ったときは大変そう&&楽しそうな方を選ぶ」という自分ルールに従って(はてな/Googleインターンもそれでtryした)id:kony_t, id:tatata111と一緒にフルタイムでQiitaを作っていくことを決めた.もし大失敗したとしても,たぶん餓死したりはしない:P


Qiitaリリース

f:id:yaotti:20111231034722p:plain
Qiita - The best way to log and share programming knowledge.
今の「プログラミングの知識,経験共有」という形ではなく,最初はQ&Aサービスとしてリリースした.気軽に聞ける日本語版StackOverflowのイメージだった.
しかし今考えると「エンジニア向けのQ&Aサービスを作る」ということが目的になってしまっていたなあ.ただ自分が作りたいものを作るのは趣味でしかなくて,人々にとって本当に必要なのか,抱えている問題を解決するのかという基準で考えなければならないことを学んだ.
Qiitaの開発時は2ヶ月ほどlang-8オフィスにお邪魔して開発していた.24時間営業オフィス!:D id:yang_yangさんにはお世話になりました.


はてな卒業

f:id:yaotti:20111231034946j:plain
2年半前のインターン以来,ちょうど2年ぐらいソフトウェアエンジニアアルバイトとして働いていたはてなを卒業した.
アルバイトとしてwebサービスのバックエンド,フロントエンドやiPhoneアプリなど色々やらせてもらえた.はてなについては書き出すと長くなるのでまた別エントリで.
一流のエンジニア達に囲まれて仕事できたことは自分の基礎を作っていると思う.はてなの方々には本当にお世話になりました.


大学卒業

9月末に大学を卒業し,すぐに東京へ引っ越した.京都が,鴨川が恋しい.

小学生以来,十数年持ち続けてきた,学生というステータスを失なったのだなあ."学生"でなくなっても,生きるために学び続けなければならない.
最近はThe Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses
という本を読み,とても勉強になった.まさにこれが知りたかったんだ!とここまで強く思える本はそう無い.スタートアップに限らず,新しい物(最初の時点で作るべき機能が決まっていない物)を作る人にはおすすめです.


TechCrunch Tokyoでの発表

f:id:yaotti:20111231035455p:plain
TechCrunch Tokyo(naverまとめ)というイベントで幸運にもプレゼンする機会をもらえた.リハーサルがあったので頑張って資料を作っていったのだけれども,全然伝わらないと強く駄目出しされた…
そこでしっかりとフィードバックをもらった後,id:kony_t と話しながらプレゼンを0から作り直し,当日の直前にもid:kony_t と会場の建物を出た所で声を張り上げて練習してから本番に臨んだ.資料作りも練習も,今までで一番時間をかけたプレゼンだったなあ.
プレゼンと説明は全然違うのだということを知った.最初に作ったプレゼン資料を今見直すと,何がいいたいのかわからないし別に聴衆が聞きたがらない内容ばかりになっている.
本番の発表は,頑張った甲斐あってとてもうまくいった(と思っている)けれど,残念ながら賞を取ることはできなかった.ちょっと残念.



600人以上(ustやニコ生配信を見ていた人も合わせると何人ぐらいになるんだろう)の前での発表だったけれども,そこまで気負うことも緊張することもなく出来た.これは事前に十分プレゼン練習をしていたのと,Qiitaというサービスの目的に確信を持っていたからだと思う.「自分達は,絶対に解決されるべきだと信じている問題に取り組んでいるんだ」という思いがあるのだから自信を持って話せるのは当然ではある.
Qiitaによって何を実現しようとしているかは[特集:2012年生活を一新するサービス 1/3] Qiita、co-meeting、ウォンテッド...作り手が見据える未来像に迫る! |エンジニアtypeで取材された記事にて話しています.髪型変!


Open Network Labへ

f:id:yaotti:20111231035549j:plain
Open Network Lab(オープンネットワークラボ)
Qiitaが採択された第4期は1月開始なのでまだ入ってはいないため,数回onlabのprivate/publicなイベントに参加した程度だけれども,今の時点でも本当に入れて良かったなあと思っている.1月からが楽しみすぎる.
Open Network Labについては Open Network Lab―日本製“Y Combinator”は世界を目指すスタートアップを支援する シリコンバレーの起業家、日本のY/Cスタイルのインキュベータ、Onlabを訪問 など.



まとめ

「進学/就職しない」という1つの選択によって,進む道*4が大きく変わった1年だった.本当に良い道を選んだなと今のところは思っています(来年末もそう思えると良いな).
Qiitaのステータスとしては最近動きがないように見えるかもしれませんが,今は色々学んだり試したりしています.来年最初からid:tatata111も加わり,加速していくので楽しみにしておいてください:)
では来年もよろしくお願いします.よいお年を!

FCRC(ISMM+PLDI)に参加した

SanJoseで開かれた2011 Federated Computing Research Conferenceに参加した.*1
FCRCというのはCS関係の学会が集まった,acmのお祭のようなもの.4年に1回開かれているらしい.
海外に行くのは2回目*2だけど2回ともCaliforniaのSanJose周りだなあ.
以下簡単なメモ.

ISMM

マルチコアなシステムを考えた論文が多いように感じた.マルチコア環境でのGCやキャッシュミス削減など.
局所性を強調しているプレゼンが多くて,本当に重要なのだなあと思った.知識として重要だと知っているのと,実際本当に効いてくることを知るのとは違う…
全体的に聞いていて面白かったのだけれど,特にキャッシュの話は楽しかったのでもしかするとそのあたりに一番興味があるのかもしれない.

PLDI

自動並列化はよいですね.何も考えずに書いたプログラムがコンパイラ/VMレイヤーで勝手に並列化される未来!
プレゼンでは詳しいことは理解できなかったのだけれどもメモリフェンスを自動で入れるというのが気になった.
興味の強さの違いか,PLDIは眠くて集中できないセッションが多かった…反省.


まとめ

メモリ管理が一番面白いと思える対象だと改めて思った,のだけれど…ISMMの論文投稿数や先生に聞いた感じでは,メモリ管理の研究は落ちついてきているみたい.
まあそれでも一番面白いと思える対象だし,必要とされなくなることも無い分野なので頑張りたいと思います.
ちょっと気になったのは,ISMMでもモバイルデバイスを対象とした論文がなかったこと.サーバーアプリとは違った制約があるから*3,あっても良さそうだと思うんだけどなあ.既存の研究を適用すればいいからなのか,まだそれほど取り組まれていないのか,どっちだろうか.
今回,面白そうな理論や論文をたくさん見つけたのでしばらく論文を読みまくることになりそうです:)

*1:論文を通したわけではないのだけれど,教授に同行させて頂いた.本当にありがたい…次は論文を通して胸を張って行きたい

*2:前回は[http://d.hatena.ne.jp/yaotti/searchdiary?word=%2A%5Bsvc09%5D:title=SVC]

*3:メモリはそれほど豊富にはないとか,ビュースレッドは止めちゃいけないけど他のスレッドはある程度止まってもよいとか

最近のこと

自分のページを見て,半年近く(去年末以来)ダイアリーを書いていないことに気付いてびっくりした.
なぜここまで書かなくなったんだろうと思って考えてみるといくつかの理由が思い当たった.

まず,今年最初に始めた"出来事や考えなどをテキストファイルに1日1ファイル単位でまとめていく"という記録活動が習慣化していて,
そのせいでdiaryを書こうという気持ちが弱くなっていたのかも.

$ wc -l ~/diary/2011/*/* | tail -1
5321 total

空行もあるけど,1日30行程度書いているらしい


もう1つの理由は,ちょっとした技術ノウハウをよく書いていたけれども何か不毛感というか重箱の隅つっつき感があり,
そんな記事ばかり書くのはどうなのか,と思い始めていたこと.
情報の価値は受け取り手が決めることだろうと思いつつ,一度その思いが浮かんでからはわざわざダイアリーに残そうという気にならなくなってきた.


しかし生駒日記のmamorukさんも"自分も過去は OS をインストールしたとか、ソフトウェアの設定ではまったとかばかり書いていた"とのことで,それはそれで通過点として(?)悪くはないのかもしれない.

最近やっていること

卒業研究

Androidの中身(Dalvik VM),メモリ管理まわりに手を加えていろいろやっている.
Dalvik VMのメモリ管理(dlmallocやGC)については一度まとめたいなと思っているけれどもいつになることやら…
GC本(下の本)で説明された時からバージョンアップ(Froyo->Gingerbread)した今のDalvik VMでは

  • precise GCができるようになっていたり
  • concurrent GCになっていたり
    • card tableを使ったmostly-concurrent M&S
  • Copy GCのコードが入ってたり
    • 入ってるだけ,使われてはいない&動かすこともできないけど…
    • オブジェクトを動かしたいんだろうなというのが伝わってくる

と面白い変更がいくつかあるのでまとめたい(と書いておけばまとめるはず).
GC本にはGCの基礎を学ぶ際にとてもお世話になりました.

ガベージコレクションのアルゴリズムと実装

ガベージコレクションのアルゴリズムと実装

webサービス開発

隙間時間を見付けつつ,友人と一緒に開発を進めていっている.(コードはほぼ全部僕が書いているけれど)
webサービスを自分で0から作るのは初めてなので,アルバイトでの機能開発とは違った楽しさがある.
アイディアとしては同じサービスが既にあるけれども,その分野にはGoogleTwitterのような巨人はまだおらず,
また自分の中で何度検証しても「これはいける」「必要とされるはず」と思える物なので満足のいくレベルまで作り込みたい.

輪講

Certified Programming with Dependent Typesというのを読んでいる.なかなか難しい.
Coqを理解していないことによる難しさと,論理学に明るくないことによる難しさがあるのかな…
論理学の教科書を引っ張り出して思い出しつつ進めている.
昔使ってた教科書を今改めて読んでみると,以前は知識を暗記し表面的に理解していただけで体系的な理解はできていなかったということがわかる.悲しい.


という感じの最近.これからも適当に日記を書いていこう.

2010年ふりかえり+2011年へ向けて

記事一覧 - (programmer? yaotti)Hiroshige Umino(@yaotti)/Archives - Twilogを見て思い出しながら簡単に振り返ってみた&ざっくりとした目標を立てた.来年の自分向けエントリ.

1月

手帳を使い始めたけどすぐに面倒になってやめた.今は普通のノート+Evernoteで落ち着いている.

2月

TopCoderの過去問を解くのにはまっていた.SRM参加してないなぁ.

3月

22歳になった.

4月

研究室に配属された(仮).今考えても研究室は自分にぴったりな所を選べたと思う.
Evernoteを使い始めた.いまでもけっこう使ってる.
NHKにちょっと出た.面白い体験だった.ディレクターっぽい人が「30秒考えさせてください」と言って内容をその場で考えていくのが印象的だった.

5月

NAISTのオープンキャンパスに行った.結局NAISTに行くことはなさそう.

6月

GC本を読んだりしていた.今年買って一番役立ってる本かも.

7月

インターンに行けることがが決まった.今年一番嬉しかった出来事.
C++書いたりしてた.yaotti/closxom · GitHubとか.

8月

インターン一ヶ月目.一言では言えない.色々面白い人達に会った.英語の必要性を身をもって痛感した.
ロードバイクを買った.
RubyKaigiに行った.

9月

インターン二ヶ月目.ちょっとしんどい時期だったけど,研究の大変さ+面白さを少し体験できた.1つのことをひたすらやるのは良い.
卒論テーマがGC関係のものに決まった.楽しい.
土日は一日かけてサイクリングしたり,日本科学未来館や展覧会(文化庁メディア芸術プラザ,NTTインターコミュニケーションセンターなど)に行ったりしていた.
9月に買ったジャグリングはいまだにちょくちょくやってる.

10月

10/1にインターンが終わった.8週間は短かった.自分に足りないところが明確になったのが大きかった.
卒論を開始した.

11月

MBAを購入した.とても快適.

12月

(JPerl|Emacs) Advent Calendar書いた.proveをうまく使ってテスト実行を効率化しよう - JPerl Advent Calendar 2010 Casual Trackanything関数を好きな言語で実装できるanything-with-everything.el (Emacs Advent Calendar 2010 8日目) - (programmer? yaotti)

一番大きかったのはインターンだなぁ.経験として大きいし,それで院進学を決めたというのもある.

2011年の(SMARTでない)目標

  • 卒論できちんと成果を出す
    • "The greatest pleasure in life is doing what people say you cannot do." (Walter Bagehot)
    • "期待されている事以上をやる"ということほど面白いことはない
  • 英語を身につける
    • TOEFLで100点を取る
    • 英語できないと話にならない,という思いが強くなりつつある
  • 時間管理をもっとうまくやる
    • 今年最初に比べるとずっと整理して行えるようにはなったけれども,まだまだ

2011年もどうぞよろしくお願いします.

プロジェクト内のファイルを絞り込んで操作するanything-git-project.el

今まであるプロジェクト内の別ファイルへの移動にはanything-project.elというのを使っていたのですが,

  • ファイルが多いプロジェクトだとちょっと遅い
  • .gitignoreで指定しているファイルも表示される
  • もうちょっといい感じに表示してほしい

という不満があったのでgit用の同じようなものを書きました.
List up all files under the control of git and do something (open/view/delete/etc) with them — Gist

Modified filesとUntracked filesは毎回更新してるので,ネットワーク越しとかだと重いかもしれません.
git使ってる人なら普通に便利だと思います.どうぞ.