Skip to content

Latest commit

 

History

History
69 lines (52 loc) · 5.71 KB

File metadata and controls

69 lines (52 loc) · 5.71 KB

Sinatra 教科書 執筆スタイルガイド

本書には、../FBC_Press/STYLE_GUIDE.md をはじめとする FBC Press の共通ルールを適用します。このファイルでは、Sinatra 教科書に固有の判断だけを定めます。共通ルールと矛盾する場合は、FBC Press のルールを優先します。

本書の中心

  • Sinatra の機能一覧ではなく、Web アプリケーションの仕組みを説明する。
  • 各章で「Sinatra ではこう書く」だけで終えず、そのコードがどのリクエストを受け、どのレスポンスを返すのかを対応付ける。
  • 映画図鑑を一章ずつ育て、最終章までに動作する完成形を示す。
  • 課題との差別化を理由に、一般的な実装や完成コードを省略しない。
  • FBC 固有の前提を本文へ持ち込まず、単独で読める OSS 技術書にする。

説明の順序

  • 初めて使う仕組みは、必要になった場面で導入する。
  • 先に使って後から名前を付ける場合は、読者が誤った理由付けをしない範囲に限る。リダイレクトは第2章と第5章で画面遷移として使い、第8章で PRG として意味付けする。
  • HTTP は独立した知識として暗記させず、Chrome DevTools の Network タブで繰り返し観察する。
  • REST は理論を網羅せず、リソース、URI、HTTP メソッドと CRUD の対応を実装に必要な範囲で説明する。
  • Rack は Sinatra と Web サーバーをつなぐ位置を示すために扱い、インターフェースの詳細へ広げない。

コード例

  • Ruby はダブルクォートを基本とし、本書内で統一する。
  • 起動コマンドは bundle exec ruby app.rb に統一する。
  • Sinatra はクラシックスタイル(Classic Style)を使い、enable :method_override を明記する。
  • 利用者入力のエスケープには、Rack::Utils.escape_html を呼び出す h ヘルパーを使う。
  • XSS の脆弱な例は第9章の説明中だけに置き、同じ章の中で安全なコードへ戻す。
  • コードブロックには rubyerbhtmlcsshttpjsonsh など実際の言語を指定する。
  • 差分だけでは初学者が変更箇所を判断できない場合、対象ファイルの完成状態を示す。省略記号を含むコードを、そのまま動く完成コードのように見せない。
  • 原稿中のコードとリポジトリ内のコードは一致させる。章完了時に原稿の手順どおり動作確認する。

HTTP の表現

  • HTTP メソッドは GETPOSTPATCHDELETE のように大文字で書く。
  • ステータスコードは、初出では 200 OK303 See Other404 Not Found500 Internal Server Error のように番号と理由句を併記する。
  • 本文の HTTP メッセージ例は、読みやすい HTTP/1.1 形式を使う。HTTP/2 以降は通信時の内部表現が異なることを短く注記する。
  • method override では、ブラウザが送るリクエストは POST であることと、Rack の処理後に Sinatra が PATCH または DELETE として扱うことを区別する。
  • リダイレクトは一つのリクエストの途中でページが切り替わるようには説明せず、リダイレクトレスポンスと、その後の新しい GET リクエストを分けて説明する。

HTML とセキュリティ

  • layout.erb だけが文書全体の htmlheadbody を持ち、個別ビューへ重複させない。
  • フォーム部品には、対応する label を用意する。
  • 操作の意味がリンクか送信かを区別し、状態を変える処理を通常の GET リンクにしない。
  • 紹介文の改行表示には CSS の white-space を使い、Ruby で <br> を生成しない。
  • XSS は「危険な文字列」ではなく、出力先の HTML 文脈とエスケープの関係として説明する。
  • public/ は公開される静的ファイルの置き場所とし、保存データは data/movies.json に置く。

観察と小さな確認

  • 独立した部末演習は設けない。
  • Network タブでの観察、入力値の変更、再読み込み、短いコード変更は、必要な説明の直後へ置く。
  • 「確認しよう」「考えてみよう」などの見出しを毎章固定しない。
  • 観察では、何を開き、どの項目を見て、何が確認できればよいかを明示する。
  • 章の終わりには要約を繰り返さず、得た理解を次章の作業へつなげる。

参考資料

  • 各章末に ## さらに学ぶ## 参考資料 を置く。
  • 技術仕様は、使用中のバージョンに対応する公式ドキュメント、仕様書、RubyGems の情報を優先する。
  • Chrome DevTools の画面名は、執筆時点の実画面で確認する。
  • 外部資料を本文の代わりにせず、本章の範囲を越えて学びたい読者の導線として使う。

英語表記とカタカナ表記

  • 一般概念として本文に出す外来語は、原則としてカタカナ表記にする。例: アクセシビリティ、サイト、クラシックスタイル。
  • 公式名、コード、ファイル名、HTTP メソッド、ヘッダー名、Chrome DevTools の画面ラベルは英語表記を残す。
  • 初出で英語表記が理解に役立つ場合は、クラシックスタイル(Classic Style) のようにカタカナを主表記にして英語を併記する。
  • 同じ章の中で、同じ概念に英語表記とカタカナ表記を混在させない。画面ラベルとして引用する場合はバッククォートで囲む。