70 ポイント 投稿者 xguru 2025-01-15 | 11件のコメント | WhatsAppで共有
  • ほとんどのソフトウェアチュートリアルは重要な詳細を省いたり、読者の期待に合わない隠れた前提を含んでいたりするため、読者が手順を再現できないことが多い
  • いくつかの簡単なルールに従えば、優れたチュートリアルを書くことは思っているより簡単

ルール

  1. 初心者向けに書く
  2. 明確な結果を約束するタイトルを書く
  3. 導入部で目標を説明する
  4. 最終結果を先に見せる
  5. コピペ可能なコードスニペットを書く
  6. コマンドでは長いフラグを使う
  7. ユーザー定義の値と再利用可能なロジックを分離する
  8. 読者の手間を減らす
  9. コードが常に動作する状態を保つように書く
  10. 1つのトピックだけを教える
  11. 装飾より明確さを優先する
  12. 依存関係を最小限にする
  13. ファイル名を明確に指定する
  14. 一貫性があり説明的な見出しを使う
  15. ソリューションが動作することを証明する
  16. 完全なサンプルをリンクする

初心者向けに書く

  • チュートリアルでもっともよくある失敗は、初心者レベルの概念を専門家レベルの用語で説明してしまうこと。チュートリアルを探している人の大半は初心者
    • プログラミング自体の初心者ではないかもしれないが、学ぼうとしているドメインでは初心者
  • 初心者を対象に書き、専門的すぎる用語の使用は避ける
  • 難しい用語を避け、読者が理解できる簡単な言葉で書く
  • たとえば React チュートリアルでは、"JSX transpilation" の代わりに「React を使ったシンプルな Web ページの作成」のように説明する

明確な結果を約束するタイトルを書く

  • タイトルは、読者がチュートリアルを通じて何を学べるのかを具体的に伝えるべき
  • 不明確で曖昧なタイトルは避け、期待される結果をはっきり説明する
    • 例: "Build a Real-Time Twitter Clone in 15 Minutes with Phoenix LiveView"

導入部で目標を説明する

  • 読者がチュートリアルをクリックした時点で、あなたの話題にはすでに関心を持っている。しかし、読み進めてもらうにはさらに納得してもらう必要がある
  • 読者が気にするのは次の2点
    • この技術に関心を持つべきか?
    • 関心があるなら、このチュートリアルは自分に合っているか?
  • 導入部では、技術の重要性とチュートリアルの有用性を簡潔に説明する
  • 読者の関心を引く有益な情報を示し、曖昧な記述は避ける
    • 例: Docker チュートリアルでは、Docker が解決する問題と期待される結果を明確に説明する

最終結果を先に見せる

  • できるだけ早い段階で、読者がチュートリアルを通じて作るもののデモやスクリーンショットを見せる
    • チュートリアルの早い段階で最終結果を示し、目標を明確にする
  • 例: 最終成果物のスクリーンショット、UI、動作例などを提示する

コピペ可能なコードスニペットを書く

  • 読者がコードを簡単にコピーしてエディタやターミナルに貼り付け、そのまま実行できるように書く
  • ターミナルのプロンプト文字 $ のような不要な要素は取り除く
  • 非対話型フラグを使ってコマンドを簡略化し、失敗時に停止するよう && を使う

コマンドでは長いフラグを使う

  • コマンドでは短いフラグよりも説明が明確な長いフラグを使い、初心者にも理解しやすくする
    • -r より --recursive

ユーザー定義の値と再利用可能なロジックを分離する

  • コード内でユーザーが変更すべき値と、変更すべきでないコードを明確に分ける
  • 環境変数を使ってユーザー定義の値を定義し、コードの可読性を高める

読者の手間を減らす

  • 読者にチュートリアルを気に入ってもらえるよう、彼らの時間を尊重する
  • 面倒な作業はコマンドスニペットで置き換える
    • 例: 手作業でファイルを編集する代わりにコマンドで解決する

コードが常に動作する状態を保つように書く

  • サンプルコードは常に実行可能であるべきで、中間段階でも動作する状態を保つ
  • 間違ったコードや動かない例は読者を混乱させる

1つのトピックだけを教える

  • チュートリアルは単一のトピックを中心に構成し、無関係な技術を混ぜない
  • たとえば、検索機能を説明するチュートリアルに不要な AI 技術を追加しない

装飾より明確さを優先する

  • 読者は、おもちゃのようなアプリケーションが美しく見えるかどうかを気にしない
  • 不要な CSS やデザイン要素は最小限にし、核心となる概念に集中する
  • 複雑な例ではなく、シンプルなコードで概念を明確に伝える

依存関係を最小限にする

  • 読者がインストールすべき依存関係を最小限にして、チュートリアルの敷居を下げる
  • 必須の依存関係を明確に示し、特定バージョンを明記する

ファイル名を明確に指定する

  • 読者に、修正すべきファイルパスと内容を正確に案内する
  • たとえば「config ファイルに設定を追加」と書く代わりに、完全なファイルパスと、どの行を編集すべきかまで具体的なコードで示す

一貫性があり説明的な見出しを使う

  • 読者がチュートリアルをざっと見やすいよう、構造化された見出しを使う
  • 見出しを使ってチュートリアルを構造化し、論理的な流れが反映されるようにする
  • 見出しの形式、視点、時制を一貫して保つ

ソリューションが動作することを証明する

  • チュートリアルがツールのインストールや複数コンポーネントの統合を教えるなら、その結果の使い方を見せる
    • インストール・統合したツールの動作結果を読者に視覚的に示す
  • たとえば nginx の成功ページを見せ、URL で確認する方法を案内する

完全なサンプルをリンクする

  • チュートリアルのすべてのコードを含むリポジトリをリンクし、全体の流れを確認できるようにする
  • 各ステップのコードを別々の git ブランチに分け、読者が各段階を追えるようにする

11件のコメント

 
godogi7 2025-02-12

参考用

 
wedding 2025-01-16

これはワード!

 
ilikeall 2025-01-16

いい文章ですね。

 
halfenif 2025-01-16

最近Dagsterのチュートリアルを試してみて、よくできているなと思いました。

https://courses.dagster.io/

 
aer0700 2025-01-16

Dagsterのチュートリアルを一通り見ましたが、すごく良いですね。
Djangoのチュートリアルは内容は充実しているのですが、長すぎて私はあまり好みではありません。もう少し分割してくれるといいですね。

 
savvykang 2025-01-16

よくできたチュートリアルの事例として、Django もあります https://docs.djangoproject.com/en/5.1/intro/tutorial01/

 
jhj0517 2025-01-16

簡潔な言葉を使い、最終結果を最初に示す。

 
aer0700 2025-01-15

フレームワークの退屈な基礎的な使い方を見せるのではなく、
このフレームワークがどれほど素晴らしいかを見せようとするチュートリアル文書は、しばしばあります。
Get started に入ってみたら、基礎的な使い方のチュートリアルだと表示されているものが10ページもある文書だと、本当に嫌です。

 
beenzinozino 2025-01-16

みなさんすごすぎますね……