2013年10月9日水曜日

Railsでモデル生成のお勉強中

今日はこの辺りRails Guide - Getting Started with Rails#Adding a Second Modelを参考にしてrailsでmodelの実装をしてました。あまりの簡単さにびっくりした。

とりあえずrake generate modelでモデルの定義をするとmodel classとそのUnit Testとdbのmigration fileをわんさか作ってくれます。DBのmigration手順はここ(Rails Guide - Active Record Migrations)に良くまとまっていますが、必要に応じてindexやrelationなんかを追加しつつrake commandで簡単にDBを作る事ができます。rake db:migrateでdb/migrate以下に作られたmigration fileを元にじゃんじゃかテーブルを作ります。以下の順序で行われるっぽい。

  1. db/migrate以下のファイルからテーブルを作成
  2. データベースからdb/schema.rbを作る
また、rake db:migrate:resetを実行するとmigration filesからテーブルを作成してseed.rbを作り直す。db:resetだとseed.rbからテーブルを作るのでmigration fileを何回変更しても変わらない。
少しハマった…。

rakeのコマンドとかもまだ全く覚えていないのですが、rake --tasksで他のタスクがぞろぞろでてきてくれます。rake -Pで親タスクやその依存関係とかも出力してくれるっぽい。

例えば上記のdb:migrate:resetは3つのタスクを組み合わせたものらしい。

rake db:migrate:reset
    db:drop
    db:create
    db:migrate
また、rake test:allでUnit Testの全実行をしてくれるっぽい。

db/seed.rbに開発環境用のデータを用意できる。rake consoleから実行するのと同じように$class.new(:$field1 => $value)みたいな感じで書ける。RubyのScriptなのでファイルから読み込んでLoopでオブジェクト生成とかも非常に簡単にできそう。rake db:seedだと単純にseed.rbからデータをLoadする。rake db:setupだとスキーマごと作り直してからデータをLoadする。ちょこちょこデータファイルを変更する時は後者を使う。

あ、後作ったModelやそのObjectはrails consoleから確認してったら超効率よくできた。こんな感じで一通りモデルを作って、DBに反映させて、テストして、開発用データの準備までが半日かからずにできちゃいました。DBとModelの定義を固定して厳しい命名規則を受け入れるだけでこれだけの恩恵をうけられるとは。明日はRSpecを導入する予定。Rails楽しいね。

2013年10月8日火曜日

Cambridge到着

無事にTeir1 Visaもとれてケンブリッジに引っ越しをしました。人口も十万人少々しかいない小規模な町ですが生活に必要なものはすべて揃っているし、人々も親切で治安も良い非常に住みやすい町だと思います。緑が多く綺麗ですし、食べ物も想像していたよりずっと美味しいです。短くとも2年くらいは住む事になるはずなので、とても素敵な町で安心しています。



ケンブリッジで落ち着くまでの一ヶ月間は本当にドタバタでした。転職直後で慣れない仕事を進める傍ら、大学で授業を行いつつ、もろもろの住所変更やら部屋の引き払い等の引っ越し準備を行い、数多くの送別会でお別れを言いつつ、さらに父親が心筋梗塞で倒れるという災難まで重なり毎週名古屋に帰省するという、間違いなく僕の人生で一番大変だった訳の分からない一ヶ月間でした。幸い一度は心臓が止まった父親は後遺症もなく順調に回復し、僕も無事予定通りにケンブリッジに辿り着く事ができました。と思いきや初日というか飛行機の中から体調を崩して到着日に救急病院のお世話になるという超ドタバタが続き、体力的にも精神的にも疲弊しきっている状態だったのですが、仲間の支えもあり一週間たった今では十分に落ち着いて仕事に集中する環境ができています。

初めの週で銀行口座開設、携帯電話の契約、NHS(国民保険サービス)の登録、職場での環境設定、自転車購入などの必要最低限の生活インフラもひと通り整い、町にも少しずつ慣れてきました(まだけっこー迷うけど)。同じようなスタートアップ企業が集まるCo-Workingスペースが職場なのですが、早速他の会社の日本企業との商談を手伝ってあげたりして人間関係も非常に上手くいっています。

食べ物も思っていたよりは遥かにまともそうです。レストランもちょっと値段は高いけど十分美味しいし、スーパーも豊富にあるので近くのコリアンショップで肉を買って焼き肉をしたり、チキンを一匹オーブンで焼いて食べてみたり、日本のカレーライスを作ってみたりなどなどして食事を楽しんでいます。また、こちらは食べ物のデリバリーがすごく盛んなのでJUSTEATで調べれば数えきれないくらい多くデリバリー料理が見つかります。



父親の件もあり自分のこれからの人生や生死なんかについて一度落ち着いて考えてみたいななんて思ったりもする訳ですが、とりあえずは後悔のないように新しい仕事に全力で打ち込んでみたいと思います。街を案内できるくらいにはなっておくのでイギリスにお越しの際には是非お立ち寄りください。

2013年9月20日金曜日

Ruby2.0.0 & rails4 & Postgres on Herokuの環境づくり

Rails4をHerokuで動かす環境を整えた覚え書き。Postgresを使った一番スタンダードな仕様(のつもり)。


Ruby Mine
IntelliJに慣れつつある僕はRubyMineを使いたい。VimのKeybinding使えるし、デバッグしやすいし、安定しているし、良い!




Ruby on Rails
Homebrewとgemで適当にインストールした。超簡単なので覚え書きもしません。

RVM
その後、RVMでバージョン使い分けようとしたら少しはまった。たぶんHomebrewのと干渉したんだと思う。
https://rvm.io/

こんなエラーが出てしまった。
/Users/ippei/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed to generate an executable file. (RuntimeError)

You have to install development tools first.


以下をしてruby2.0.0とsqlite3をインストールし直したら直った。
rvm get head
rvm --force install 2.0.0
gem install bundle
gem install sqlite3

Postgres

Postgresはここを見ながら設定。Macでの設定はPostgres.appを使うと一瞬で済む。
https://devcenter.heroku.com/articles/heroku-postgresql

と思いきや何故かSocketのI/Oの場所がpgライブラリが見に行く場所と違ってエラーになるっぽいので、無理矢理以下のlinkを作って解決。

lrwxr-xr-x  1 root  wheel  4 Sep 10 09:14 /var/pgsql_socket -> /tmp

後はPostgresにアプリケーション名でユーザを作りつつ。
$ createuser -U ippei -P $user_name
Enter password for new role:
Enter it again:
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
rakeでDBを作る。
#rake db:create


Heroku


とりあえず、Herokuのインストラクションをみながら設定。すでにsqliteでひな形を作ってしまっていたので少しつまづいた。Herokuは基本Postgresぽいです。

以下のツールベルトというのがコマンドラインツール。いろいろ便利。
https://toolbelt.heroku.com/

上記の設定を済ませた上でHerokuのレポジトリにpushすれば動くはず。

Reference
https://devcenter.heroku.com/articles/rails4-getting-started
https://devcenter.heroku.com/articles/heroku-postgresql

2013年9月16日月曜日

非常勤講師@早稲田大学 - モバイルプログラミング

先週のJava(という名のScala)の授業に引き続き、今週はモバイルプログラミングというテーマで、Smart Phone向けのWeb Applicationを作るという授業を一週間行ってきました。今週は生徒が10名以上と多く一人一人のコードを細かく見る事ができなかったため、前回よりは講義形式に近い形で授業を進めました。本当は前回と同じようにGitHubのアカウントを作らせてpull requestで課題提出とか、作ったアプリをHerokuで公開して提出くらいまでしたかったですが、さすがに生徒数が多くそこまで手が回りませんでした。

でも授業の出来としては上々で、生徒全員が毎日出席してくれましたし、プログラミングの経験が乏しかった生徒達も最後の課題ではjQueryとTwitter Bootstrapを使ってレスポンシブなUIを作ったり、Google Chartsでグラフを作って利までできるようになりました。やはり皆さん若くて覚えが早いからかw、僕の期待よりは遥かに早いスピートで吸収してくれました。

今回のクラスでは「ドットインストール」をかなり活用しました。動画で学べる初心者向けのプログラミングサイトです。ドットインストールの動画を見せて、僕がライブコーディングをしてみて、生徒に実際に試してもらうというステップで進めてみました。やっぱり僕が空いた時間でちょこちょこ作った雑な資料なんかを使うより、より質の高い資料を生徒に会わせて上手く作った方が上手く教えられるという事が実感できました。これまでは教科書を使って授業という形が主でしたが、今後は授業によっては「Coursera」とかの外部の質の高い講義ごと利用しちゃったりした方が質の高い教育ができるんじゃないかななんて思ったりしました。そうすれば講師が個々の生徒のフォローに使える時間も増えそうですしね。

前回と同じように授業で使ったスライドとコードはSlideShareとGitHubで公開しています。また資料や生徒の課題はWebで公開してあります。

GitHub: https://github.com/peisan/WasedaMobileProgrammingClass
URL: http://mpwaseda.herokuapp.com/

2013年9月7日土曜日

非常勤講師@早稲田大学 - Java Programing上級

今週は夏期集中講義の非常勤講師として早稲田大学でJavaの授業を行なってきました。Javaといいつつ実は殆どをScalaで進めてしまったのですが。「Java Programing 上級」という授業だったのですが、やはり学生さんということで経験が浅く、準備した資料をアドホックに変更しながら初心者向けの授業にしました。

大学の先生達と同じ事をしていては面白くないので、IntelliJ、Github、Homebrewなどを導入して実際に僕がグリーで行っていた開発環境に近いような形で授業を進めてきました。最後の課題では素因数分解のプログラムを書いて貰ったりしたのですが、終了時にはPull Requestで提出してもらいました。

開発環境のセットアップに思った以上に時間がかかったりなど反省すべき点も多々ありましたが、生徒も楽しんで積極的に授業に参加してくれましたし、何よりどんどん吸収して上達していく生徒を見ているのが僕も楽しかったです。

ちなみに授業で使ったプログラムはgithubで公開、スライドはSlide Shareで公開しています。

github - https://github.com/peisan/WasedaAdvancedJavaClass

2013年9月5日木曜日

グリーで覚えた&忘れた単語リスト

GREEに入って覚えた言葉と忘れそうになった言葉をなんとなく羅列してみた。まぁ、何を学んで何を忘れていったのか何となく想像できますね。今度もう少し丁寧に整理してみようかな。

覚えた

  • CDN
  • LVS
  • Web Storage
  • App Cache
  • CSRF
  • SPOF
  • UX
  • DAU
  • MAU
  • UU
  • ささる
  • くばる
  • デグレる
  • 上長
  • リア充
  • ネト充
  • スイーツ()
  • ボトラー
  • 懐古虫
  • イカ娘
  • まどマギ
  • プギャー
  • モヒカン
  • マサカリ
  • ラブライブ
  • Homebrew
  • git-flow
  • Coffee Script
  • Tyepe Script
  • Zepto
  • node.js
  • PHP
  • Ethna
  • Shading
  • Master / Slave
  • play framework
  • finagle
  • sbt
  • Redis
  • DDD
  • Monad
  • Scrum

忘れそう

  • Bloomberg Tickers (jb/js/jl/...) 
  • Reconciliation
  • Tweak
  • PNL
  • Delta
  • FUTEQ
  • PVBP
  • Interpolation
  • fix / float leg
  • xccy
  • basis swap (e.g. 3m / 6m)
  • fixing risk
  • LIBOR / TIBOR / EURIBOR
  • Spring Framework
  • RMI
  • RMDS
  • dbunit


2013年8月25日日曜日

卒グリー(中退かも)

今月末で1年5ヶ月働いたグリー株式会社を退職することになりました。短い期間でしたが多くの大変貴重な経験をさせていただく事ができました。もう少し残ってさらにたくさんの事を吸収したかったというのが本音ですが、新たなチャレンジのために卒業(中退かも)させていただく事になりました。

思い起こせば入社時には、僕を採用してくれたはずの伊藤直也さんという有名なHackerが前日に退職しており、なんとドラクエ三昧になっているらしいという噂がなんてトラブルもありつつもオオヒダさんを初めとした他のメンバーがあたたかく迎え入れてくれたおかげで、投資銀行という全く異なる業界から来た僕も、すぐにチームになじむ事ができました。今はラクスルにいる山下雄太さん、山田あかねさんにも、当時は大変お世話になりました。

入社当時は、大手の証券会社という全く別の業界からきた事もあり、コミュニケーション面でも、技術面でも勝手が分からずおどおどしていたのを覚えています。「IRC?LVS?CDN?DAU?SPOF?なんだそれ?」みたいな。システムのリリース時にも何百台という単位のサーバにデプロイをするのはWeb業界のない僕には初めての経験で、初めは心臓バクバクでした。大きなミスをやらかしたりもしました。そんな僕でしたが数百万DAUという巨大Webサービスが如何にして運用させているのかというノウハウも少しずつ身につけ(実はけっこー日曜大工的ですw)、後半には海外のチームとの共同プロジェクトのマネジメントや、新規プロダクトの立ち上げ業務や、非常に技術力の高いエンジニア達のマネジメントも任せてもらえるようにまでなりました。特にかとじゅんや上村君の元ドワンゴ勢と一緒に仕事するのは本当に刺激的でした。本当はかとじゅんからもっと色々吸収したかったな。

グリーに入って一番感じた事は、技術好き、プロダクト好きの人の多さと、現場の裁量の大きさでした。やはりJPMorganという巨大な国際的大企業から、グリーという大きくなったとはいえまだベンチャー気質の残るインターネット企業への転職ですから、インパクトが大きかったのだと思います。

本当に技術が好きで、自分の作っているプロダクトが好きで、それが世に出てサービスとして使ってもらえる事を一番の喜びにしている人たちが本当に多かったです。プロダクトとかじゃなくて、常に自分の好きな技術を押し通してみたいな人達もいたしw。JPMorganにいた時は、モチベーションは「お金を稼ぐ」という人が殆どだったと思いますが、グリーは本当に多様で、モチベーションって人によってこんなに違うんだなというのを強く感じました。

裁量の面では、グリーでは与えられた仕事の枠をいくらでも広げたり壊したりできるというか、そもそも枠自体がすごく曖昧。というかテキトーすぎ!もう少しちゃんと決めろwむしろ枠を勝手に広げてしまえるような人が評価されていく感じ(もちろんちゃんと会社の利益になればだけどね)。JPMorganはやはりマネジメント主導の会社で、仕事の枠が予算とか上司や関係部署の承認などによってきっちり決められており、僕は前の職場で決められた仕事をサラリーマン的にこなしていくような働き方に慣れてしまっていたので、グリーの裁量の大きさはかなり衝撃でした。 今ではその裁量の大きさが僕のモチベーションの源泉になってしまっていますが。

あと、CTOの藤本さんにも驚かされました。CTOなのに現場レベルの仕事に自ら積極的に関わってくれている。僕も一度ヘマをした時に、付きっきりでフォローをして頂いた事がありました。マネジメントも現場のエンジニアを理解して、いかに僕らが仕事をしやすくするかを考えて進めてくれていました。憧れの存在です。

あ、なんかこう比べるとJPMorgan批判みたいになってしまいましたが(汗)、前職で身につけた能力があったおかげでグリーでもこれだけの事を吸収できたのだと思います。日本国内のエンジニア職であれだけグローバルな環境で働けたというのは本当にありがたい経験でした。国際感覚はかなり身につきましたし、証券業務のという複雑で専門性の高い知識、もちろんシステム開発や運用のスキルも身につきました。おかげで転職時も引く手数多でしたし:)

そうそう、最後に、グリーで働いたせいで「リア充」という言葉もしらないくらいリア充だった僕が、たった1年ちょっとでかなりWeb系のヲタの人達に順応してきてしまいました。朝会社こないし、短パンにサンダルだし、変な言葉いっぱい覚えたし、実は最近では変なアニメとかも見るようにまで…。グリーを突き抜けてドワンゴ化してしまいました。

それでは次のチャレンジへと進んでいきたいと思います。グリーでお世話になった方々、壮行会で暖かく追い出してくれた方々、どうも有り難うございました。おかげさまでいつも笑顔で楽しく働く事ができました。



2012年4月30日月曜日

JPMorganからグリーへ

新卒で入社して五年間働いたJPモルガン証券を退職して、今月からグリーでSNSの開発に携わることになりました。外資系証券会社のエンジニアからインターネット企業への転職という珍しい転職例なののですが、どのような考えで転職に至ったのか公開できる範囲でまとめました。一番の理由は、世界中の人々の生活を変えつつあるSNSの世界に関わりたかったからです。

まず、JPモルガン証券を退職した理由ですが、従業員のレベルは本当に高く世界中からとびっきり優秀な人達が集まった素晴らしい職場でした。僕は債券システム部という部署にいたのですが、東京オフィスでさえチームメンバーのほとんどが外国人で、毎日のように世界中(ニューヨーク、ロンドン、シンガポール、香港、ムンバイなど)のメンバーと協力して業務を進めていたので国際感覚はかなり身につきましたし、証券業務のという複雑で専門性の高い知識を身に付けることもできました。勿論、システム開発や運用のスキルも身につきました。

ただ、証券会社ということもありエンジニアが主役ではない点や、大手金融機関ということでコンプライアンスが厳しく社内の手続きが猥雑という点はありました。なので、ここ数年間でFacebookやTwitterを始めとする世界を変えるほどのインパクを持つ新しいWebサービスがどんどん出てきて、Facebookの「The Hacker Way」に象徴されるようなエンジニアが先頭に立って自由にサービスを作り上げていくインターネット業界には強く憧れていました。

数あるインターネット企業の中からグリーを選んだ理由は、SNSに対する興味、エンジニアを重視するカルチャー、積極的な海外展開の三点です。

まず、SNSに対する興味ですが、僕はFacebookのヘビーユーザです。最近はSNSを利用することによって自分のコニュニケーションのスタイルが変わり、時間や場所を越えて効率的にコミュニケーションがとれるようになりました。最近では友達と連絡を取るときにはメールではなくFacebookメッセンジャーで話すことが多いですし、人と知り合うときにも携帯番号などではなくFacebookで友達申請し合うようになっています。グリーのSNSはまだFacebookほど洗練されたものではないかもしれませんが、ゲームとの連携や半匿名性のような特徴を利用してFacebookとはまた違うタイプの面白いプラットフォームになる可能性があると思ってます。

次にエンジニアを重視するカルチャーです。転職にあたって他社ともお話をしたのですが、私が検討した会社の中ではグリーが一番エンジニア主導の会社だというイメージを持ちました。社長が自ら作って始めたSNSサービスが会社の始まりですし、創業時のキープレーヤーの多くがエンジニア出身という点が大きく影響しているからだと思います。会社によってはエンジニアは他の人のアイデアを実現するためのリソースとしての位置づけという印象をもった所もありましたので、そこは大きな魅力でした。

最後に、積極的な海外展開ですが、グリーは世界市場をを狙える日本企業という点でもとても魅力的でした。今までは「世界展開している外資系大企業の東京支社」で働いていたので、意思決定権をもっているマネージャーがロンドンにいたりして、予算や技術的な枠組みがすべて海の向こうで決まった後に僕らがそれに合わせてプロジェクトにアサインされれローカライズするような形でした。なので、程よい規模で世界展開をすべく急激に成長している企業で働けるという点は大きな魅力でした。JPモルガンで海外のエンジニアチームと協力してプロジェクトを進める能力はかなり身についたと思うので、今度は日本から世界へという部分でその能力を活かせたら嬉しいです。

そんな感じで4月頭に入社して丁度一ヶ月経ちますが、基本的にはイメージしていた通りの会社で順調にやってます。特に、前職がマネジメントが強い会社だったこともあってか現場主導の環境にとても心地よさを感じていますし、カルチャーの違い(全然違うよ!)なども楽しめています。その辺りを含めて、まだブログに書きたい事はいくつかありますが、今回はこの辺で。

2012年4月22日日曜日

Graph APIとGAEでお遊びアプリ

実は先月暇だったので、WebアプリケーションとKVS(Key Value Store)のお勉強をすべく、FacebookのAPIとGAE(Google App Engine) Pythonを使ってFacebookのフィードや友達、所属するグループの簡単な統計情報を表示する小さなアプリケーションを作りました。まぁしょぼいアプリですが、ここでちょろっと紹介します。

http://pei-fbstats.appspot.com/

基本的にはfacebookのGraph APIを使って友達の性別や所属、コメントやLikeの数などを集計しているだけのアプリです。遥か昔に忘れたHTMLの書き方とか、GAEの使い方や初めて書くPythonやjQueryやKVS(結局使わなかったけど)の使い方とかを覚えながら、のべ二週間くらいかけて作りました。Feedのコメント数とかが微妙に上手く取れていないことがあるような気もしたりするので、お遊びの参考程度だと思っててきとーに使ってください。ユニットテストすら書いていないので…。気が向いたらちゃんと確認します。

なんか問題があっても責任はとりませんがw、当初のKVSのお勉強をするという目標とは裏腹に、実はデータは全くKVSにストアしていないのでデータ集めてるとかはないです(KVSは使ってみたし勉強はちゃんとしたけどね!)。でも、毎回Graph API叩くのはさすがにパフォーマンス的にどうかと思うので、cache目的で使った方がいいだろうなぁとは思ってます。まぁでもその目的ならBigtableではなくmemcachedになるか…。でも、たぶん転職直後で忙しくて触ってる暇はもうないですが。

以下、使ってるサービスとかライブラリの説明です。たぶんWebプログラミングに慣れてるひとからするとアホみたいな話でしょうが。僕が5-6年前に大学でやっていた頃と比べると、特にクラウドサービスとかJavascriptのライブラリの充実ぶりが半端無くて、本当に簡単にWebサービスが作れる時代になったんだなぁと実感しました。

GAE
サーバ借りたりとか面倒だし、勝手にスケールしてくれるし(そんなに使う人いないと思うけど)、僕みたいな怠惰な人間には最高のプラットフォームです。余談ですが、GAEではurllib2.urlopenは使えなくてgoogleの用意したurlfetchっていうライブラリを使わないといけないみたいです。socketが使えないのが理由みたい。軽くハマりました。詳しくはここで(The URL Fetch Python API)。

Facebook Graph API
言わずと知れたfacebookのAPIです。リクエストの数が多い時には複数のリクエストをまとめてPOSTできるbatch機能とかもあったりして便利でした。けっこー、レスポンスに時間がかかったりするのでtimeoutとかpagingとかのパラメーターを上手く調整する必要があります。でかいデータにアクセスしようとすると、時間かかったりレスポンスがなかったりするのはこいつのせいです。(嘘です。ぼくが怠惰でエラーハンドリングとかcacheとかしてないせいです。)

jQuery
Webに慣れてる人は何を今更って感じでしょうが、奇跡のライブラリですねこれは。恥ずかしながら今回はじめて使ったのですが、非同期の処理が本当に簡単にできてしまってjavascriptの敷居を一気に下げるツールです。6-7年前に自分でオブジェクト作ってブラウザごとに分岐したりしてAjaxの処理を作っていたのが懐かしい(というか馬鹿みたい)。

simplejson
Graph APIはJSONでデータを返してきますし、このアプリも基本的にサーバ側はJSONでデータを返すだけで、クライアント側がサーバから返ってきたデータを可視化しています。実はJSON形式のデータって今まで使ったことなかったんですが(証券会社勤務だったのでJavaでXMLみたいな堅いメッセージングばっかり)、すごくシンプルなデータ構造ですし、このライブラリを使ったら超簡単に扱えました。pythonの配列や辞書形式のデータとJSONの文法がほとんど同じだったなのですぐに慣れました。python2.6以降ではデフォルトで含まれているみたいですが、GAEがサポートしているpython2.5に含まれていないので自分で落としてきました。このチュートリアルが分かり易かった。

gae-sessions
後はwebappというGAEビルトインのフレームワークにはSession管理機能が含まれていないためgae-sessionsというセッション管理ライブラリを利用しました。たしかmemcachedを使ってるライブラリだったような。

Google Graph Tools
グラフはGoogleのAPIを利用しました。javascriptのオブジェクトにデータ突っ込むと勝手に綺麗なグラフを作ってくれます。pie chartとbar chartしか使わなかったけど本当はもっと色々と細かいことできるみたいです。

Graph API Explore
Graph APIで遊ぶなら必須ツールです。APIがどんなメッセージを返してくるのか簡単にチェックすることができます。

Favicon Generator
faviconはこれでテキトーに作りました。

git
Dropboxをレポジトリにしてgitで管理しました。一度、リファクタリングしたらGitHubに乗せてみようかな。


今後追加してもいいかなぁと思っているもの
  • キャッシュ。毎回時間かかり過ぎだから。
  • 人の名前をクにその人のFBページのリンクをつける。(Google Chart Toolsで簡単にできそう)
  • 自分と一緒にタグ付けされている人のランキング
  • 友達やグループメンバーのフィルタリングツール(友達を所属とか年齢や性別みたいな属性で絞り込むような機能。絞り込み後にメッセージ一斉送信とかできたら更に使えるかなみたいな。)

2012年3月12日月曜日

昔のブログ「外資系投資銀行を選んだ理由(2006年03月20日)」

最近、大学の研究室のサーバで眠っていた僕の修士課程時代のブログを見つけたので救出して読んでみました。2005年〜2007年くらいまで書いていたのですが、特に就職活動やキャリアの考えたかに関して興味をもって貰えそうなエントリーがいくつか出てきたので、基本的にはそのまま転載する形でいくつか紹介していきたいと思っています。

僕は修士課程在籍中の2005年3月のにJPモルガン証券のシステム部門に内定して2007年の4月から新入社員として入社したのですが、以下のエントリーはその時にどうして僕が外資系投資銀行のシステム部門という特殊な職を選んだのかを説明したものです。

6年経った今ではソフトウェアエンジニアの争奪戦が起こっており、高度な知識や技術をもったエンジニアの価値や待遇がどんどん高まっているという点では、この時の僕の考えはかなり的を得ていたと自分でも思っています。このエントリーで述べている僕のITコンサルやSIerに関する見方はちょっとステレオタイプな部分もあるかもしれませんが、今でも自分のキャリアに対する考えはこの時と殆ど変わっていません。6年前のひよっこ時代にも、それなりに物事を考えていたんだなぁと昔の自分にちょっと感心 :)



2006年03月20日
外資系投資銀行を選んだ理由

初のトラックバックです。以下のブログを読んで思うところがあったので。
「Life is beautiful: ソフトウェアの仕様書は料理のレシピに似ている」
要約すると、日本のシステム開発は「上流→下流」とゼネコンみたいに階層化されていて、プログラムもろくに書かない上流コンサルタントの設計を下請けの下流プログラマが仕様書どおりにコーディングするという構造になっている。そんなの効率悪いし、品質のよいソフトウェアはできないよという話。
この問題は、就職活動をするにあたってソフトウェア・エンジニアとしてガリガリと開発ができる職種を求めていた僕が、外資系投資銀行のテクノロジー部を選んだ大きな理由の一つ。
日本のシステム開発は上記のような階層構造になっているため、価値の高いことをしようと思うと、ITコンサルタントという職を選ぶしかない。IBM、アクセンチュア、野村総研とかのね。こういう企業では入社しばらくはプログラマとして下働きをして、その後に「泥臭いコーディングなんてしないコンサルタント」としてステップアップするらしい。その後は、マネージメントやお客さんから仕事をとってくる営業活動がメイン。技術重視では出世できない。実装を行う下請けの会社では、プログラムを書かない人達が作ったガチガチの設計書を元に、就職して初めてプログラムを書くような経験の少ない人達がコーディングを行う。「プログラマ=初心者」という感じで、プログラマの地位は低い。階層構造の上の方からしっかりと利抜きされて仕事が回ってくるため給料も低い。
この階層構造の中での仕事を回避するために、少数で効率の良い開発を行っている企業をターゲットにしてみた。初めに考えたのは外資系のソフトウェアベンダーやインターネット企業。ソフトウェアベンダーとしてはマイクロソフトやオラクルが挙げられるけど、開発の拠点はアメリカで、日本の支店はそのローカライズや顧客サポート、営業が大半を占める。やっぱり一番魅力的な会社はGoogleなのだが、さすがに敷居が高すぎるし、どうしようかなぁと悩んでいたときに出会ったのが外資系投資銀行のテクノロジー部門。
基本丸投げの日系金融機関と違って、外資系投資銀行ではITをとても重視している。開発は少数のエンジニア達により殆ど自社で行う。エンジニアには金融工学などの数学的センスも求められるみたいで、専門性が高い。ここで頑張ればコンピューター・サイエンスと金融数学を武器にできると思って、この業界に決めた。海外のエンジニアさん達との共同開発や、成果を重視する評価精度も魅力的だった。日本の会社って若いうちは安い給料で奉公って感じだから。まぁ、エンジニアが主役となる会社ではないっていうのがネックなんだけどね。
採用人数はとても少なく、面接は英語ばかりだし、いきなりプログラムを書かされたりと大変だったが、運良く内定を頂くことができた。という訳で外資系投資銀行のテクノロジー部門に就職する事になった。