koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

Sinatraを使って簡単なメモアプリを作成して学んだこと

はじめに

先日、FJORD BOOT CAMPの「Sinatra を使ってWebアプリケーションの基本を理解する」プラクティスの提出物にOKをいただきました。

そこで、このプラクティスで学んだことをまとめたいと思います。

作成したメモアプリ

Githubのリポジトリ

https://github.com/NMP300/Sinatra_practice

f:id:NMP300:20191017194029j:plain
作成したメモアプリ

学んだこと

後から使う人がクラスの内部構造を気にしなくても良い設計を心掛ける

今回、私はクラス構造を考えるとき、後からのこのコードを使う人のことをあまり考えず書いてしまいました。 そのコードが以下になります。

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アプリの基本的な仕組みを学ぶことができました。

私は以下の図のように解釈しています。

f:id:NMP300:20191017193735j:plain
Webアプリの基本的な仕組み

このプラクティスのおかげで、Webアプリケーションがどういう仕組みで、開発とはどういうことをするのかということがなんとなく掴めてきました👍

最後に

最初は本当に何も分からず、書籍を読んでも中々理解することが難しかったのですが、悪戦苦闘していくうちになんとか分かってきました💪

これから、Ruby on Railsのプラクティスに入りますが、難しいと先輩方の日報を見て戦々恐々としてますが、なんとかコツコツやっていきたいです🔥