less than 1 minute read

学んだこと

オブジェクト指向とはなにか?

  • 処理をもの(オブジェクト)として重点を置く考え方の一つ。

オブジェクト指向の利点

  • メンテナンスがしやすい
    • 処理毎にクラス分けされているため、処理が追いやすい。
  • 開発作業を効率化しやすい
    • クラスを継承することで、同じメソッドやプロパティを再利用することができる。

オブジェクト指向の弱点

  • 理解するまでに時間がかかる。(継承・カプセル化・ポリモーフィズム)
  • クラス設計を正しく行わないと、処理を追いづらいため管理が大変になる。

MVC モデルとは?

  • M(モデル),V(ビュー),C(コントローラ)の頭文字を取ったソフトウェアアーキテクチャの 1 つ

モデル

  • ビジネスロジックを担当する、データベースへの登録・更新・削除などの処理を行う。
  • 取得したデータはコントローラに渡す。

ビュー

  • ユーザインタフェースを担当。
  • 各種リクエストデータをコントローラに渡す。
  • コントローラからレスポンスデータを受け取り、表示を反映する。

MVC モデルのメリット

  • 役割分担が明確化されているため、メンテナンスしやすい。
  • モデル自体がビューやコントローラに依存していないため、異なる UI やシステムで再利用することができる。

MVC モデルのデメリット

  • 役割(モデル・ビュー・コントローラ)についての理解に時間がかかる。
  • 正しい設計を行わないとコントローラが肥大化しやすくなり、パフォーマンスに影響が出る。
    • コントローラの処理が肥大化することで、処理の可読性が損なわれ改修が大変になる。

CRUD 処理とは?

  • C(Create),R(Read),U(Update),D(Delete)の頭文字を取ったデータベースに対しての操作の総称。

Create

  • データを作成し、データベースに登録する。

Read

  • データベースからデータを取得する。

Update

  • データベースに登録されているデータを更新する。

Delete

  • データベースに登録されているデータを削除する。

バリデーションとは?

  • 入力内容に対して、仕様に沿ってデータをチェックし妥当か確認すること。
  • 使用例・用途
    • ログインページにてアカウント情報を入力し、データベースと照合しつつデータが正しいかチェックする。
    • データベースにデータを登録時、正しいデータであるか確認後データベースに登録する。

非同期処理とは?

  • タスク終了を待たずに、次のタスクを実行する処理のことを指す。

非同期処理のメリット

  • データを非同期で処理を行った際に他の処理を待たずとも、処理を行うことができるためストレスがない。
  • 時間のかかるデータを非同期で処理することで、1 つのスレッドを占有することがないため処理効率を向上できる。

HTTP と HTTPS の違い

  • どちらとも Web サーバと Web ブラウザでやり取りするためのプロトコル。
  • データ通信時に暗号化されているかの違い。
    • HTTP は暗号化されないが、HTTPS は SSL/TLS で暗号化されており安全。
    • HTTPS にするには SSL/TLS 証明書が必要。

HTTPS の仕組み

  1. クライアントからサーバにリクエストを送る
  2. サーバが SSL/TLS 証明書と公開鍵を送信
  3. クライアントが証明書を検証し、公開鍵を使って共通鍵を暗号化
  4. クライアントは暗号化した共通鍵をサーバへ送信
  5. サーバは秘密鍵を使って共通鍵を復号化
  6. 安全なデータ通信を実施

GET と POST の違い

  • サーバからデータを取得するか、データを送信するかの違い。

GET

  • サーバからデータを取得するリクエスト
  • URL にクエリを含めて送信を行う。
    • クエリは?key=valueで書かれているものを指す。
  • キャッシュ可能。
  • 検索処理などデータを取得する用途に適している。

POST

  • サーバにデータを送信するリクエスト
  • リクエストボディを使ってデータを送信する。
    • リクエストボディとはサーバに送るデータを格納する領域のこと。
    • URL には表示されないため、比較的安全だが以下の対策を行い安全性をさせる。
      • HTTPS 化し、データ自体を暗号化
      • サーバ側でバリデーション実施
        • データの整合性チェックなど妥当なデータか確認する。
      • SQL インジェクション対策
        • プレースホルダーを使用したり、エスケープ処理を行うようにする。
      • CSRF トークンを使用する。
        • WEB サーバで生成した CSRF トークンと利用者に配布している CSRF トークンを比較し、一致しなければ不正なリクエストとして処理を行うようにする。
      • XSS 対策
        • Javascript の処理を改ざんし、意図しない処理を実行してしまうのを防ぐ

レスポンシブデザインとは?

  • デバイスや画面の比率に応じて、ブラウザのレイアウトを自動的に調整すること。

クッキーとセッション情報の違い

  • サーバ or ブラウザに情報を保存されるかの違い。

クッキー

  • ブラウザに保存されるデータ。
  • 最大 4KB 保存することができる。
  • ユーザ側で保持期間を決めることができる。
  • 使用例:ログイン状態保持、ユーザの設定保存
  • ユーザ側で変更・削除できるため、改ざんのリスクがある。
    • サイトの設定等流出しても問題ないデータを保存するのに向いている。

セッション

  • サーバに保存されるデータ。
  • サーバ側でセッション ID を発行し、クライアント側に送信する。
    • 発行したセッション ID を使用しリクエストを送ることで、サーバがユーザ情報を取得することができる。
    • セッション ID はクッキーに保存される。
  • ブラウザを閉じると、セッションは消えてしまう。
  • セキュリティが高く、クライアント側でデータを改ざんすることは難しい。
    • ログイン情報や個人情報等流出してはいけないデータを保存するのに向いている。