メインコンテンツまでスキップ

07 - 開発者の基礎スキル

ソフトウェア開発手法

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > ソフトウェア開発プロセス
  • 5. パーソナルスキル > 5.2 コンセプチュアルスキル > 適応力

アジャイル開発

  • Agile software development - The Agile Alliance が合意した価値観と原則を反映した、ソフトウェア開発アプローチの総称です
    • Agile Manifesto - プロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を、計画に従うことよりも変化への対応を重視することで、より良いソフトウェア開発の方法を宣言した文書です
    • Software prototyping - 開発中のソフトウェアプログラムの不完全なバージョン、すなわちソフトウェアアプリケーションのプロトタイプを作成する活動です
    • Minimum viable product - 将来のプロダクト開発のためのフィードバックを提供できる初期の顧客が使用できるだけの、十分な機能を備えたプロダクトのバージョンです
    • User story - ソフトウェアシステムの機能を非公式な自然言語で記述したものです
      • Card, Conversation, Confirmation - Card が要件を表すトークンであり、Conversation が詳細を引き出す場であり、Confirmation がストーリーの受け入れテストであるプラクティスです
    • INVEST of PBI - 質の高いプロダクトバックログ項目 (PBI) の特徴を思い出すために Bill Wake が作成した記憶術です
      • Independent:PBI は自己完結しているべきです
      • Negotiable:草案の PBI は明示的な契約ではなく、議論の余地を残すべきです
      • Valuable:PBI はステークホルダーに価値をもたらさなければなりません
      • Estimable:PBI のサイズは常に見積もれなければなりません
      • Small:PBI はある程度の精度で計画・タスク化・順序付けができなくなるほど大きくあってはいけません
      • Testable:PBI またはその関連する記述は、テスト開発を可能にするために必要な情報を提供しなければなりません
  • 主要な方法論
    • Extreme Programming - ソフトウェアの品質と、顧客要件の変化への対応力を向上させることを目的としたソフトウェア開発方法論です
    • Scrum - 人々が生産的かつ創造的に、可能な限り最高価値のプロダクトを届けながら、複雑で適応を要する問題に対処できるフレームワークです
    • Acceptance test-driven development - ビジネス顧客、開発者、テスターの間のコミュニケーションに基づいた開発方法論です
      • Three Amigos - プロダクトオーナー、開発者、品質テスターが集まり、プロジェクトのスコープについて明確化を図るミーティングです
    • Behavior driven development - ソフトウェアプロジェクトにおいて、開発者、品質保証テスター、顧客代表者間の協調を促すアジャイルソフトウェア開発プロセスです
      • Specification by example - 抽象的な記述の代わりに現実的な例を用いて要件を捉え説明することに基づいて、ソフトウェアプロダクトの要件とビジネス指向の機能テストを定義する協調的アプローチです
  • 主要なプラクティス
    • Refactoring - 既存のコードベースを再構築するための規律あるテクニックで、外部の振る舞いを変えずに内部構造を変更します
      • Software rot - ソフトウェアが時間の経過とともに品質、パフォーマンス、または有用性が劣化していく傾向です
      • Technical debt - より時間のかかるより良いアプローチを使う代わりに、今簡単な(限定的な)解決策を選ぶことで生じる追加的な手戻りの暗黙的なコストを反映した、ソフトウェア開発における概念です
        • Technical Debt Ratio - コードベース全体をゼロから開発するコストと比較して、既存の技術的負債を修正するコストを測定するために使用されるメトリクスです
    • Test driven development - ソフトウェアが完全に開発される前にソフトウェア要件をテストケースに変換し、すべてのテストケースに対してソフトウェアを繰り返しテストすることであらゆるソフトウェア開発を追跡する、ソフトウェア開発プロセスです
  • ATDD/BDD 向けツール
    • Gauge - 受け入れテストの作成と保守の手間を取り除く、無料でオープンソースのテスト自動化フレームワークです
    • Cucumber - プレーンテキストで書かれた実行可能な仕様を読み取り、ソフトウェアがその仕様どおりに動作することを検証することで、ビヘイビア駆動開発 (BDD) をサポートするツールです
      • Gherkin Syntax - Cucumber が理解できるほど構造化されたプレーンテキストにするための一連の文法規則です
      • cucumber-ruby - Cucumber の Ruby 実装です
    • RSpec - ビヘイビア駆動開発 (BDD) 向けに作成された、Ruby プログラミング言語用のテストツールです
    • Behave - Python コードに裏打ちされた自然言語スタイルで書かれたテストを使用する、Python でのビヘイビア駆動開発 (BDD) 向けのツールです

リーン開発

  • Lean software development - リーン生産方式の原則と実践をソフトウェア開発領域に翻案したものです
    • Continual improvement process - プロダクト、サービス、またはプロセスを改善するための継続的な取り組みです
    • OODA loop - 利用可能な情報をフィルタリングし、それを文脈に当てはめ、より多くのデータが利用可能になるにつれて変更が可能であることを理解しながら、迅速に最も適切な意思決定を行うことに焦点を当てた 4 段階の意思決定アプローチです
  • Lean manufacturing - 生産システム内の時間だけでなく、サプライヤーからおよび顧客への応答時間を削減することを主な目的とした生産方式です
    • The 7 Wastes:顧客に価値を付加しない活動です
    • Value-stream mapping - プロダクトまたはサービスが特定のプロセスの開始から顧客に届くまでの一連の出来事について、現状を分析し将来の状態を設計するリーンマネジメント手法です
    • ECRS (Eliminate, Combine, Rearrange, Simplify) - 生産ラインへの解決策の即時適用を可能にする柔軟な継続的改善戦略です
  • Toyota Production System - トヨタが開発した経営哲学と実践から構成される、統合された社会技術システムです
    • Kanban - 人間系全体で作業を管理・改善するためのリーン手法です
    • Kaizen - CEO から組立ライン作業員まで全従業員が関わる、あらゆる機能の継続的かつ漸進的な改善に焦点を当てた哲学です
    • Autonomation - プロセスを部分的に自動化し、問題が検出されると自動的に停止するように機器を設計することで、オペレーターが問題を即座に修正できるようにする実践です
    • Heijunka - 生産量と製品構成の両方を平準化することで生産を平滑化する手法です
    • Genchi Genbutsu - 状況を真に理解するには、作業が行われている「現場」に行き、プロセスを観察し、自ら事実を確認する必要があるとする原則です
    • Andon (manufacturing) - 生産ラインの状態を示すために使用される視覚的管理システムです
    • Muda (Japanese term) - リソースの最適な配分からの逸脱を表す 3 種類のうちの 1 つとして、リーンプロセスマネジメントにおける重要な概念であり、無駄、無用、浪費を意味します
  • Theory of Constraints - 管理可能などんなシステムも、ごく少数の制約によってその目標達成がより制限されているとみなす経営パラダイムです

DevOps とエンジニアリング生産性

  • 概念
    • CALMS framework - Culture(文化)、Automation(自動化)、Lean(リーン)、Measurement(測定)、Sharing(共有)の略で、DevOps へのアプローチのための概念モデルです
  • 文化的・組織的な基盤
    • Generative organizational culture - 高度な信頼と協調、ミッションに対する責任の共有意識、そして学習と継続的改善への注力を特徴とする文化の一種です
  • 技術的なプラクティス
    • Feature Toggles - コードを変更せずにシステムの動作を修正できるようにする強力なテクニックです
    • Blue-Green Deployment - Blue と Green と呼ばれる 2 つの同一の本番環境を稼働させることで、ダウンタイムとリスクを削減するテクニックです
    • Canary Release - 変更を全インフラストラクチャに展開する前に、少数のユーザーサブセットに徐々に展開することで、本番環境に新しいソフトウェアバージョンを導入するリスクを削減するテクニックです
    • Everything as code - ネットワークインフラストラクチャ、ドキュメント、構成を含む開発ライフサイクルのあらゆる側面の保守性とスケーラビリティを向上させるために、バージョン管理、テスト、デプロイメントと同じ原則を適用しようとするソフトウェア開発プラクティスです

リリース自動化

  • semantic-release - 形式化されたコミットメッセージに基づいて次のバージョン番号を決定し、リリースノートを生成し、パッケージを公開する、完全に自動化されたバージョン管理・パッケージ公開ツールです
  • Release Please - Conventional Commits に基づいて、プロジェクトの変更履歴生成、GitHub リリースの作成、バージョンアップを自動化するツールです
  • GoReleaser - Go プロジェクト向けのリリース自動化ツールです
  • Changesets - モノレポに重点を置いたバージョニングと変更履歴を管理するツールです

リリースの慣習と標準

  • keep a changelog - プロジェクトの各バージョンにおける注目すべき変更点を、時系列順に整理してまとめたファイルです
  • Conventional Commits - 明示的なコミット履歴を作成するための簡単なルールセットを提供する、コミットメッセージ上の軽量な規約です
  • Semantic Versioning - バージョン番号の割り当て方と増分方法を規定する、シンプルなルールと要件のセットです
  • CalVer - 恣意的な番号の代わりに、プロジェクトのリリースカレンダーに基づいたバージョニング規約です

オープンエコシステム

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発

オープンソース

  • Open Source Initiative - オープンソースソフトウェアとそのコミュニティの推進と保護に専念する非営利団体です
  • 主要なパブリックライセンス
    • MIT - 1980 年代後半にマサチューセッツ工科大学 (MIT) で生まれた寛容なソフトウェアライセンスです
    • BSD - 対象ソフトウェアの使用と配布に最小限の制限を課す、寛容なフリーソフトウェアライセンスのファミリーです
    • Apache - Apache Software Foundation (ASF) によって書かれた寛容なフリーソフトウェアライセンスで、ロイヤリティを気にすることなくソフトウェアを使用、配布、修正することをユーザーに許可します
    • GPL - ソフトウェアを実行、研究、共有、修正する自由をエンドユーザーに保証する、広く使用されている一連のフリーソフトウェアライセンス、すなわちコピーレフトライセンスです
    • LGPL - Free Software Foundation (FSF) が公開したフリーソフトウェアライセンスで、開発者や企業が自身の(プロプライエタリなものであっても)ソフトウェアに、このライセンスの下でリリースされたソフトウェアコンポーネントを使用・統合する際、自身のコンポーネントのソースコードを公開する必要がないようにします
    • AGPL - ソフトウェアやその他の種類の著作物向けのフリーでコピーレフトなライセンスで、サーバー上で修正済みのプログラムを実行し、他のユーザーがそこでそのプログラムと通信できるようにする場合、サーバーはそこで実行されている修正版に対応するソースコードのダウンロードもユーザーに許可しなければならないことを保証するために特別に設計されています
    • SSPL - ライセンスされたソフトウェアをサービスとして提供する事業者に対し、サービス全体の完全なソースコードの公開を義務付ける、強力なコピーレフトソフトウェアライセンスです
  • 原則と格言
    • Linus's law - 「十分な目玉があれば、すべてのバグは深刻ではない」という主張であり、オープンソース開発における重要な原則です
  • ソースリポジトリ
    • GitHub - 安全なソフトウェアを構築、拡張、提供するための AI 駆動の開発者プラットフォームです
    • GitLab.com - 組織がソフトウェア開発の全体的な投資対効果を最大化できるようにする DevSecOps プラットフォームです
  • パッケージレジストリ
    • CTAN - Comprehensive TEX Archive Network です
    • CPAN - Comprehensive Perl Archive Network です
    • CRAN - Comprehensive R Archive Network です
    • PyPI - Python プログラミング言語向けのソフトウェアリポジトリです
    • RubyGems.org - Ruby コミュニティの gem ホスティングサービスです
    • npm Registry - 世界最大のソフトウェアレジストリです
    • JSR - モダンな JavaScript と TypeScript 向けのオープンソースパッケージレジストリです
    • pkg.go.dev - Go のパッケージとモジュールに関する情報源です
    • crates.io - Rust コミュニティの crate レジストリです
    • LuaRocks - Lua モジュール向けのパッケージマネージャーです
    • Hackage - Haskell コミュニティのオープンソースソフトウェアの中心的なパッケージアーカイブです
      • Stackage - Hackage からのパッケージの厳選されたセットです
    • NuGet Gallery - .NET 向けのパッケージマネージャーです
    • Maven Central - 世界最大かつ最古のコンポーネントリポジトリです
    • ConanCenter - コミュニティによって作成されたすべてのオープンソースパッケージを見つけられる中心的なリポジトリです
    • Anaconda Hub - データサイエンスと AI コラボレーションのためのハブです

オープンデータ

  • ツールとライセンス
    • Creative Commons - 世界の差し迫った課題に取り組むために、知識と創造性の共有に対する法的障壁を克服する手助けをする非営利団体です
    • Open Data Commons - オープンデータの公開、提供、利用を支援する一連の法的ツールとライセンスの拠点です
  • オープンデータレジストリ
    • Hugging Face Hub - 90 万を超えるモデル、20 万のデータセット、30 万のデモを備えたプラットフォームで、人々が ML ワークフローで簡単に協業できます
    • Data.gov - 米国政府のオープンデータの拠点です
    • Kaggle - データサイエンスの目標達成を支援する強力なツールとリソースを備えた、世界最大のデータサイエンスコミュニティです
    • Registry of Open Data on AWS - AWS サービスを通じて公開されているデータセットを人々が簡単に見つけられるようにするサービスです
    • OpenML - オープンで協調的、摩擦のない自動化された機械学習環境です
    • OpenStreetMap - あなたのような人々によって作成され、オープンライセンスの下で自由に使用できる世界地図です
  • データ検索エンジン
    • Google Dataset search - Web 上の何千ものリポジトリに保存されているデータセットをユーザーが見つけられるようにする検索エンジンです

コミュニティとガバナンス

  • 傘下組織となるオープンソース財団
    • Linux Foundation - 開発者がオープンテクノロジープロジェクトのコーディング、管理、拡張を行うための中立で信頼できるハブを提供することで、Linux を支援、保護、標準化する非営利団体です
    • Apache Software Foundation - Apache HTTP Server を含む Apache ソフトウェアプロジェクトを支援する非営利法人です
    • Eclipse Foundation - 個人と組織のグローバルコミュニティのために、オープンソースソフトウェアの協業とイノベーションのためのビジネスフレンドリーな環境を提供する組織です
  • 技術特化型財団
    • OpenJS Foundation - Appium、Dojo、jQuery、Node.js、webpack を含む 40 を超えるオープンソースプロジェクトの中立的な拠点です
    • Rust Foundation - Rust プログラミング言語とそのエコシステムの管理と発展に専念する独立した非営利団体です
    • Python Software Foundation - Python プログラミング言語を支える慈善団体です
    • PyTorch Foundation - オープンソース AI のためのコミュニティ主導のハブです
  • クラウドと AI
    • Cloud Native Computing Foundation - クラウドネイティブコンピューティングを普遍的で持続可能なものにすることに専念するオープンソースソフトウェア財団です
    • Agentic AI Foundation (AAIF) - この重要な能力が透明かつ協調的に、そして主要なオープンソース AI プロジェクトの採用を促進する形で進化することを保証するための、中立でオープンな財団です
  • Web とデータの標準
    • World Wide Web Consortium - Web の長期的な成長を保証するオープンスタンダードを開発する国際的なコミュニティです
    • WHATWG - HTML と関連技術の進化に関心を持つ人々のコミュニティです
    • The Open Group - 技術標準を通じてビジネス目標の達成を可能にするグローバルコンソーシアムです
  • 倫理とデジタル権利
    • Free Software Foundation - コンピューターユーザーの自由を推進するという世界規模の使命を持つ非営利団体です
  • コミュニティガバナンスと行動規範
    • Debian Constitution - Debian プロジェクトにおける意思決定のための組織構造を説明した文書です
    • Ubuntu Code of Conduct - Ubuntu コミュニティの一員としての行動を対象とした一連のガイドラインです
    • Mozilla Community Participation Guidelines - Mozilla コミュニティ内の参加者に対する期待事項をまとめた一連のガイドラインです
    • Contributor Covenant - Coraline Ada Ehmke によって作成された、フリー/オープンソースソフトウェアプロジェクトの貢献者向けの行動規範です

シェルとターミナル

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発

Bash とその他のシェル

  • Bash - Korn shell (ksh) と C shell (csh) の便利な機能を取り入れた sh 互換シェルです
    • Line editing - GNU コマンドライン編集インターフェイスの基本機能です
    • History - Bash の履歴展開機能です
    • Shell expansions - コマンドラインが単語に分割された後に実行される処理です
    • Pipelines - 制御演算子 '|' または '|&' のいずれかで区切られた 1 つ以上のコマンドのシーケンスです
    • Built-in commands - 新しいプロセスをフォークすることなく、シェルプロセス自体の中で実行されるコマンドです
    • Special variables - シェルによって設定または使用されるシェル変数のリストです
    • Built-in job control - プロセスの実行を選択的に停止(一時停止)し、後で実行を継続(再開)できる機能です
  • Zsh - 対話的な使用のために設計されたシェルですが、強力なスクリプト言語でもあります
  • fish-shell - Linux、macOS、その他一連のプラットフォーム向けのスマートでユーザーフレンドリーなコマンドラインシェルです
  • PowerShell - コマンドラインシェル、スクリプト言語、構成管理フレームワークで構成されたクロスプラットフォームのタスク自動化ソリューションです
  • nushell - 新しいタイプのシェルです

シェルユーティリティ

  • 汎用シェルユーティリティ
    • coreutils = cat、ls、rm など Unix 系オペレーティングシステムに必要な多くの基本ツールを含む GNU ソフトウェアパッケージです
    • GNU parallel - 1 台以上のコンピューターを使用してジョブを並列実行するためのシェルツールです
    • rlwrap - readline ラッパーです
    • bash-completion - bash 向けのプログラム可能な補完関数のコレクションです
    • direnv - 現在のディレクトリに応じて環境変数をロード・アンロードできるシェルの拡張機能です
    • zoxide - よりスマートな cd コマンドです
    • Atuin - 既存のシェル履歴を SQLite データベースに置き換え、コマンドの追加コンテキストを記録し、オプションですべてのマシン間でシェル履歴を同期するツールです
    • wttr.in - curl、httpie、wget などのコマンドラインツールを通じて気象情報を提供する、コンソール指向の天気予報サービスです
  • 検索ツール
    • findutils - GNU オペレーティングシステムの基本的なディレクトリ検索ユーティリティです
    • fzf - 汎用のコマンドラインファジーファインダーです
    • fd - find に代わるシンプルで高速、かつユーザーフレンドリーなツールです
    • grep - 正規表現に一致する行をプレーンテキストデータセットから検索するコマンドラインユーティリティです
    • ripgrep - 現在のディレクトリを再帰的に検索し、正規表現パターンを探す行指向の検索ツールです
    • silversearcher-ag - ack に似たコード検索ツールですが、より高速です
  • シェルフレームワークとカスタマイズ
    • starship - あらゆるシェル向けの、ミニマルで高速、無限にカスタマイズ可能なプロンプトです
    • oh-my-bash - BASH 構成を管理するための、オープンソースでコミュニティ主導のフレームワークです
    • oh-my-zsh - Zsh 構成を管理するための、愉快でオープンソース、コミュニティ主導のフレームワークです
    • Zim Framework - 高速性とモジュール式の拡張機能を備えた Zsh 構成フレームワークです
    • Powerlevel10k - Zsh 向けのテーマです
    • Pure - 美しくミニマルで高速な ZSH プロンプトです
  • シェルチュートリアル
    • LinuxCommand.com - Linux コマンドラインの使い方を学ぶのに役立つよう設計された、書籍やその他の資料を掲載したサイトです

ターミナルエミュレーター

  • Terminal Emulators - 他の表示アーキテクチャの中でビデオ端末をエミュレートするコンピュータープログラムです
    • WaveTerm - オープンソースでクロスプラットフォーム、AI 統合されたターミナルです
    • kitty - 高速で機能豊富な GPU ベースのターミナルエミュレーターです
    • Rio Terminal - 21 世紀のためのモダンなターミナルです
    • Alacritty - 適切なデフォルト設定を備えつつ、広範なカスタマイズも可能なモダンなターミナルエミュレーターです
    • Terminator - 複数の GNOME ターミナルを 1 つのウィンドウにまとめ、好みのスタイルに合わせてターミナルを組み合わせ、再構成できるようにするターミナルエミュレーターです
    • Windows Terminal - 新しい Windows Terminal であり、オリジナルの Windows コンソールホストです
    • Mintty - Cygwin、MSYS または Msys2 とその派生プロジェクト、および WSL 向けのターミナルエミュレーターです
    • xterm - X Window System 向けのターミナルエミュレーターです
    • wterm - Zig+WASM コアを使用して DOM に直接レンダリングする Web 向けのターミナルエミュレーターで、ネイティブなブラウザーのテキスト選択、コピー/ペースト、アクセシビリティを実現します
  • 技術とプロトコル
    • Pseudoterminal - プログラムが端末をエミュレートするために使用する、端末のようなインターフェイスを提供する一対の疑似デバイスです
    • ANSI escape code - ビデオテキスト端末上でカーソル位置、色、フォントスタイル、その他のオプションを制御するためのインバンドシグナリングの標準です
    • kitty keyboard protocol - 端末がその中で実行されているアプリケーションにキーボードイベントを送信するためのプロトコルです
    • iTerm2 image protocol - ターミナル内にインラインで画像を表示するためのカスタムエスケープコードです
  • ターミナルフォント
    • Nerd Fonts - 開発者向けフォントに多数のグリフをパッチ適用するプロジェクトです
    • Share Tech Mono - Share ファミリーに基づいた等幅サンセリフ体です
    • Cascadia Code - プログラミング用合字を含む、楽しく新しい等幅フォントです

ターミナルユーティリティ

  • マルチプレクサとセッション管理
    • screen - 複数のプロセス間で物理端末を多重化するフルスクリーンウィンドウマネージャーです
    • tmux - ターミナルマルチプレクサです
    • byobu - GPLv3 のオープンソースであるテキストベースのウィンドウマネージャー兼ターミナルマルチプレクサです
    • zellij - 必要なものがすべて揃ったターミナルワークスペースです
    • asciinema - ターミナルセッションを記録し、Web 上で共有するための無料でオープンソースのソリューションです
    • ttyd - Web 経由でターミナルを共有するためのシンプルなコマンドラインツールです
  • コンソールファイルマネージャー
    • midnight commander - ビジュアルファイルマネージャーです
    • ranger - コンソール向けの VIM に着想を得たファイルマネージャーです
    • superfile - 非常に洗練されたモダンなターミナルファイルマネージャーです

Windows 上の Linux/Unix 系環境

  • winpty - Windows コンソールプログラム向けに Unix ライクな VT100 コンソールインターフェイスを提供する Windows ソフトウェアパッケージです
  • WSL - 別の仮想マシンやデュアルブートを必要とせずに、Windows マシン上で GNU/Linux 環境を実行できるようにする Windows の機能です
    • WSLg - 完全に統合されたデスクトップ体験の中で、Windows 上で Linux GUI アプリケーション (X11 と Wayland) を実行するサポートを可能にするプロジェクトです
  • Git for Windows - Git SCM の全機能セットを Windows にもたらす、軽量なネイティブツール群です
  • MSYS2 - ネイティブな Windows ソフトウェアのビルド、インストール、実行のための使いやすい環境を提供するツールとライブラリのコレクションです

バージョン管理システム

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発
  • 概念
    • Distributed Version Control - 完全な履歴を含むコードベース全体が、すべての開発者のコンピューターにミラーリングされるバージョン管理の形態です
  • コア VCS とクライアント
    • Git - 小規模から非常に大規模なプロジェクトまで、あらゆるものを高速かつ効率的に扱うために設計された、無料でオープンソースの分散型バージョン管理システムです
      • local repository、remote repository
      • branch、tag、worktree
      • push、pull、fetch、rebase、reset、stash
      • staging、commit
    • Jujutsu (jj) - シンプルかつ強力な Git 互換の VCS です
    • gitoxide - イディオマティックで無駄がなく、高速かつ安全な Git の純粋な Rust 実装です
    • TortoiseGit - Git 向けの Windows シェルインターフェイスで、TortoiseSVN をベースにしています
    • git lfs - 大きなファイルをバージョン管理するためのオープンソース Git 拡張機能です
  • ターミナル & UI ツール
    • Informative git prompt for bash and fish - 現在の git リポジトリに関する情報を表示する bash プロンプトです
    • lazygit - git コマンド向けのシンプルなターミナル UI です
    • gitui - git GUI の快適さを、そのままターミナルで提供するツールです
    • giff - ブランチ間の変更を表示・管理できる、対話的なリベース機能を備えたターミナルベースの Git 差分ビューアーです
    • Git Interactive Rebase Tool - Git 向けの改良されたシーケンスエディターです
  • 履歴とメンテナンスツール
    • BFG Repo-Cleaner - Git リポジトリ履歴から不要なデータを除去するための、git-filter-branch に代わるよりシンプルで高速なツールです
    • git filter-repo - 履歴を書き換えるための汎用的なツールです
    • degit - シンプルなプロジェクトのひな形作成です
  • コミットと変更履歴のツール
    • Git Lint - クリーンで読みやすく、デバッグ可能で保守可能なプロジェクト履歴を維持することで、Git コミットをリントするコマンドラインインターフェイスです
    • commitlint - コミットメッセージをリントすることで、チームがコミット規約を遵守する助けとなるツールです
    • git cliff - 高度にカスタマイズ可能な変更履歴生成ツールです
  • フック管理
    • pre-commit - 多言語対応の pre-commit フックを管理・保守するためのフレームワークです
    • Lefthook - あらゆる種類のプロジェクト向けの、高速で多言語対応の Git フックマネージャーです
    • Husky - 超高速でモダンなネイティブ git フックです
    • lint-staged - ステージされた Git ファイルに対して、フォーマッタやリンターなどのタスクを実行するツールです

Git ホスティングサービス

  • GitLab SCM - コードとプロジェクトの共同作業のための単一の信頼できる情報源です
    • GitLab CLI - GitLab をターミナルにもたらすオープンソースツールで、すでに git やコードで作業している場所のすぐそばで使用できます
  • Gitea - Git ホスティング、コードレビュー、チームコラボレーション、パッケージレジストリ、CI/CD を含む、手間のかからないセルフホスト型のオールインワンソフトウェア開発サービスです
  • Codeberg - フリー/オープンソースプロジェクト向けに Git ホスティングやその他のサービスを提供する、コミュニティ主導の取り組みです
  • Forgejo - セルフホスト型の軽量なソフトウェアフォージです
  • Soft Serve - コマンドライン向けの、美味しくセルフホスト可能な Git サーバーです
  • Azure Repos - コードを管理するために使用できる一連のバージョン管理ツールです
  • GitHub - 安全なソフトウェアを構築、拡張、提供するための AI 駆動の開発者プラットフォームです
    • GitHub CLI - プルリクエスト、Issue、GitHub Actions、その他の GitHub 機能をターミナルにもたらすオープンソースツールで、すべての作業を一箇所で行えます

ブランチングモデル

  • Git Flow - プロジェクトのリリースを中心に構築されたブランチモデルで、長期間存続する develop ブランチと main ブランチに加え、feature・release・hotfix ブランチを用いて並行開発を整理します
  • Trunk Based Development - 開発者が「trunk」と呼ばれる単一のブランチでコードを協業し、文書化されたテクニックを用いて他の長期的な開発ブランチを作成する圧力に抵抗する、ソースコード管理のブランチングモデルです
  • GitHub Flow - 頻繁にデプロイするチーム向けに設計された軽量なブランチベースのワークフローです
  • GitLab Flow - 機能駆動開発と機能ブランチを Issue トラッキングと組み合わせた、GitFlow に代わるよりシンプルな方法です

コードレビュー

  • Google Engineering Practices Documentation - レビュアーと変更作成者の両方に向けた、Google のコードレビュープロセスとポリシーの包括的なガイドです
  • Conventional Comments - 明瞭性の向上、誤解の低減、コメントの機械可読化のために、コードレビューフィードバックの構造化されたフォーマットを提供する標準です
  • Danger - コードレビューにおけるチームの規範を自動化するツールです
  • Gerrit - Git ベースの開発のための、オープンソースのパッチセット単位のコードレビュープラットフォームです

統合開発環境 (IDE)

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発
  • GUI ベース
    • Eclipse IDE - 業界に支えられコミュニティ主導で開発され、豊富なプラットフォームプラグインによる高い拡張性を備えた、無料でオープンソースの IDE です
    • Visual Studio Code - デスクトップ上で動作し、Windows、macOS、Linux で利用できる、軽量ながら強力なソースコードエディターです
      • Awesome VS Code - 素晴らしい VS Code パッケージとリソースの厳選リストです
      • GitLens - Visual Studio Code に組み込まれた Git 機能を強化する拡張機能です
      • Git Graph - リポジトリの Git グラフを表示し、そのグラフから Git アクションを実行するための拡張機能です
    • AI アシスタンスプラグイン
      • GitHub Copilot - より速く、より少ない労力でコードを書く手助けをする AI ペアプログラマーです
        • Awesome GitHub Copilot - 体験を向上させるための、コミュニティが貢献したエージェント、指示、スキル、フック、ワークフロー、プラグイン、キャンバス拡張機能、ツールのコレクションです
      • Gemini Code Assist - 開発ライフサイクル全体を対象とした AI 駆動のアシスタントです
      • Amazon Q Developer - ソフトウェア開発向けの、最も高性能な生成 AI 駆動のアシスタントです
      • Cline - 最先端の AI モデルを VS Code エディターに直接もたらすオープンソースの AI コーディングエージェントです
    • AI 統合 IDE
      • Cursor - プロプライエタリモデルおよび最先端モデルとのシームレスでエージェント的な統合のために設計された、VS Code の AI ネイティブなフォークです
      • Windsurf - 開発者と AI の作業が本当に一体となって流れ、まさに魔法のようなコーディング体験を可能にする場です
      • Zed - 人間と AI との高パフォーマンスな協業のために設計された次世代コードエディターです
  • Web ベース
    • code-server - リモートサーバー上で動作し、あらゆる Web ブラウザーからアクセスできる VS Code インスタンスです
    • GitHub Codespaces - GitHub にネイティブな、完全に構成済みの安全なクラウド開発環境で、より速くコーディングを始められます
    • Replit - コーディング不要で、アイデアを数分でアプリに変えるプラットフォームです
  • ターミナルベース
    • Vim - あらゆる種類のテキストの作成と変更を非常に効率的に行えるように構築された、高度に設定可能なテキストエディターです
      • motion and operators - カーソルを移動するコマンドと、テキストを削除・変更するために使用されるコマンドです
      • vim-plug - Vim の事実上の標準プラグインマネージャーです
      • NERDTree - vim 向けのツリーエクスプローラープラグインです
    • Neovim - 超拡張可能な Vim ベースのテキストエディターです
      • LazyVim - 💤 lazy.nvim を利用した Neovim セットアップで、構成のカスタマイズと拡張を容易にします
        • lazy.nvim - Neovim 向けのモダンなプラグインマネージャーです
      • NvChad - 堅実なデフォルト設定と美しい UI を提供する超高速な Neovim 構成です
      • neo-tree.nvim - ファイルシステムやその他のツリー状構造を管理するための Neovim プラグインです
      • colorful-winsep.nvim - Neovim 向けのカラフルなウィンドウ区切りです
      • mason.nvim - LSP サーバー、DAP サーバー、リンター、フォーマッターなどの外部エディターツールを単一のインターフェイスで簡単に管理できる Neovim プラグインです
      • telescope.nvim - リストに対する高度に拡張可能なファジーファインダーです
      • flash.nvim - 検索ラベル、強化された文字モーション、Treesitter 統合でコードナビゲーションを助けるプラグインです
      • nvim-llama - Neovim 向けの Ollama へのシンプルなインターフェイスです
    • Helix - モーダルエディターであり、異なるタスクに対して異なるモードを持つことを意味します
    • GNU Emacs - 拡張可能でカスタマイズ可能な、フリー/リブレなテキストエディター、そしてそれ以上のものです
      • MELPA - Milkypostman's Emacs Lisp Package Archive です
      • doomemacs - 頑固な火星人ハッカーのための Emacs フレームワークです
      • neotree - Emacs 向けのツリーエクスプローラーです
      • Treemacs - Emacs 向けのツリーレイアウトファイルエクスプローラーです
      • Spacemacs - コミュニティ主導の Emacs ディストリビューションです
    • チュートリアルとチートシート
      • OpenVim - インタラクティブな Vim チュートリアルです
      • Vim Adventures - VIM のキーボードショートカットに基づいたオンラインゲームです
      • Vim Cheat Sheet - Vim コマンドのクイックリファレンスガイドです

言語サーバー

  • LSP - 自動補完、定義へのジャンプ、すべての参照の検索などの言語機能を提供するために、エディターまたは IDE と言語サーバーの間で使用されるプロトコルです
  • pyright - Python 向けの静的型チェッカー兼言語サーバーです
    • Pylance - Visual Studio Code の Python 拡張機能と連携して高性能な言語サポートを提供する拡張機能です
  • Ruby LSP - Ruby 向けの、独自の意見を持った言語サーバーです
  • TypeScript Language Server - スタンドアロンの TypeScript および JavaScript 言語サーバーです
  • Gopls - Go 言語向けの公式言語サーバーです
  • rust-analyzer - Rust プログラミング言語向けの言語サーバーです
  • Eclipse JDT Language Server - Eclipse JDT に基づいた Java 言語サーバーです
  • clangd - C++ のコードを理解し、コード補完、コンパイルエラーの表示、定義へのジャンプなどのスマートな機能をエディターに追加する言語サーバーです

コード品質とリファクタリング

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発
  • 概念
    • SQALE method - ソフトウェアソースコードの品質評価を支援するための手法です
    • Cyclomatic complexity - プログラムの複雑さを示すために使用されるソフトウェアメトリクスです
    • Code refactoring - 外部から見た動作を変えることなく、既存のソースコードを再構成するプロセスです
    • Code smell - より深い問題を示唆するソースコードの特徴です
  • コードメトリクスツール
    • scc - 多くのプログラミング言語でコード行数をカウントするツールです
    • cloc - 多くのプログラミング言語で空白行、コメント行、ソースコードの物理行をカウントするツールです

分析プラットフォーム

  • SonarQube Server - 30 以上の言語、フレームワーク、IaC プラットフォームでコーディング上の問題を検出するために設計された、オンプレミスの分析ツールです
  • CodeScene - 静的解析にとどまらず、Code Health メトリクスとチームのコードへの関わり方に関する行動分析を通じてソフトウェアの品質を可視化するコード分析プラットフォームです
  • Codecov - コードカバレッジを測定し、あらゆる段階でコード品質の向上を支援するツールです
  • GitLab Code Coverage - テストでカバーされているコードの割合を示すレポートです
  • GitLab Code Quality - CodeClimate Engines を使用してプロジェクトのコード品質分析を提供する機能です

フォーマッター

  • EditorConfig - コーディングスタイルを定義するためのファイル形式であり、エディターがそのファイル形式を読み取り、定義されたスタイルを遵守できるようにするテキストエディタープラグインのコレクションです
  • Prettier - 独自の意見を持ったコードフォーマッターです
  • Ruff - Rust で書かれた、非常に高速な Python リンター兼コードフォーマッターです
  • Biome - JavaScript、TypeScript、JSX、JSON、HTML、CSS、GraphQL 向けの高速なフォーマッターと高性能なリンターを提供する Web 向けツールチェーンです
  • gofmt - タブでインデントを行い、空白で位置を揃えて Go プログラムを整形するツールです
  • clang-format - C/C++/Java/JavaScript/JSON/Objective-C/Protobuf/C# のコードを整形するツールです

リンター

  • ESLint - JavaScript コードの問題を見つけて修正する手助けをするオープンソースプロジェクトです
  • JSHint - JavaScript 向けの静的コード解析ツールです
  • Biome - JavaScript、TypeScript、JSX、JSON、HTML、CSS、GraphQL 向けの高速なフォーマッターと高性能なリンターを提供する Web 向けツールチェーンです
  • Pylint - Python 2 または 3 向けの静的コード解析ツールです
  • Ruff - Rust で書かれた、非常に高速な Python リンター兼コードフォーマッターです
  • Staticcheck - Go プログラミング言語向けの最先端のリンターです
  • revive - Go 向けの高速で拡張可能な静的コード解析フレームワークです
  • golangci-lint - Go 向けの高速なリンターランナーです
  • RuboCop - Ruby の静的コード解析ツール(別名リンター)兼コードフォーマッターです
  • Rust Clippy - よくある間違いを検出し、Rust コードを改善するためのリントのコレクションです
  • PSScriptAnalyzer - PowerShell モジュールとスクリプト向けの静的コードチェッカーです
  • ShellCheck - bash/sh シェルスクリプトに対して警告と提案を行う GPLv3 のツールです
  • Stylelint - エラーを回避し、規約を徹底するのに役立つ強力な CSS リンターです
  • vacuum - 超高速で軽量な OpenAPI リンター兼品質チェックツールです
  • yamllint - YAML ファイル向けのリンターです
  • ls-lint - 非常に高速なファイル・ディレクトリ名リンターです

コーディングスタイルガイド

  • Google Style Guides - さまざまなプログラミング言語でソースコードを書くための一連の規約を提供する文書のコレクションです
  • Style Guide for Python - メインの Python ディストリビューションの標準ライブラリを構成する Python コードのコーディング規約を示す文書です
  • Ruby Style Guide - Ruby プログラミング言語向けのコミュニティ主導のスタイルガイドです
  • Airbnb JavaScript Style Guide - JavaScript に対する、おおむね理にかなったアプローチです

開発者 AI と生産性

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > チーム開発

AI 生産性ツール

  • Mods - AI の助けを借りてプログラムを書く手助けをするシンプルなツールです
  • gptcli - ChatGPT 向けのコマンドラインインターフェイスです
  • ShellGPT - AI 大規模言語モデル (LLM) を活用したコマンドライン生産性ツールです
  • LLM - 大規模言語モデルと相互作用するための CLI ユーティリティと Python ライブラリです
  • Fabric - AI を使って人間を拡張するためのオープンソースフレームワークです
  • OpenCommit - 意味のあるコミットを一瞬で自動生成します
  • AI Commits - AI であなたに代わって git コミットメッセージを書く CLI です
  • lootbox - 「Code Mode」に着想を得た CLI で、LLM がツール呼び出しを使う代わりに TypeScript コードを書いて API を呼び出します

開発エージェント

  • CLI コーディングエージェント
    • Claude Code - コードベースを読み取り、ファイルを編集し、コマンドを実行し、開発ツールと統合する、エージェント的なコーディングツールです
      • Plan Mode - 読み取り専用の操作でコードベースを分析して計画を立てるよう Claude に指示するモードで、コードベースの探索、複雑な変更の計画、安全なコードレビューに最適です
      • Hooks - エージェントのライフサイクルの特定のポイントで自動的に実行される、ユーザー定義のシェルコマンドまたは LLM プロンプトです
      • Subagents - 特定の種類のタスクを処理する専門化された AI アシスタントで、独自のコンテキストの中でカスタムプロンプトとツールアクセスを備えて実行されます
      • Sandboxing - より安全で自律的なエージェント実行のためにファイルシステムとネットワークの分離を提供する機能で、OS レベルのプリミティブを使用してこれらの分離を実施し、絶え間ない権限プロンプトを削減します
      • Auto-memory - ビルドコマンド、デバッグの知見、アーキテクチャに関するメモ、ユーザーの好みに関するノートを手動介入なしで保存することで、エージェントがセッションをまたいで自動的に知識を蓄積できるようにする機能です
    • Gemini CLI - Gemini の力を直接ターミナルにもたらすオープンソースの AI エージェントです
      • Conductor - Gemini CLI 向けの公式プロジェクトマネジメントツールです
      • Sandboxing - 潜在的に危険な操作をホストシステムから分離する機能で、macOS Seatbelt またはコンテナベースの分離手法を使用して、AI 操作と環境の間にセキュリティバリアを提供します
    • Antigravity CLI - コードベースを理解し、許可を得て編集を行い、ターミナルから直接コマンドを実行する、ターミナルベースの AI コーディングエージェントです
    • GitHub Copilot CLI - Copilot コーディングエージェントの力を直接ターミナルにもたらすツールです
    • Cursor CLI - ターミナルから直接開発を進められるよう構築されたツールで、どの環境でも同じコマンドを使用できます
    • Amp - あらゆる場所で動作するコーディングエージェント兼開発環境です
    • Aider - 新しいプロジェクトを始めたり、既存のコードベース上に構築したりできる、ターミナル内の AI ペアプログラミングツールです
    • Letta Code - ターミナルに常駐する、メモリファーストのコーディングエージェントです
    • Deep Agents CLI - Deep Agents SDK 上に構築されたターミナルコーディングエージェントです
    • OpenCode.ai - 実際のリポジトリ内でコードの理解、編集、出荷を支援する対話的な TUI を提供する、ターミナル向けのオープンソース AI コーディングエージェントです
    • OpenAI Codex - ターミナルで動作する軽量なコーディングエージェントで、ローカルなコーディングアシスタントを提供します
    • Kimi Code - あらゆる開発ワークフローに組み込めるよう設計された Moonshot AI 製の CLI コーディングエージェントで、コードベース分析、ファイル操作、Web 検索、並列サブエージェントタスク処理をサポートし、kimi-k2.6 モデルを搭載しています
    • Crush - お気に入りのターミナル向けの華やかな AI コーディングエージェントです 💘
    • ForgeCode - 調査、計画、実行のためのマルチエージェントアーキテクチャを備えた ZSH 統合コーディングハーネスで、複数の LLM プロバイダーをサポートし、Terminal-Bench で最上位にランクされています
  • デスクトップコーディングエージェント
    • goose - エンジニアリングタスクをシームレスに自動化するローカル AI エージェントです
    • Open Interpreter - コンピューター上でドキュメントを読み取り、編集し、作成できるエージェントと共に作業できるオープンソースのデスクトップエージェントです
    • Agent Zero - コードを書いて実行し、自身のコンピューター環境を管理し、自らの行動から学習することで複雑なタスクを解決する動的なツールセットを使用する、オープンソースの個人向け AI エージェントです
    • AionUI - ドキュメント生成機能を備えた、AI コーディングエージェント向けの Cowork アプリです
  • 自律型コーディングエージェント
    • SWE-agent - 一連の言語モデルを搭載した、GitHub リポジトリのバグや問題を修正するツールです
    • mini-swe-agent - SWE-agent のより小型でアクセスしやすいバージョンです
    • Devin - 独自のサンドボックス環境内で複雑なエンジニアリングタスクを支援なしで処理できる自律型 AI ソフトウェアエンジニアです
    • Jules - 自律型コーディングエージェントです
    • Replit Agent - IDE 内であなたと共に学習し作業できる最初の開発者エージェントです

サポートツールとインフラストラクチャ

  • プラットフォーム
    • OpenHands - AI を搭載したソフトウェア開発エージェント向けのプラットフォームです
    • Port - エンジニアリングのあらゆる側面を加速する自律的なワークフローを構築するためのエージェント的な開発者ポータルです
    • Antigravity - エージェント的な開発プラットフォームです
    • Warp - 開発を自動化するためのオープンプラットフォームです
  • ベンチマーク
    • SWE-bench - GitHub から収集された実世界のソフトウェア問題で大規模言語モデルを評価するためのベンチマークです
    • Terminal-Bench - ソフトウェアエンジニアリング、機械学習、セキュリティ、データサイエンスをカバーする、AI エージェントのターミナル習熟度を定量化するための harbor ネイティブなベンチマークタスクのコレクションです
  • コンテキストプロバイダー
    • Context7 - LLM と AI コードエディター向けに最新のドキュメントを提供するために設計された AI エージェント兼ツールです
    • LeanCTX - ファイル読み取りとシェル出力を最大 99% 圧縮することで AI コーディングアシスタントのトークン使用量を削減する、オープンソースのコンテキスト圧縮ツールで、Cursor や Claude Code など 29 以上の AI ツールで動作します
    • Context Mode - AI コーディングエージェント向けのコンテキストウィンドウ最適化です。ツール出力をサンドボックス化し、98% の削減を実現します
    • RTK - 一般的な開発コマンドで LLM のトークン消費を 60〜90% 削減する CLI プロキシです
  • セマンティックコード検索
    • Serena - セマンティック検索と編集機能を提供する強力なコーディングエージェントツールキットです
  • セッショントラッキング
    • Entire - git ワークフローにフックし、プッシュのたびに AI エージェントセッションをキャプチャして、コードがどのように書かれたか、各コミットの背後にある意図の検索可能な記録を作成する CLI ツールです