pragmatic-programmer について
pragmatic-programmerは、『The Pragmatic Programmer』に基づくソフトウェア開発原則のリファレンススキルです。日々の開発を改善したい開発者向けに、設計、デバッグ、テスト、自動化、コミュニケーション、学習を扱います。
主な機能
- 01DRY・直交性・可逆性の原則
- 02デバッグ・リファクタリング・テストの実践
- 03コマンドラインとテキスト処理の技法
- 04自動化とコード生成の指針
- 05見積もり・対話・継続的な学習
活用シーン
- 01コードの重複やモジュール間の結合を評価
- 02デバッグ・リファクタリング・テストを計画
- 03チームの開発手順やコミュニケーションを改善
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ grndlvl/ software-patterns --skill pragmatic-programmerインストール後、Claude Code で/pragmatic-programmerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
practices/assertive-programming.mdautomation.mdcode-generators.mddebugging.mddecoupling.mddesign-by-contract.mdplain-text.mdrefactoring.mdshell-games.mdtesting.mdtext-manipulation.mdprinciples/domain-languages.mddry.mdestimating.mdorthogonality.mdprototypes.mdreversibility.mdtracer-bullets.md詳細
プラグマティック・プログラマー リファレンス
David Thomas と Andrew Hunt による「The Pragmatic Programmer」に基づいた、実践的なソフトウェア開発の原則を網羅したリファレンスです。このスキルでは、より優れた開発者になるための普遍的なアドバイスを提供します。
このスキルが有効になるとき
このスキルは、次のような場合に自動的に有効になります。
- ソフトウェア開発のベストプラクティスについて話し合うとき
- デバッグの戦略が必要なとき
- コードの重複(DRY)を検討するとき
- ツールや自動化について考えるとき
- プロジェクトの見積もりや計画について話し合うとき
- 開発ワークフローを見直すとき
基本理念
「自分の仕事に誇りを持ちましょう。」 「自分の仕事について考えましょう。」
プラグマティックなプログラマーは、次のように行動します。
- 自分のキャリアと仕事に責任を持ちます
- 言い訳をせず、選択肢を提示します
- 状況の被害者ではなく、変化を起こす存在です
- 継続的に学び、適応します
クイックリファレンス
基本原則
| 原則 | 概要 |
|---|---|
| DRY - 繰り返しを避ける | あらゆる知識は、ただ一つの表現で表します |
| 直交性 | 独立性を保ち、疎結合にします |
| 可逆性 | 意思決定を取り消せるようにし、ロックインを避けます |
| トレーサーバレット | エンドツーエンドの骨組みを使って、素早くフィードバックを得ます |
| プロトタイプ | 決断する前に学び、プロトタイプは破棄します |
| ドメイン言語 | 問題領域に近い形でプログラミングします |
| 見積もり | 正確な見積もりを出す方法を学びます |
実践的なテクニック
| 実践 | 概要 |
|---|---|
| プレーンテキストの力 | アクセスしやすい形式で知識を保持します |
| シェル活用術 | コマンドラインを使いこなします |
| デバッグ | 人を責めず、問題を解決します |
| テキスト操作 | テキスト処理ツールの使い方を学びます |
| コードジェネレーター | コードを生成するコードを書きます |
| 契約による設計 | 権利と責任を定義します |
| アサーティブプログラミング | 起こり得ないことにはアサーションを使います |
| 疎結合 | モジュール間の依存関係を最小限にします |
| リファクタリング | 継続的にコードを改善します |
| テスト | 早く、頻繁に、自動でテストします |
| 自動化 | 手作業の手順を使わないようにします |
プラグマティックなヒント
本書の重要なヒント:
- 自分の仕事に誇りを持つ - 仕事に誇りを持たないのなら、なぜ人生をソフトウェア開発に費やすのでしょうか。
- 自分の仕事について考える - 自動操縦を切り、主導権を握りましょう
- 言い訳をせず、選択肢を提示する - できないと言わず、できることを説明しましょう
- 壊れた窓を放置しない - 悪い設計や誤った決定に気づいたら、修正しましょう
- 変化を起こす触媒になる - 人々に未来を示し、変化への参加を促しましょう
- 全体像を忘れない - 目の前のことに集中しすぎて、何をしているのかを忘れないようにしましょう
- 品質を要件の問題として扱う - 品質の判断にユーザーにも参加してもらいましょう
- 知識のポートフォリオに定期的に投資する - 学ぶことを習慣にしましょう
- 読んだこと、聞いたことを批判的に分析する - ベンダーやメディアの誇大宣伝に流されないようにしましょう
- 何を言うかだけでなく、どう言うかも大切 - コミュニケーションは重要です
知識のポートフォリオ
知識を金融ポートフォリオのように扱いましょう。
- 定期的に投資する - 日頃から新しいことを学びます
- 分散する - さまざまな技術について知っておきます
- リスクを管理する - 安全な技術と、ハイリスク・ハイリターンな技術のバランスを取ります
- 安く買って高く売る - 主流になる前に、新興技術を学びます
- 見直してリバランスする - 定期的に再評価します
提案:
- 毎年、新しい言語を学ぶ
- 毎月、技術書を読む
- 技術書以外の本も読む
- 講座を受講する
- 地域のユーザーグループに参加する
- さまざまな環境で試してみる
- 最新情報を把握する(ニュースレター、ブログ、カンファレンス)
コミュニケーション
- 伝えたいことを把握する
- 相手を把握する
- 適切なタイミングを選ぶ
- スタイルを選ぶ
- 見栄えをよくする
- 相手を巻き込む
- 聞き手になる
- 相手に返事をする
- ドキュメント作成はプロジェクトの一部であり、後回しにするものではありません
言語翻訳に関する注意
例では汎用的な疑似コードを使用しています。使用する言語に合わせてください。
- PHP:
class、function、->、型ヒント - JavaScript/TypeScript:
class、アロー関数、. - Python:
class、def、.、型ヒント - Java/C#:アクセス修飾子を使って直接対応づけます
David Thomas と Andrew Hunt による「The Pragmatic Programmer: Your Journey to Mastery」の概念に基づいています。
コメント
Markdown 対応