2009年ふりかえり

年末らしく今年の振り返りをします。今年はわりといろいろありましたねー。過去のブログ記事、twitterのログ、Googleカレンダーなどを見返しつつ、なにをやったかを書き出してみる。

振り返り

  • 1月
    • 正月は東京ですごした
    • はじめての一般参賀に行った。天皇陛下万歳
  • 2月
    • 仕事でRubyをいろいろやってた気がする。松江にも行った。寂れた街であった・・・。
  • 3月
    • 3本目のiPhoneアプリ「AnimeMaker」をリリース。我がkenmaz.net社の売れ行き商品。ありがたい事に今でもコンスタントに売れ続けている。
    • TFM「松本人志の放送室」が終了。いい番組だった。いまでもよく聴き返してる。
  • 4月
    • このあたりから転職について考えはじめる・・。
    • QConに参加
    • OpenSocialをちょっと触り始める。
    • 布袋ライブで最前列ど真ん中の席を体験する。
  • 5月
    • 日立グループRuby研究発表会@島根でRubyについて発表。
    • Google主催のOpenSocialハッカソンに参加。大したものは完成しなかったけど、みんなでワイワイ楽しく開発できた。
    • 転職先が決まる。転職する意向を上長に打ち明けるときのドキドキ感とかw
    • ニート状態突入!!!
  • 6月
    • 結婚式@明治神宮、新婚旅行@バリ。バリでは、読書=>プール=>寝る=>メシ、をループしてた気がする。超贅沢旅行であった。村上春樹の1984を主に読んでた。そういえば何故か結婚式直前に高熱が出て、1日で治った。あれはなんだったんだ・・・。知恵熱?
    • 嫁姉の飼猫「サンゴちゃん」を2週間ほど預かる。最初はかなり警戒してたけど、2日目からは甘えられすぎて困った。至福の時であった。ニャー!!!※ちなみに名前の由来は3匹目の猫だから(3号=>さんごう=>サンゴ)らしい・・。
    • Google Developer Day 2009に参加し、GDDPhoneをもらう。アプリ作ろうと思ったけどほとんど触っていない。そろそろ開発機として活躍の出番がきそうな予感。
    • ニート状態終了!!!
    • 新職場に出社開始。私服勤務に感動する。ニコニコ動画モバイルのサーバーサイドの開発を担当。
  • 7月
    • 会社に慣れてくる
    • このあたりからニコ厨気味になってくる。し、仕事なんだからね!
    • このあたりからTwitter熱が加速し、ブログを書く頻度がどんどん低下。。
    • ドラクエ8にハマる
    • スポーツジム通い再開
    • 長年ダラダラやっていたバンドのメンバー二人が故郷に帰ることになり、バンドも自然に解散(休止?)。休日は引篭もり気味の俺にとって、バンド活動は外出の理由を提供してくれる貴重な存在でもあった。そんなわけで、休日の引篭もり度合いもこのあたりから急上昇!
  • 8月
    • 夏 休 み は な か っ た !(試用期間のため)
    • 2008年の6月から続いた日経ソフトウエア連載が一旦終了。ここまでの連載記事の内容が「ゼロから学ぶ!最新Javaプログラミング」というムックとなって日経BP社より出版される。
    • mixiアプリを作ってみるものの、いまいち面白さを感じられず飽きる。
    • なぜか神宮球場でヤクルト戦を2回も観戦。新鮮だった。
    • スポーツジム通い飽きてきたorz
  • 9月
    • GREEの方々との飲み会に参加。いろいろ刺激を受ける。
    • IKEAで本棚を買う。かなり気に入っている。
    • ActionScriptプログラミングをちょっとやる。
  • 10月
    • 「会長が思いついたアイデアをもとにプロトタイプを作る」という謎の任務を仰せつかる。
    • ニコニコ実況モバイル」プロジェクトに参加。得意の(?)ひとりプロジェクト
    • 日経ソフトウェア連載執筆再開!!
    • 結婚一周年!
    • 副鼻腔炎気味になる
  • 11月
    • ニコニコ実況モバイル」がリリース。無事サービスインできてよかった!たまにテレビ見ながら使ってるけど、割と面白いよ。
    • kenmaz.net社4本目のiPhoneアプリ「彼氏の財布が」リリース。Yahooトップに取り上げられる。そして炎上へ。
    • Googleの新言語「Go」ではなくて「Noop」に興味を惹かれる。
    • 布袋BCオンリーライブに参加
  • 12月
    • とある新サービスの立ち上げに向けた技術調査を開始。かなり楽しい。開発機器が揃うまで自宅作業の日々。自宅作業は気楽で集中できるけどちょっと寂しい。やっぱり基本は会社で仕事した方がいいね。自分の能力と比べて難易度は若干高いけど、とりあえず成功させたい。
    • 兄貴夫婦に女の子が誕生!初孫に母親大喜び風味。
    • Robotsが解散。そもそも俺が東京にいる理由は、(1)俺が働きたいIT企業は東京に集中している、(2)なにかと刺激的なイベントが豊富、の2点が大きい。「気軽にRobotsライブに参加できる」ってのが(2)で大きな位置を占めていただけに残念だけど、まあ今後もTAKUYAをフォローしていこう。
    • 大晦日に帰省予定

まとめ

こうして振り返るといろいろあったな〜。特に以下が大きかったかも。

  1. 転職し、新職場でもなんとか楽しくやってる
  2. 連載執筆が1年半続いている
  3. iPhoneアプリ開発を通じて色々なものを得た
  4. バンド活動を停止した
  5. 上記理由により、休日祝日は自宅でプログラミング/執筆/技術調査/読書、外出なし、というパターン、要するに引篭もり度合いがより強まった

まあ・・・なんだかんだで前向きな一年だったように思う。
来年はどんな年にしようか・・と考えたところで、あんまり意味はなさそうなので、気楽に、楽しくやろう。
あ、そうそう、どこで見たのかは忘れたけど

何か選択しなければいけない状況になったときは「儲かりそう・得しそう」よりも「楽しそう」を重視したほうが最終的には良い結果を招く

っていう考え方がかなり気に入っていて、今後もこんな感じで行きたいと思います。

最後に、いろいろわがままに付き合ってもらったり、おいしいご飯を食べさせてくれた妻に大感謝してます。妻、ありがとう〜!!!新しいiPhoneが出たら一緒に買おうねー!

それではみなさん良いお年を〜〜〜!!!

久しぶりのブログ

ちょっとしたことは全部twitterに書いてしまうので、ブログを書く気がなかなかおきない。メンドクサイので最近あった出来事や思っている事を箇条書きしよう。

  • 双子座流星群で3つほど流星をみた
  • 仕事でiPhoneをやることになったが、機材の準備の関係で今週いっぱいは在宅勤務になりそうだ。
  • 「彼氏の財布が」というiPhoneアプリを有料化したら炎上した(^o^)
  • 体重が増えた気がするぞ
  • 勤務時間が11:45-21:00って感じになってきた。10:30-20:00を目指してはいるが朝ダラダラしてしまう。
  • 中途半端な時期に転職したけどボーナスはちゃんともらえた
  • なんだかんだでコーディングたくさんできて嬉しい
  • 日経ソフトウェアの原稿書きが結構大変
  • C言語ともっと仲良くなりたい
  • Google日本語入力べんりすぐる
  • SoftBankのiPhonePR事務局が、去年作った「The除夜の鐘」というiPhoneアプリを宣伝してくれるらしい。「この冬のお役立ちアプリ」なんだとか。いや・・

箇条書きにすればtwitterやってるのと変わらないな。

Noopビルド成功

昨日NoopのHEADをビルドするとインタプリタが動作しなかったので、NoopのMLに「インタプリタ動かないよー」というメールを投げたら「ごめんリビジョン132でビルドぶっこわしちゃった、まさにno-opだね:-)」的な返信があって誰がうまry). どうやらインタプリタ自体をguiceベースに修正しようとしてたみたいけど「生焼け」状態でまだ動かない感じらしい。

そんなわけでとりあえずリビジョンをちょっと前に戻したら動いた(謎のデバッグメッセージがでてるけど)

%
hg up -r 131

%
export CP=core/target/noop-core-0.1.0-SNAPSHOT.jar
export CP=$CP:interpreter/target/classes
export CP=$CP:~/.m2/repository/org/antlr/antlr-runtime/3.1.1/antlr-runtime-3.1.1.jar
export CP=$CP:~/.m2/repository/org/slf4j/slf4j-simple/1.5.6/slf4j-simple-1.5.6.jar
export CP=$CP:~/.m2/repository/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6.jar

%
scala -cp $CP noop.interpreter.InterpreterMain HelloWorld interpreter/target/resources/stdlib/ interpreter/target/resources/helloworld

8 [main] INFO noop.model.LoggingAstVisitor - pre-evaluated: HelloWorld
9 [main] INFO noop.model.LoggingAstVisitor - Entering method call on main
11 [main] INFO noop.model.LoggingAstVisitor - String literal: something
17 [main] INFO noop.model.LoggingAstVisitor - evaluated an argument
17 [main] INFO noop.model.LoggingAstVisitor - calling method main
27 [main] INFO noop.interpreter.InterpreterVisitor - Visiting ID expr: console
Hello World!

これでようやく遊べる。

Noopの最新バージョンをビルド=>失敗orz

世間ではGo言語が盛り上がっていますが、やっぱりJavaerな私としてはNoopが気になる。Noopがリリースされた直後にビルド環境を作ったのだが、ビルドできたワーイワーイという状態のまま放置してあったので、久しぶりにNoopのGoogle codeサイトを見に行くと、いろいろproposalが提出されていてかなり盛り上がっているようだ。コミットも頻繁にあるみたい。
ということで、最新のソースを取得して再びビルドしてみた。

準備

ちなみにビルド環境の整え方については以下のブログがすごく参考になる。
http://d.hatena.ne.jp/sh2/20090919
Java、TortoiseHG、Ruby、Buildr、ScalaあたりをインストールしてソースをとってくればOK。

最新のソースの取得

いまいちhgコマンドの使い方が分からなかったので、適当にやってみる。TortoiseHGのメニューから「view changelog」を選択してログビューを開いて、最新のリビジョンを右クリックして「update」とかやると、なんとなく最新版のソースになった。適当だなー。

ビルド

ビルドは単にnoopをチェックアウトしたディレクトリで「buildr」コマンドを実行するだけ・・なのだがRubyがなんかエラーを吐くので、rubyコマンドで直接buidlrを叩く。あれ、、なんかエラーがでるぞ。

C:\noop>ruby "c:\Program Files\ruby-1.8\lib\ruby\gems\1.8\gems\buildr-1.3.4\bin\buildr"

HelloWorld

c:\noop\coreやinterperter以下にnoopのコアライブラリやインタプリタやらが出来てるので、それらを使ってインタプリタを実行してみる。

C:\noop>scala -cp core\target\noop-core-0.1.0-SNAPSHOT.jar;interpreter\target\classes;antlr-runtime-3.1.1.jar;guice-2.0.
jar;aopalliance-1.0.jar noop.interpreter.InterpreterMain HelloWorld interpreter\target\resources\helloworld interpreter\
target\resources\stdlib
com.google.inject.CreationException: Guice creation errors:

1) No implementation for noop.types.BooleanFactory was bound.
  while locating noop.types.BooleanFactory
    for parameter 2 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

2) No implementation for noop.types.IntegerFactory was bound.
  while locating noop.types.IntegerFactory
    for parameter 4 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

3) No implementation for noop.types.StringFactory was bound.
  while locating noop.types.StringFactory
    for parameter 3 at noop.interpreter.InterpreterVisitor.<init>(InterpreterVisitor.scala:34)
  at noop.interpreter.InterpreterModule.getVisitor(InterpreterModule.scala:51)

3 errors
        at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:354)
        at com.google.inject.InjectorBuilder.initializeStatically(InjectorBuilder.java:152)
        at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:105)
        at com.google.inject.Guice.createInjector(Guice.java:92)
        at com.google.inject.Guice.createInjector(Guice.java:69)
        at com.google.inject.Guice.createInjector(Guice.java:59)
        at noop.interpreter.InterpreterMain$.main(InterpreterMain.scala:37)
        at noop.interpreter.InterpreterMain.main(InterpreterMain.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:75)
        at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.scala:49)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

うむ〜、エラーだ。前回のビルド時(9月頃だったか)の時はうまくいったのだが。。もう疲れたので寝る。

マジックテープ式財布iPhoneアプリ「彼氏の財布が」をリリースした

昨日ようやくアップルの審査が終わり、今日リリースしました!こんなアプリでも審査とおるんだな。
アップル オワタ\(^o^)/

ダウンロード(無料)
http://itunes.apple.com/jp/app/id338430266?mt=8


財布アプリはともかくニコ動もよろしく。

椎名林檎の「虚言症」のコード進行

なぜか最近、椎名林檎の「虚言症」が頭から離れない。コード進行がロックにしてはちょっと変わっている曲で、簡単には弾き語りできない。どんなコード進行なんだろとググッてみたけど、なにも引っかからなかったので簡単に耳コピしてみた。

イントロ
B-A(※1) x4

Aメロ
B - Baug - B6 - C#m
C#m - D#m - D# - G#
C#m - D#m - E - A
D#m - D - C#m - F#
(繰り返し)..CM7

サビ
F - E - F - E
G#m - C#m - A - C

(繰り返し)

C#m F#

(イントロに戻る)

※1:コード名不明。Aコードの5度の音を半音下げたもの

もっと装飾音だらけな気がする。間違ってたら教えてくださいな。