開発初心者の開発日記~32日目~

内容

  • Webを支える技術でのインプット
    • 30分程度
    • 283ページから310ページまで
    • 飽きたので、少し適当
    • このタスクは終了
    • 次からは?
      • アウトプットによる知識の体系化
  • HTML/CSSの基本でのインプット
    • なし
  • Progate(JavaScriptコース)でのインプット
    • 10分程度
    • JavaScript
    • Progateのコースは全て終了
    • 次からは?
      • アウトプットと知識の体系化
      • ライブラリの勉強(React、Node.js)
  • AtCoderでのアウトプット
    • 80分程度
    • Node.JSの環境構築に時間を取られてしまった

Webを支える技術のメモ

第16章:書き込み可能なWebサービスの設計

16.8 排他制御

  • 前提
    • 複数のクライアントがいる場合のリソースの更新は面倒
    • 排他制御:1つのクライアントのみが編集するように制御する処理のこと
    • 目的:複数のクライアントが同時に1つのリソースを編集して競合が起きることを避けるため
  • 解決すべき問題
    • クライアントAとクライアントBが同時にリソースXを更新する場合
  • 悲観的ロック
    • ユーザを信用せずに競合の発生を避ける排他制御の方法
    • 更新対象のデータを取得する際にロックをかけることで他のトランザクションからの更新を避ける
    • (実現方法については今回は飛ばす)
    • 問題点
      • 大規模なシステムの場合はずっとロックされてしまうような状況が発生し得る
  • 楽観的ロック
    • 常に同じ文書を複数人が編集することはあまりないという仮定
    • 通常の編集ではロックせずに、競合が起きた時に対処する仕組み
    • (実現方法については今回は飛ばす)

16.9 設計のバランス

  • Webサービスの規模や対象を含む様々な要因が存在するため、最適な設計を見つけるのは難しい
  • Webサービス開発における重要事項
    • なるべくシンプルに保つ
    • 困ったらリソースに戻って考える
    • 本当に必要であればPOSTでなんでも実現可能

第17章:リソースの設計

17.1 リソース指向アーキテクチャのアプローチの落とし穴

17.2 関係モデルからの導出

  • (イメージしにくいので飛ばす)

17.3 オブジェクト指向モデルからの導出

  • (一番自分にとっては自然)

17.4 情報アーキテクチャからの導出

  • (イメージしにくいので飛ばす)

17.5 リソース設計で最も重要なこと

Progate(JavaScriptコース)のメモ

JavaScript

  • コールバック関数
    • コールバック関数:他の関数に引数として渡される関数
    • const 関数名=(引数)=>{処理}と定義して引数に渡すのではなく、無名関数を渡すのでもOK
    • コールバック関数は引数を取ることも可能
      • コールバック関数の引数の数と実行時に与える引数の数を合わせることに注意