【前置き】
はい。週1のアウトプットのお時間。
ちょっとPlayFramworkアプリを置いておいて平日ぱらぱら読んだりやったRubyについてアウトプットをしておく。
ちなみに使用した参考書は以下。
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで (Software Design plusシリーズ)
ターゲットとして別言語を使ってPG出来る人や、
次の仕事でRubyを使うようになるとかそんな方がマッチする。
私の場合凄くマッチしてさくさくペアプロしてるような感覚でとってもお勧め。
ifなんですかforってなんですかメソッドとはクラスとはって方にはお勧め出来ない。
これだけで現場で必要最低限の知識は付くと著者さんが言ってるので信じて呼んでアウトプットしましょ。
【環境について】
他言語からやろうと思った時、たとえばJAVAでいうJDKをインストールしなければRubyは使用出来ません。OSで導入に差異がありますが調べて簡単そうなのをピックアップ。
Linux⇒OS標準のRubyを使う。
Windows⇒RubyInstallerを使う。
OS差異についてはこんな感じ、私がRubyを認識した時の頃はLinux専用機な感じがしたがwindowsでもインストーラーが出て動くようになった模様。
ちなみにwindowsの場合、別口でも方法があってそれは以下。
・仮想環境にLinuxOSをインストールして使用する。
・AWSのCloud9を使用する。
ちなみに仮想環境とは、その昔HDの領域を切り分けてOSをインストールするというのが主流だった覚えがあるが最近では仮想環境というものがある、VirtualBoxだったりVMwareだったり、他にもいろいろあったり、興味があれば調べてみると知識が広がって為になる。
どういうものかざっくり言うとソフトウェア上にOSをインストールする事が出来るという事。昔でいうHD領域を切り分けてOSをインストールする、っていうのをソフトウェアがやってくれてるようなもので、いろいろ言語に手を出したいとかじゃなくて、Rubyをがっしりやりたいけどwindows端末しかない方はこのやり方を推奨します。Ruby以外にもサーバーはほぼLinuxなのでLinux扱いに慣れる必要がありますしね。
いろんな言語をやりたいって方にお勧めなのがAWSのCloud9を使う方法。
Cloud9は言うなればクラウド接続するだけで使用出来るIDEで、RubyだけでなくJavaでもCでもhtmlでもいろいろ動かせる。自社管理の端末だと何かとインストールする時に管理者権限必要でろくに開発環境整えねぇ!って方にとってもお勧め。デメリットは完全イングリッシュの為、苦戦する人もいると思う。
で、今回は今後の事も考えてCloud9を使用。
ちなみにCloud9は手軽にrailsを導入する事が出来ます。
【Ruby特有メモ】
まず前提としてRubyは動的型付けで、Javaとは違って動かした時エラーを吐いたりする。
Javaはコンパイルでエラーがわかる、eclipseで赤字吐いたりとかはそのため。
以下、違いを認識する為にざっくりまとめる、若干違ったりするけど既にある知識とマッピングする事で本質まで覚えなくてすみそうなので。本当はAWSにソースとか叩き込んだのでそれ乗せたかったんだけど・・・
・オールオブジェクト⇒なんでもメソッドが引っ付いてくる。
・nullの代わりにnilがいる⇒javaだとぬるぽしそうな判定処理でfalseのようにnilが使える便利
・配列の扱いがとっても柔軟。文字列すら配列のように扱える配列の比較が出来たりする。
・ハッシュ⇒JAVAのMAP
・シンボル⇒変数をインデックス番号にするようなもの。ハッシュのキーにする事で処理をスマートに出来る。
・ブロック⇒javaでいう拡張forの柔軟バージョン
・定数はフリーズしないといけない⇒JAVAでいうstaticfinalって魔法文だけじゃ固まってくれない。しかも要素まで固めないとゆるゆる
・モジュール⇒javaでいうライブラリみたいなもの、includeとかextendsして使う。
・self⇒staticみたいな感じ
3分の2ほど読んでやってピックアップダイジェスト。
もちろんこれ以外にも説明も細かくやった内容を追うように例題とかあるので参考書の購入をお勧めします。今回はここまで
【少しやった感想】
選択した参考書が優秀だった事もあり結構さくさく進めれる
で楽しくプログラミング出来る!って理念通り書き方のパターンと柔軟性が凄いこれは凄いメリットだと思う。逆に書き方のパターンが多すぎるというのもデメリットと思う。参考書途中にリファクタリングフェーズがあるが熟練者と初心者でコードの差がくっそ出ると思う。大規模になればなるほど書き方がばらばらになりそうなので打ち合わせ規約の意識あわせが大変そうです。
【最後に】
エンジニアは常にキャッチアップ人生だと思うが、幅が広かったり転職活動とか業務とか重なると結構きつかったり・・・やりたいこといっぱいで時間がネ・・・
転職活動しつつ思う事があり、Javaしてます⇒Java求められてる企業様へってのはありありだと思うけど、マイナーな言語っていうのも失礼かもだけどその言語の経験者ってそもそも巡り合う事が困難だと思ったりしてて。ってなるとキャッチアップは必要としてそんな別言語スキルチェンジする方ってよくいるのかなぁと。