(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Railsエンジニア(仮)にジョブチェンジしました

2/17から新しい環境で働き始めて*1なんとか1週間乗り切りましたってことで近況報告的な。

過去4年間システム開発に携わってきて、それまでJava*2一辺倒だった僕がRailsエンジニア(仮)*3になったお話です。ちなみにJavaは言語でRailsフレームワークだ!っていうツッコミを貰う前に書いておくと、やっぱりRailsってRubyというよりはRailsって感じなので、この辺はRailsを書いている人なら分かってもらえるかなーと。

Railsエンジニア(仮)にジョブチェンジするためにやったこと

まず、大事なことがふたつありました。

  1. 上司の理解を得ることが出来てサポートしてもらえること
  2. やりたい仕事をするための知識/スキルを持っていること

1については元々僕が転職するときに既に社長に話をしていたし、社長は僕の将来を考えて積極的にスキルアップして欲しいと思っているので簡単にクリア出来ました。2についても当然のように思えるかも知れませんが、請負/派遣/支援/技術支援*4などといった仕事をメインにしている会社の場合、スキルを持っていないとそもそも仕事を貰えない/獲得できないというアタリマエのハードルがあるのでそれをクリアすることは必須です。まぁ余裕のあるプロジェクトならプロジェクトに入ってから学習することも出来るから経験次第ではいけるかもしれないし、逆に余裕のなさすぎるプロジェクトだと「Java書けるならJavaScript書けるでしょ」理論で無理やり書いたこともない言語のプロジェクトに押し込められることもあるんでしょうけど。

知識/スキルを身に付けると言っても一朝一夕で身につくものではありません。バスを待っている間に学ぶことが出来て、バス料金を払う間に実装できる言語も中にはありますが、Railsとなるとまずgem、bundler、rake、spec、assets pipelineにstrong parametersと覚えることは沢山あります。それらをひと通り勉強するのに僕は半年かかりました。頭のいい人なら1周間で全てを知って悟ってしまうのかも知れませんが、僕みたいな人間は半年かけてもまだ道半ばです。

道半ばと言ってもRailsエンジニア(仮)になれる程度の勉強はしたので、少しだけ勉強の軌跡を書いてみることにします。
Railsをインストールしたりrbenvを使ったりというのは、なんとなくググって出来たんですが最初に何から手を付けようかと考えた時に「とりあえず最新のRails事情を知りたいし、最新を使いたい」というのがあったので、何はともあれWEB+DBのVol73を購入して読みました。

WEB+DB PRESS Vol.73

WEB+DB PRESS Vol.73

  • 作者: 設樂洋爾,白土慧,はまちや2,大和田純,松田明,後藤大輔,ひろせまさあき,小林篤,近藤宇智朗,まかまか般若波羅蜜,Mr. O,川添貴生,重国和宏,柳澤建太郎,奥野幹也,佐藤鉄平,後藤秀宣,mala,中島聡,堤智代,森田創,A-Listers,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/02/23
  • メディア: 大型本
  • 購入: 12人 クリック: 131回
  • この商品を含むブログ (6件) を見る

その後は@さんに助けを求め…

以下の書籍を購入して、読みました。
Rails3レシピブック 190の技

Rails3レシピブック 190の技

RailsによるアジャイルWebアプリケーション開発 第4版

RailsによるアジャイルWebアプリケーション開発 第4版

列車本をある程度写経してみて、なんとなく「Railsってこう書くんだ」っていうのを掴めたら、レシピ本とにらめっこしながら自分が作りたいものを作っていくというような感じでやっていました。写経するだけで一ヶ月近くかかったのは内緒です。Rails4目線だと若干のズレがありますが*5、それでもまぁRailsを知るのにはなんだかんだでこれが一番手っ取り早かったです。どうしてもRails4の情報を補完した書籍が欲しいならpragprogあたりを検索すると列車本のwith Rails4があると思います。そろそろ日本語でもRails4を補完した書籍が出るらしいって噂ですが。
その後は当然のようにRSpecとはなんだーっていうところに行き着き、The RSpec Bookを購入して読みました。
The RSpec Book (Professional Ruby Series)

The RSpec Book (Professional Ruby Series)

RSpecRSpecでバージョン違いなので、書き方も全然違うので色々とあれなんですが考え方とか思想を知るのにはいい本じゃないかなーと。

こんな感じでだいたいひと通りざっと勉強して、実際にシステムを作ってVPSにデプロイしてみたりと色々しました。Nginx+Unicornとか情報が変なの多くて辛かったり、rbenvでRailsをシステムワイドに入れるとかめんどくさかったりと色々と大変な思いをしました(遠い目

余談ではありますが、このようにRailsを勉強し始めた背景には@がいて、そのお陰で僕は継続的にRailsを勉強していくきっかけを得て、Railsに没頭していくことになったのでもの凄く感謝しています。それから僕にjQueryCoffeeScriptを教えてくれた@さんには足を向けて寝ることができません。そして@さんにもお世話になって「仕事でのRoR」というものを教えてもらい大変為になりました。

ジョブチェンジするときに不安だったこと

さて、ジョブチェンジするときに「これから楽しみだなー!」ってことばっかりじゃなかったので、それも少しだけ触れておこうかと思います。

  1. ノウハウの無い状態からの再スタート
  2. スピード感の違い

今までは「Javaなら仕事するのに困らない程度の知識はある」という自負があったので、新しい環境というのも何も怖くはなかったし「Java7が使えるかな(ワクワク」といった古いバージョンではないJavaを使えるかも知れないという期待や、今まで触ったことのないフレームワークに触れるかもしれないという高揚感が強かったんですが、今回に関して言えばほとんど素人状態なわけです。ほぼ独学、ほぼ自己流という状態で、Railsでガリガリ開発している戦場のど真ん中に立ち「果たして僕は通用するのだろうか*6」、そういう不安がものすごくありました。それからRailsでの開発は開発速度とかがJavaのそれに比べて早いという印象があるので、それに付いていけるのかという不安も勿論ありました。けど、割となんとかなるもんですね(笑)

ジョブチェンジして変わったこと

まぁ見ての通り随分と変わりました。何使ってもいい*7っていう話だったので、自分が普段から使っているものを使いたいという話をしてUbuntuEmacs使わせてもらっています。当然ながら主要な言語も変わりました。今のところ毎日のように新しい発見があり、とても楽しいです。「このgem便利だなー」とか「coffeeでゴリゴリ書いてるなーここ」とか。あ、Coffeeはカンスーガタぽい書き方が好きなんですけど、めっちゃオブジェクトシコーぽい書き方されてて個人的に違和感を覚えたりします。classとかCoffeeで使いたくないやいやいやいや…。

当然ながらEclipseから解放され、Emacsを愛用しています。しかし、このプロジェクト唯一のEmacs使いぽい。あと、今までIDEで出来ていた諸々を全部コマンドで代用するようになったので面白いです。一番良く使うのはgrepかなぁ。それから念願の複数人*8でのGitを使った開発です。考え方は知っていたので、割と簡単に馴染めました。あと初git push -fを経験しました :p それと僕には無縁の話だと思っていたgit-flowも取り入れているので、少しテンション上がった:)

さらに主要な会話はほぼ全てSkype上で行われます。最初の2日くらいは通知が着たら「見なきゃ」っていうプレッシャーになれなくて鬱陶しかったけど、慣れたのであんまり気にならなくなったかも。あと、席を移動したりする必要ないし、僕みたいな人見知りはわりとインターネッツライクな会話手段の方が楽だったりするので気楽に質問できたりして便利でいいですね。まあ、HipChatでも何でもいいと思うんですけど、普段の会話ツールがあると「出勤」する必要も薄くなったりするので、色々と嬉しいことがあると思います。

「服装自由」なので僕はスーツ着てますが、好きで着ているので何も不満はないです。むしろ、僕以外のほとんどの人は私服なのでマイノリティ感あって良い。
あとはなんと言っても、「エンジニアとしてワクワクできる」のがとても楽しくて仕方ないですね :)

とりあえず1周間乗り切った感想と何故Railsエンジニアを目指そうと思ったのか

メソッドのシグネチャ変更しても実行時までエラー出ないので、マジでテスト大事だと思いました(小学生並みの感想)。
半年かけて学んだり、教えてもらった知識が役に立つというのは結構嬉しいもんです。そして、実際の開発で使われているノウハウと自分がこれまでに学び得たノウハウがたまに同じだったりして感動したりしています。同じプロジェクトのメンバはいい人ばかりだし、技術面でも優れた人ばかりなので凄く楽しいです。ちなみに仕事は楽しいですが地味にプレッシャーゲームなので、いい感じに緊張感出てて面白いですね。あと、比較的早く帰宅出来ているので疲れもあまりたまらないです。少しDVD観て夜更ししてしまうと眠いですが…。

Railsエンジニアを目指した理由ですが、ただただ「Javaプロジェクトが面白くない」のと「他の言語での経験を増やしたかった」んだと思います*9。それで一番取っ掛かり易かったRailsを自分の武器にしようと思ったわけです*10。自分が観測できる範囲で観測しているものだけを見て、全てを知ったかのように話すつもりもないですが、それでもJavaプロジェクトで「嫌だな」って思うことをあまりにも経験し過ぎたので、違う言語や文化ならもっと楽しく仕事出来るはずだと期待するのは仕方のないことだったと思います。

最後に

これは「ある人」に読んで欲しくて書きました。

先日、某所にてご飯を食べていたときのことですが、「知識の貯金」という話をしていました。僕が半年かけてやったことが多分それだと思います。
「やりたい仕事」を出来るようになるには、機会を待っていたりするだけではなくて、「自分が出来ること」を先にやっておくことが大事だと僕は最近になってようやく実感しました。勿論機会を得ることが出来る場所なのかという見極めも必要だと思いますし、機会を得やすい場所に行くことも考える必要があると僕は思います。
昔、勉強会に行き始めたばかりの頃の自分は社外にいる「新しいことに挑戦」したり「面白いこと」をやっているエンジニアと、社内にいる技術に対して興味を持たないSEを比べては良く愚痴を漏らしていました。だけど、それはそれというか愚痴を言ってばかりでは何も変えられないし、自分自身も変わらないんだなって。息抜きをすることと愚痴を垂れ流すことは違います。
そして、自分が変えれることが出来るものと変えることが出来ないものを見極めることも大事だし、自分が本当にやりたいことがなんなのかというを考えるのも大事です。
「朝起きて嫌々会社に行って残業して夜遅くに独りで泣くループを本当に抜けたいなら、お前はもっとやるべきことがあるんじゃないのか??」というのが昔の自分にも今立ち止まっている誰かさんにも今言いたいことです。

そんな感じで最後はちょっとアレな感じになっちゃいましたが、当面はRailsのお仕事なので頑張りたいと思います:)

*1:転職したわけではないです

*2:ジャバ

*3:カッコカリ

*4:最近、SESっていうんですかね??

*5:scopeにlambdaつかってなかったり、strong parametersなんかは当然ないですし

*6:イメージとしては戦国武将が中世ヨーロッパの槍と盾をメインに据えた戦場に放り込まれる感じ

*7:一番効率を出せるものを使ってもらえれば的な

*8:チーム

*9:もっと本心は深いところにありますが、このくらいにボカしておかないと死んでしまうので…

*10:RubyはMatzLispですし!?