はじめに
自分は10月よりAPPRENTICE SHIP(内定直結型エンジニア学習プログラム)のカリキュラムに2期生として参加しています。
今回はRuby on Railsを学び始めて謎の横文字が多く出てきます。
その中で特に覚えておきたいけど、毎度詳細を聞かれると調べ直しているものをピックアップしてまとめました。
MVCモデル
MVCモデルとは?
MVC(Model-View-Controller)モデルは、ソフトウェア開発のための「設計パターン」の一つになります。
M(モデル)
モデルはアプリケーションのデータやビジネスロジックを管理します。
データベースへのアクセスやデータの操作、バリデーションなどが含まれます。
V(ビュー)
ビューはユーザーに対する表示やインターフェースを担当します。
ユーザーが見ることができる部分やユーザーとの対話が含まれます。
Railsだとerb(テンプレートエンジン)を用いて各場所がビューに該当します。
C(コントローラー)
モデルとビューの制御を担う場所になります。
コントローラーはユーザーからの入力を受け取り、それに基づいてモデルの状態を変更し、最終的にビューを更新します。ユーザーとモデル、ビューの仲介役です。
何が良いのか?
各部分が独立しているため、変更がしやすく保守性が高い。
そのため開発が分業しやすく、同時進行での開発が容易になります。
つまり複数人での開発に向いているということになります。
チーム開発にはもってこいと言うわけです。
デメリット
学習した方なら思われると思いますが、MVCモデルの理解や実装に時間がかかることがあります。
現在学習中ではありますが、おおまかな流れは理解できましたが、そのフレームワーク特有の書き方に学習コストが掛かると思うのが自身の感じたところではあります。
MVCモデルが採用されているフレームワーク
- Ruby on Rails (Ruby)
- Laravel (PHP)
- Express (Node.js)
- Django (Python)
- Spring (Java)
REST API
まずAPIとは
API(Application Programming Interface)は、ソフトウェア同士が相互に通信するためのインターフェースです。
WEB開発では主にWEB APIのことを指すことが多くあります。
REST API
REST(Representational State Transfer)は、上記のAPIを用いてシンプルにWEBシステムを作るための「設計思想」になります。
これについてはREST APIの4原則というものがあり、それを満たすとRESTFULなシステムと呼ばれます。
REST APIの4原則とは
- 統一インターフェース
- アドレス可能性
- 接続性
- ステートレス性
の4つです。
統一インターフェース
- 標準的なHTTPメソッド(GET、POST、PUT、DELETEなど)を使用すること
- JSON,XMLなどの形式のデータを使うこと
アドレス可能性
- URLが意味を持ち理解しやすいこと、つまりURLを見ただけでおおよその意味を推察できるものにすること
- 階層的な構造にすること
接続性
- リソースに含まれるリンクをもとに別のリソースに接続可能となる(遷移可能となる)性質のこと
ステートレス性
- クライアントの前回の要求や状態をサーバーが保存しない仕組みにすること
- 全てのHTTPリクエストが完全に分離している性質のこと
TDD(テスト駆動開発)
TDDとは
TDD(Test-Driven Development)は、開発者がまずテストを書き、その後そのテストをパスするようにコードを実装していく「開発手法」です。
具体的な方法
1.テストの作成(Red)
開発者はまず、実装しようとしている機能や機能の一部に対するテストケースを書きます。
2.テストを通る最小のコードを実装(Green):
開発者はそのテストを通過する最小のコードを実装します。目標は、テストをパスさせるだけのコードを書くことです。
3.リファクタリング(Refactor):
テストがパスしたら、コードをリファクタリングして可読性や保守性を向上させます。この段階では新しい機能を追加しないように注意します。
4.テストの追加(Repeat):
新しい機能や修正が必要な場合、または既存の機能に対する仕様が変更された場合、新しいテストケースを追加します。この時点でテストは再び赤い状態になります。
5.テストを通る最小のコードを実装(Repeat):
テストが赤い状態になったら、再び最小のコードを実装してテストをパスさせます。
このサイクルを繰り返すことで、徐々にアプリケーションが機能し、かつ信頼性のあるコードベースが構築されていきます。
感想
今回はフレームワークを触る上でよく出てくる物に焦点を当ててみました。
テスト駆動開発などはまだ触れられていない部分があり、今後の実装でも積極的に取り入れていくべきだと感じました。
現在の開発では必須知識と聞くので、自分も理解を深めて早く活用できるよにして行きたいです。