Rails 4 技術者認定シルバー試験 に合格しました

お礼

まずは、以下のサイト様。
macera.hatenablog.com

このサイトを、一日何回も毎日ずっと見続けました。
この試験、あまりに情報が少なくて何を勉強して良いかわからず(問題集も評判悪いようですし)、不安で不安で、もう何回も見なおしました。
今回この日記を書こうと思ったのは、私のように不安でたまらない、という方の助けになれば、と思ったのがきっかけです。
ただ、もう Rails5 が出ちゃってるので、今からこの試験受ける人いるかな?という気はしますが・・・。

受験の動機と合格まで

今回、この試験を受けようと思ったのは、先月中頃、何か試験受けたいなぁと思ったとググってると、この試験が先月まで再試験無料だったからです。
で、一回落ちました(苦笑)
正直、あまりに何を勉強して良いかわからなかったので、参考にさせて頂いたサイト様と同様、一回受けてみるか、という気持ちで受けてみました。再試験無料で良かったです。
一回目の受験までは勉強期間は二週間でした。詳しい勉強法は後述します。
一回目は3問も足りませんでした。正解率は6割でしょうか。
ただ、これは(2回目の試験でわかったのですが)ミスリードしていたのと、部分的に勉強不足のためで、それを踏まえると一回目でギリギリ合格できていたなと思っています。
二回目は更に一週間後で、正解率は8割強でした。

勉強法と結果からの対策

以下、記述することは、当然ですが問題そのままでありません。
「こういう問いがあった」と書いてることも、そういう意味合いの、ということですので、悪しからず。

教材は、Railsガイドと問題集です。
railsguides.jp

問題集は達人出版会で購入しました。電子書籍達人出版会で統一したいですね。とっても便利で大好きです。
tatsu-zine.com

この問題集、問題と解答を覚えるだけでは、Amazonのレビューである通り、2割取れれば御の字くらいです。
この問題にあるような簡単な問題はなかなか出ないです。
問題集の模擬試験が同じレベルと謳ってありますが、それを信じると痛い目を見ます。
ただ、2割程度でも、この問題集を100%やることに意味はあると思います。
この問題集を使った勉強方法としては、問題と回答を読み、更にRailsガイドで補完する、というやり方です。
これを怠ったため、一回目で点を逃した部分があります。

例えば、cookies の Hash指定での値入力、です。オプションどんなの、など。
ここは、問題としては出てこないですが、試験対策としてちゃんと覚えろ、と載っています。
ここで2問落としてますね・・・(ちなみに2回目の試験では1問も出なかったですけど)。

ただ、問題集、Railsガイド両方に言えますけど、バージョンの違いからか、現行バージョン(4.2.7)とは違う部分があります。
例えば 問題集にも、問題の選択肢の一つにも出てきましたが、cookies には文字列以外も入るか?という問い。
これは何が正解か未だわかりません。
問題集には文字列以外入らない、とありますが、実際は「シリアライズされた文字列が自動で入る」のであって、Hash(Hash指定時にvalueに指定すれば入る)や配列や数値は入ります。「入る」とは?みたいな話になってきます。
この問題が出たら、どっちに賭けるか、というと、多分文字列しか入らない、に賭けたほうがいいのかもしれません。

基本的には 最初に挙げさせて頂いたサイト様にあるRailsガイドの項目をしっかり読み込むこと。
しっかり読み込むと、あれ?今と違うな・・・という部分が出てくるところも若干あるんですけど、もうそこは諦めてガイドを元とする。
ARの部分については、実行して確認した方が良いです。結構複雑な問題もでてきました。多分 Rails を触ってる人じゃないとわからないだろうなぁと思う問題も。
その中で、私が正解していた、不正解だった問わず、ガイドには出てない、または見落としがち、なところを順不同に挙げます。
同じ問題はなかなか出ないと思いますが、参考になれば。
繰り返しですが、問題そのままではありません(それでも問題あれば削除します)。

  • rake コマンドの詳細
    • about で何が表示されているか? dbconsoleって? middleware って? note って?console の中で特別に使えるコマンドは?
    • db:schema:dump と db:structure:dump の違いは?
    • rake task の 書き方、引数とその使い方は?
  • Mail について
    • config.action_mailer のオプションについて
    • attachement の様々な追加の仕方
  • AR について
    • SQL でいう BETWEEN句を使うには?
    • select の自由度は?(文字列で色々書ける?)
    • migration の列指定オプションの書き方
    • revert、reversible の書き方
  • View について
    • url_for の書き方(引数色々取れるが、Rails ガイドには詳細がないので注意)
    • url_for のある書き方でのパフォーマンスは?(この問題は公式にはどこにもないのでは?一応ネタになってたのは知ってたので「悪い」で正解だと思う)
    • turbolinks 関連の指定の仕方(タグに何を追加したら有効、無効にできるか)
    • image_tag、image_path、image_url の違い
  • ActiveSupport について
    • number_to_human と number_to_human_size の違い
    • camelize などの文字列関連の実行結果
  • Test について
    • 使用できるヘルパーは?
    • 基本的な書き方(controller のテストの書き方や、メソッドの引数は?)

余裕があれば、ガイドの「Rails アプリケーションを設定する」のAR部分をちょっと読んでてもいいかもしれません。table_name_prefix は出てたような?
また、これはわからないわ・・・(Rails ガイドにも当然載ってない)という問題は各セクション1問はあるので、そこは諦めた方がいいかもしれません。

一点、これは酷いわ、という問題がありました。ルーティングの問題で、Rails ガイドでは 2.7.1 ネスティング回数の限界 に 「リソースのネスティングは、ぜひとも1回にとどめて下さい。決して2回以上ネストするべきではありません。」とありますが、その項の最初の例がshallow 付きで出ます。これについては思わず「ふざけんな!」って声に出しそうになりました。
コード例もウンコードが出てくるので、イラっとくることもあります。
セオリーというか、作法では「やらない」ことが当たり前のことを解析しろ、とは・・・。
良い意味で捉えると、実際の現場寄り、でしょうか・・・。

最後に

また、余りにも周りで誰も取ってないので、もうちょっと流行ればいいなぁとは思いますね。
マイナーな上に、難しめなのが裏目に出てるのかもな、とは思います。
問題集がもっと厚く、難易度も試験レベルに合わせて改版して勉強しやすくすれば良いと思いますね。
あんまり形骸化しても意味ないですけどね。