はじめに
先日、FJORD BOOT CAMPの「Sinatra を使ってWebアプリケーションの基本を理解する」プラクティスの提出物にOKをいただきました。
そこで、このプラクティスで学んだことをまとめたいと思います。
作成したメモアプリ
Githubのリポジトリ
https://github.com/NMP300/Sinatra_practice
学んだこと
後から使う人がクラスの内部構造を気にしなくても良い設計を心掛ける
今回、私はクラス構造を考えるとき、後からのこのコードを使う人のことをあまり考えず書いてしまいました。 そのコードが以下になります。
get "/memos/:id" do Memo.new.contents("memos/#{params[:id]}.json") end
このコードの問題点として、Memo.new.contents
メソッドが何を引数にとるのか分かりづらく、使う人がクラスの内部構造を見に行かなければならないということが挙げられます。
では、どのように考えれば、後から使う人がクラスの内部構造を気にしなくても良くなるのでしょうか。
私が教えていただいたことは、クラスの呼び出しを考えてからクラスの内部構造を書くということでした。
具体的には、上記のコードをすっきりと分かりやすく使いたいため、呼び出しの形は以下のようになるのが分かりやすいと考えられます。
get "/memos/:id" do Memo.new.contents(:id id) end
Memo.new.contents
メソッドの引数をキーワード引数にすることで、後から使う人が「何を引数にとるんだ」とそこまで気にしなくても、グッと分かりやすくなります。
このような呼び出し側を考えてから、クラスの内部構造を決めるとクラス構造が分かりやすくなると学びました。
Webアプリの基本的な仕組みについて
最初はちんぷんかんぷんだったのですが、分からないことを一つ一つ潰していき、実際にアプリを動かして見ることで、Webアプリの基本的な仕組みを学ぶことができました。
私は以下の図のように解釈しています。
このプラクティスのおかげで、Webアプリケーションがどういう仕組みで、開発とはどういうことをするのかということがなんとなく掴めてきました👍
最後に
最初は本当に何も分からず、書籍を読んでも中々理解することが難しかったのですが、悪戦苦闘していくうちになんとか分かってきました💪
これから、Ruby on Railsのプラクティスに入りますが、難しいと先輩方の日報を見て戦々恐々としてますが、なんとかコツコツやっていきたいです🔥