Railsのスキルの世界観
ここ1年ほど色々な現場のお仕事をさせてもらったおかげで、Railsについてのスキルレベルの指標が見えてきた気がします。
Railsを使いこなせると自信を持っていえるほどのレベルにはまだまだ達してないですが、Railsのスキルについての世界観についてちょっとまとめてみようと思います
前提としての自分のWebベースのシステム開発で問われそうなスキル
以下でまとめますが、Rails/Rubyというのは、フリーランスになってから初めてだったりします。
ただ、技術の技術(ネットワークのTCP/IPとか)はまぁそれなりに頑張っていたから、その知識とか経験(BtoBとはいえあの規模のインフラ環境の経験はほんと貴重だった)は今でも十分活用出来てるかと思ってます。
インフラに関する領域
- WindowsのActiveDirecotryという企業向けのものだけどそっちの経験がベースである
開発に関連する領域
- プログラミング
マインド的な所
- インフラ寄りの経験が多い
- エンジニアの仕事をする前後では元々サービス業の経験が多かった
というのが下地にあるからか、既存のシステムの改修とか保守みたいなみんなが好まないような仕事はそんなに嫌ではないです。
あと、前職で色々な経験・立場の人との対話をだいぶしたおかげで、モノゴトを抽象化して、互いの共通言語となるものを見つけるのは苦ではなくって、その辺りの特徴を活かしてお仕事をいただくように心がけてます
1年ほど前に見ていた世界観
上記触れたように、Railsは仕事で書いたことがありませんでした。
SinatraベースでWebアプリ書いていて、Scaffoldで雛形となるものを作ってみたいなことはかろうじて出来たにせよ
- (当時は)メジャーなgemってよく知らなかった
- 1対多な関係の構造をRailsでどのようにして扱っていいのかイマイチわかってなかった
- Ruby自体もそんなに書けているわけではなかったので配列とかハッシュ操作とか全然スマートではなかった
という感じだった気がしてます。
ちなみにその状態でやった最初の仕事
我ながらよく頑張ったと思うけどこんなのを最初の半年ほどやってました。
- Rails4の仕事
- フロント側はAngularJSを使い始めていた
- RackサーバーにPumaが利用されていた
- 自分が入った段階ですでに担当者はx代目
- 引き継ぎとかそういうのはない
- 運用に関するドキュメントも基本無し。
その後に見えてきた世界観
上記経験した後ですが、色々縁があっていくつかの現場を経験したことで当初見えていた世界とまた違う世界が見えてきました
この時に自分なりに出来た(わかった)と思えたこととして
- 開発するシステムは異なれど、Railsの開発でみんながよく使うgemがあることに気づく
- Railsのレールにうまくのった開発をしていると、推測がきくから開発が楽になる反面、そこから外れると、凄く大変っていうのがよくわかってきた
という部分かなと思ってます。
一方でGitを単純に作業記録の延長線でつかっていたから、GitHubの有り難みがよくわからなかったというのが正直な所です
今年の春先頃に見えた次の世界観
よく使うgemがどんなものかわかってきたことで
- xxxは以前つかったことあるからそれ使った機能ならだいたいxx日程度で実装できそう
- 独自実装してるこの箇所は以前経験したxxxみたいなアプローチでいけそうというカンが効く
- 今取り掛かりつつあるこの実装はなんとなく気持ち悪いからリファクタリングが必要かもというのが自然に湧くようになった
- RSpecをどこまで書く・書かないという自分なりの判断基準がちょっと出来つつあった
- GitHubの便利さを実感した
- 基本リモートでプログラミングを教える仕事をしていたのですが、GitHubがあったおかげでそれが出来たのかな
という感覚をもてるようになりまいた。
それもこれも年始からGW頃までお世話になった受託開発+自社サービスをやってる会社さんの経験かなと思ってます。
次のステップに向けて自分が感じてる課題
ここまで長々と書いてきたのは、今後に向けて自分の課題というのがよくわかっていててめえらのRailsはオブジェクト指向じゃねえ!まずはCallbackクラス、Validatorクラスを活用しろ!みたいな話がまさに課題として出てて、ちょっと気分転換(というか現実逃避^^;)したくなったからだったりします。
負債の話はよく出ると思うのですが、今自分がやってる仕事に関して言うと、自社サービスの開発のお手伝いをしてて、
最近悶々としてることとか考えてることをいくつか書き出しておくと
- 構造上、どうしてもネストが深くなるオブジェクトをどう扱うか?
- 複数のContollerやModelで共通利用するような所はうまくConcernsを利用できるようになってきたけど、別のやり方があったのかもしれない
- ずっと探していてようやく見つけたメタプログラミングRubyで書かれてる内容が肌感覚でわかってきた
- そのおかげかわからないけど、他人が書いたgemとかを読む上で苦手意識が大分減った
という感じです。今見てる世界観が、数ヶ月後(もしかしたら数年後とかかも・・・)に変わっていたらまた頑張ってまとめようと思います