テックアカデミー第7回メンタリング:本当にRuby on Railsは簡単なの?

2018年3月26日

ども。メンタリングは第7回になりました。前回の第6回は特に皆さんにお知らせするような情報はなく、私が個人的に疑問を解消した日だったので投稿しておりません。

さて今回は第7回ということでテックアカデミー受講からほぼ1ヶ月が経過してきました。Lessonは全14回のところの12回まで完了し、残すは外部APIを使ったレッスンと、オリジナルWEBアプリ作成の2レッスンのみです。

レッスンは着実に進んでいるのですが、どうもRuby on Railsを理解しきれていない部分が多々あります。もしかしたら僕と同じようにモヤモヤしながらRubyの勉強をしている人もいるかもしれませんね。

今日はそんなRubyに関してモヤモヤがちょっとだけ晴れるようなお話が出来るかもしれません。

と言いますのも、今までRubyのレッスンを続けてきてどうしても腑に落ちない部分がありますよね。それがこちら。

Rubyは簡単なプログラミング言語?

という都市伝説です。今までやってきてどうも簡単な気がしない、時間がかかる、落ち着かないと感じていた物がようやく言語化できました。

なにかというと

書きたいコードがあるのにRubyやRailsのメソッドを知らないせいで書けない

メソッドを探すのが手間で時間がかかる、それなら泥臭く書いたほうが早い

ということを個人的には感じています。

具体的にはリンクのAタグを生成するのに、link_toというメソッドを使ったりしますが、むしろ<a href=”http://hogehoge~~~”>~~</a>と直で書いたほうが早いです。

また、あるデータベースの行を削除しようと思ったら、直接DeleteのSQL文を発行してデータベースを叩けば消せるわけですが、そんな泥臭いSQL文を書かないんですよね。

book.destroy

をやるだけで該当book.idを持つbookは消せる訳です。ところが、このdestroyというメソッドを知らなかったら該当行を消せないじゃないですか

SELECT文だって、SQL書かないでfind_byとかメソッドを使います。SQL文だったらWHERE句とか書き方知ってるけど、それを発行するためのRubyメソッドを知らない。リファレンスを調べても使い方がわかりにくい、引数に何を渡せばよいか見えない

こんなことです。

まぁ私が古いオジサンだからでしょうか。今の若い大学生とかならチョチョイで理解できるのかもしれません。

で、これを解消するためにどうすればよいか講師に聞いてみました。

Railsの構文は考えてもわからない、暗記するのも現実的じゃないので聞く(Googleも含めて)のが1つ解決策です。

私はその都度検索して日本語のページを参考に書くようにしていますよ。

以前も似たようなコードを書いた気がするな、と思い出せば、今まで書いてきた他のプロジェクトの中を探してみたり、それをコピペして使ったりします。

例えば「rails 中間テーブル 削除」とかでgoogle検索すれば答えが出てきたりします。Railsはわりと日本語マニュアルやQ&Aサイトが充実してるので、拾ってくるのはお勧めです。

という話でした。

私の取り組み方がちょっとボタンの掛け違いになってるのかもしれません。もっと楽に書けるようです。

Railsを学ぶのに良い書籍はありますか?

またRailsを学ぶのに良い書籍は無いか聞いたところ、あるにはあるけどRailsのバージョンアップが早いので、本のコードを写しても動かない事があるので、最初は傍らに1冊持ってても良いけど、のちのち使わなくなりますよ。

とのことでした。

私も1冊だけ先日本屋で見かけて買ってみました。メソッドのリファレンス用に活用できています。リファレンスの説明の表現が日本語で、WEBのマニュアルと表現が異なるので、むしろ本の方で理解できることもあります。なので今の所は上手に使えてる気がしますね。

Railsが簡単か難しいか、という話は以上です。

Githubでエラーメッセージが来た

Githubを使ってバージョン管理やherokuへのアップロード(デプロイ)なんかを行っていますが、そのGithubから警告メッセージが来てました。

We found a potential security vulnerability in one of your dependencies.

Known moderate severity security vulnerability detected in loofah < 2.2.1 defined in Gemfile.lock. Gemfile.lock update suggested: loofah ~> 2.2.1.

英語の警告文。「お前さんがアップしたWEBアプリにセキュリティの脆弱性あるよ」的なメールだと思います。でも何をどう対処すればよいのかが不明です。

これを講師に確認したところ、

bundleというコマンドが管理しているファイルGemfile.lockがあって、そこにはGemのインストールバージョン情報が入ってる。

loofahというGEMが最新の2.2.1より古いバージョンをインストールしようとしてるからセキュリティ的にまずいんじゃないの?という通知のようです。

結局自分は意識的にloofahというGEMを使ってる気がしないので放置することにしたのですが、こういう警告文もどういう意味なのか理解しておけたので良かったなと思います。

ということで、今日のテックアカデミーメンタリングの内容は以上です!

てことで、皆さんもプログラミング頑張っていきましょう!

テックアカデミーはこちら↓