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

10 - 高度なプログラミング

手続き型・システムプログラミング

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

Rust 言語

  • Rust - 誰もが信頼性が高く効率的なソフトウェアを構築できるようにするプログラミング言語です
    • Ownership and borrowing - Rust プログラムがメモリをどのように管理するかを規定する一連の規則です
    • Interior mutability - そのデータへの不変参照が存在する場合でも、データを変更できるようにする Rust の設計パターンです
    • Closure - 変数に保存したり、他の関数への引数として渡したりできる匿名関数です
    • Trait-based generics - 型が提供しなければならない振る舞いを定義する方法であり、指定された振る舞いを実装する任意の型に対して動作する汎用的なコードを可能にするものです
    • Lifetime - すべての借用が有効であることを保証するためにコンパイラが使用する構成要素です
    • Module Pin - データをメモリ上の位置に固定する型を提供するモジュールです
    • ツール
      • C2Rust - ほとんどの C モジュールを意味的に等価な Rust コードに変換できるツールです
    • チュートリアル
      • Rust by Example - さまざまな Rust の概念と標準ライブラリを説明する、実行可能なサンプルのコレクションです

Go 言語

  • Go - Google がサポートするオープンソースのプログラミング言語です
    • コア機能
      • Go Modules - Go プログラミング言語のための依存関係管理システムです
      • Defer, panic and recover - Go における強力ですが特異な制御フロー機構です
      • Pointer receiver - 型へのポインタに対して動作し、レシーバーが指す値を変更できるようにするメソッドです
      • Interface - メソッドシグネチャの集合として定義される型です
      • Goroutine - Go ランタイムによって管理される軽量スレッドです
      • Channel - チャネル演算子 <- を使って値を送受信できる、型付けされた導管です
    • ライブラリ
      • Awesome Go - 優れた Go のフレームワーク、ライブラリ、ソフトウェアを厳選したリストです
      • lo - Lodash スタイルの Go ライブラリです
      • fp-go - 関数型プログラミングのヘルパー集です
      • shortuuid - 簡潔で曖昧さがなく URL セーフな UUID を生成するライブラリです
    • ツール
      • Go binary size SVG treemap - Go 実行ファイルのサイズのツリーマップを作成する CLI ツールです
      • mvm - コンパイルなしでソースコードから直接 Go プログラムを実行できるようにする、Go 用の高速な仮想マシンです
    • チュートリアル
      • Effective Go - 明確でイディオマティックな Go コードを書くためのヒントを提供するドキュメントです
      • Go by Example - 注釈付きのサンプルプログラムを使った Go の実践的な入門です
      • Learn Go with tests - 初日からテストを含む Go の基礎を教えるリソースです

C とその他の手続き型言語

  • C - 構造化プログラミング、レキシカルな変数スコープ、再帰をサポートする、静的型システムを備えた汎用手続き型コンピュータプログラミング言語です
    • Macros - 名前が付けられたコードの断片です
  • Zig - 堅牢で最適かつ再利用可能なソフトウェアを保守するための汎用プログラミング言語およびツールチェーンです
    • Comptime - コンパイル時にコードを実行できるようにする仕組みです

関数型・ハイブリッドプログラミング

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

関数型優先・マルチパラダイム言語

  • F# - 簡潔で堅牢かつ高性能なコードを書くための汎用プログラミング言語です
    • 不変データ構造
    • Discriminated union - いくつかの異なる、しかし固定された型のいずれかの値を格納できる型です
    • Active pattern - 入力データを分割する名前付きのパーティションを定義できる機能であり、これらの名前をパターンマッチング式で使用できるようにするものです
    • Computation expression - 制御フロー構造とバインディングを使って順序付けたり組み合わせたりできる計算を記述するための、便利な構文を提供する機能です
  • OCaml - 表現力と安全性を重視した、実用に耐える関数型プログラミング言語です
    • Functor - 別のモジュールによってパラメータ化されたモジュールです
  • Haskell - 高度な純粋関数型プログラミング言語です
    • 純粋関数型
    • Lazy evaluation - 式の値が必要になるまで、その評価を遅らせる評価戦略です
  • Elixir - スケーラブルで保守しやすいアプリケーションを構築するための動的な関数型言語です
    • Process - 分離されており、メッセージを介して情報をやり取りする軽量な実行スレッドです
  • Power Fx - Microsoft Power Platform 全体で使用される、汎用的で強く型付けされた宣言型かつ関数型のローコード言語です

マルチパラダイム・ハイブリッド言語

  • Java - 第 1 位のプログラミング言語であり開発プラットフォームです
    • Built-in concurrency support - 並行プログラミングをサポートするために根本から設計された Java プラットフォームの機能です
  • C# - モダンでオブジェクト指向かつ型安全なプログラミング言語です
    • Language-Integrated Query (LINQ) - クエリ機能を C# 言語に直接統合することに基づく一連の技術の名称です
    • Delegate - 特定のパラメータリストと戻り値の型を持つメソッドへの参照を表す型です
    • Lambda expression - 匿名関数を作成する方法です
  • Scala - 一般的なプログラミングパターンを簡潔でエレガントかつ型安全な方法で表現できるように設計された、モダンなマルチパラダイムプログラミング言語です
    • Hybrid OO/functional - 静的型付けの環境でオブジェクト指向プログラミングと関数型プログラミングを融合させた言語の特性です
  • Groovy - 静的型付けと静的コンパイルの機能を備えた、Java プラットフォーム向けの強力でオプション型付け可能な動的言語です
  • Dart - あらゆるプラットフォームで高速なアプリを実現する、クライアント最適化言語です

データ・フォーマット標準

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

テキスト形式と文字コード

  • ASCII - 電子通信のための文字符号化標準です
  • Unicode - 普遍的な文字符号化標準です
    • UTF-8 - 電子通信に使用される可変長文字符号化方式です
    • Unicode Emoji - 顔文字のように使用される、標準化された文字の集合です
  • CSV - 値をカンマで区切る区切りテキストファイルです
  • TSV - 表内の値をタブ文字で区切る区切りテキストファイル形式です
  • ライブラリ
    • ICU - Unicode とグローバリゼーションを提供する、成熟し広く使われている C/C++ と Java のライブラリ群です
    • Python emoji - Python 用の絵文字ライブラリです
    • Go emoji - Go 用のミニマルな絵文字パッケージです

日時形式

  • UTC - 時計と時刻を規制するために世界的に使用されている主要な時間標準です
  • ISO 8601 - 日付・時刻に関連するデータの世界的な交換と伝達を対象とする国際標準です
  • Unix time - ある時点を記述するための方式です
  • ライブラリ
    • Ruby Time - 日付と時刻の抽象化です
    • Python delorean - Python で日時を扱う際に生じる不都合な真実を解消するためのライブラリです
    • Python arrow - 日付、時刻、タイムスタンプの作成、操作、フォーマット、変換に対して、理にかなった人間に優しいアプローチを提供する Python ライブラリです
    • Luxon - JavaScript の日付と時刻のための強力でモダン、かつ使いやすいラッパーです
    • date-fns - ブラウザと Node.js で JavaScript の日付を操作するための、最も包括的でありながらシンプルで一貫性のあるツールセットを提供する、モダンな JavaScript 日付ユーティリティライブラリです
    • Day.js - Moment.js とほぼ互換性のある API を持ち、モダンブラウザ向けに日付と時刻の解析、検証、操作、表示を行う、ミニマルな JavaScript ライブラリです
    • Go time - 時間の計測と表示のための機能を提供するパッケージです
    • Go when - 依存関係のない自然言語の日時パーサーです
  • iCalendar - カレンダーとスケジュールの情報を保存・交換できるようにするメディアタイプです

データ交換言語

  • JSON - 軽量なデータ交換フォーマットです
    • jq - 軽量で柔軟なコマンドライン JSON プロセッサです
    • gojq - jq の純粋な Go 実装です
    • gron - JSON を個別の代入文に変換し、探したいものを grep しやすくし、その絶対的な「パス」を確認しやすくするツールです
    • JMESPath - JSON のためのクエリ言語です
    • JSON::Tiny - 依存関係のないミニマルな JSON モジュールです
    • Python json - JSON のエンコーダーとデコーダーを実装するモジュールです
    • Jackson - ストリーミング JSON パーサー・ジェネレーターライブラリと、それに対応するデータバインディングライブラリを含む、Java 向けのデータ処理ツール群です
  • XML - SGML (ISO 8879) から派生した、シンプルで非常に柔軟なテキストフォーマットです
    • XPath - XQuery および XPath データモデルに準拠した値の処理を可能にする式言語です
    • DOM - イベント、処理の中断、ノードツリーのためのプラットフォーム中立なモデルです
    • Python xml.etree.ElementTree - XML データの解析と生成のためのシンプルで効率的な API を実装するモジュールです
    • Nokogiri - ドキュメントの読み取り、書き込み、変更、クエリのためのツールを提供し、XML と HTML の操作を簡単で苦労なく行えるようにする Ruby ライブラリです
  • logfmt - シンプルで高速、かつ人間にもマシンにも解析しやすいログフォーマットです
  • JSON Lines - 一度に 1 レコードずつ処理できる構造化データを保存するための便利なフォーマットです
  • 関連ツール
    • fx - ターミナル向けの JSON ビューアーです
    • jnv - JSON のナビゲーション用に設計された、対話型の JSON ビューアーおよび jq フィルターエディタです

設定言語

  • JSON Superset
    • Jsonnet - アプリとツールの開発者向けのデータテンプレート言語です
    • Hjson - JSON のためのユーザーインターフェースです
    • YAML - すべてのプログラミング言語向けの、人間に優しいデータシリアライゼーション言語です
      • yq (python) - YAML、XML、TOML ドキュメント向けの、コマンドライン YAML、XML、TOML プロセッサ兼 jq ラッパーです
      • yq (go) - ポータブルなコマンドライン YAML、JSON、XML、CSV、TOML、プロパティプロセッサです
      • YAML::Tiny - できる限り少ないコードで書かれた、YAML スタイルのファイルを読み書きするための Perl クラスです
      • PyYAML - Python 用の YAML パーサーおよびエミッターです
    • StrictYAML - YAML 仕様の制限されたサブセットを解析・検証する、型安全な YAML パーサーです
    • JSON with comments - JSONC (コメント付き JSON) を解析・文字列化する JS ライブラリです
    • CUE - 論理プログラミングにルーツを持つ、オープンソースのデータ検証言語兼推論エンジンです
  • その他の設定言語
    • TOML - 読みやすいミニマルな設定ファイルフォーマットです
      • TOML::Tiny - ミニマルな、純粋な Perl 製の TOML パーサー兼シリアライザです
      • Python tomllib - TOML を解析するためのインターフェースを提供するモジュールです
    • HCL - 人間にもマシンにも優しい構造化された設定言語を作成するためのツールキットです
  • 関連ツール
    • yj - YAML、TOML、JSON、HCL 間の変換を行うコマンドラインインターフェースツールです
  • 汎用式言語
    • CEL - 高速でポータブル、かつ安全に実行できるように設計された汎用式言語です

テキスト処理と操作

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

正規表現

  • Regex - テキスト内の検索パターンを指定する文字列です
    • PCRE - Perl 5 と同じ構文と意味論を用いて正規表現パターンマッチングを実装するライブラリです
    • Onigmo - Oniguruma からフォークされた正規表現ライブラリです
    • Python re - Perl にあるものと同様の正規表現マッチング操作を提供するモジュールです
    • Go regexp - 正規表現検索を実装するパッケージです
    • RE2 - バックトラック型の正規表現エンジンに代わる、高速で安全かつスレッドフレンドリーな代替エンジンです
  • PRegEx - 正規表現をプログラム的に作成できるようにする Python ライブラリです
  • 正規表現ツール
    • Rubular - Ruby ベースの正規表現エディタです
    • rubree - Rubular にインスパイアされた Ruby の正規表現エディタです
    • Wubular - Rubular にインスパイアされた、Javascript ベースの正規表現エディタです
    • RegEx101 - オンラインの正規表現エディタ兼デバッガーです

テキストツール

  • 汎用ツール
    • GNU sed - 入力ストリームに対して基本的なテキスト変換を行うために使用されるストリームエディタです
    • sd - 直感的な検索・置換コマンドラインツールです
    • GNU diffutils - ファイル間の差分を見つけるための複数のプログラムからなるパッケージです
    • colordiff - diff と同じ出力を、可読性を高める色付きのシンタックスハイライト付きで生成するツールです

表形式データ

  • CLI ツール
    • csvkit - CSV への変換や CSV を扱うためのコマンドラインツール群です
    • xsv - Rust で書かれた高速な CSV コマンドラインツールキットです
    • qsv - CSV ファイルのインデックス作成、スライス、分析、分割、拡充、変換、結合を行うコマンドラインプログラムです
    • GNU awk - ファイル内の特定のレコードを選択し、それらに対して操作を行うために使用できるプログラムです
    • GoAWK - CSV をサポートする、Go で書かれた POSIX 準拠の AWK インタプリタです
  • ライブラリ
    • Text::CSV - カンマ区切り値 (CSV) の操作を行うモジュールです (XS または PurePerl を使用)
    • Python csv - CSV 形式の表形式データを読み書きするクラスを実装するモジュールです
    • Ruby csv - CSV ファイルとデータへの完全なインターフェースです
    • smarter_csv - CSV ファイルの読み書きを便利に行うための Ruby Gem です
    • Go csv - カンマ区切り値 (CSV) ファイルを読み書きするパッケージです
    • Papa Parse - JavaScript 向けの強力なブラウザ内 CSV パーサーです
    • Python tabulate - データを視覚的に見やすい形式で表示するライブラリ兼コマンドラインユーティリティです
    • Text::MarkdownTable - MultiMarkdown 構文でフォーマットされた表形式でデータを書き出すために使用できるモジュールです
    • Terminal Table - シンプルで機能豊富な、Ruby 向けの ASCII テーブル生成ライブラリです
    • go-pretty - golang 製のテーブルライターほか多機能を備えたライブラリです

テンプレートエンジン

  • テンプレート言語とエンジン
    • gomplate - 多数のデータソースと数百の関数をサポートする高速なテンプレートレンダラーです
    • Go template - テキスト出力を生成するためのデータ駆動型テンプレートを実装するパッケージです
      • sprig - Go のテンプレート言語向けのテンプレート関数を提供するライブラリです
    • mustache - ロジックレスなテンプレート構文です
    • Jinja - Python 向けの高機能なテンプレートエンジンです
    • Perl Text::Template - 定型文の作成、HTML ページの構築など、あらゆる用途に使えるライブラリです
    • Perl HTML::Template - HTML テンプレートを作成するためのシステムです
    • Template Toolkit - 高速で柔軟、かつ高度に拡張可能なテンプレート処理システムです
    • ERB - 使いやすくパワフルな、Ruby 向けのテンプレートシステムです
    • Haml - インラインコードを使用せずに、あらゆる Web ドキュメントの HTML をクリーンかつシンプルに記述するために使用されるマークアップ言語です
    • Liquid - 柔軟な Web アプリ向けの、安全で顧客向けのテンプレート言語です
    • envsubst in gettext - 環境変数の値を置換するプログラムです

マークアップ・ドキュメント処理

  • unified - コンテンツの作成と操作のために構築されたプラグインのエコシステムに支えられた、使いやすいインターフェースです
    • remark - プラグインによって駆動される Markdown プロセッサです
  • markdown-it - 100% の CommonMark サポート、拡張機能、シンタックスプラグインを備えた Markdown パーサーです
    • markdown-it-py - markdown-it プロジェクトの Python 移植版です
  • markdownify - タグ、フォーマット、スタイリングの扱いをカスタマイズできるオプションを備えた、HTML を Markdown に変換する Python ライブラリです

デバッグ

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
  • デバッガー
    • Python
      • VSCode Python extension - Python 言語を豊富にサポートする拡張機能です
      • debugpy - Python 3 向けの Debug Adapter Protocol の実装です
    • Node.js
      • VSCode built-in debugger - 編集・コンパイル・デバッグのループを高速化するのに役立つ、組み込みのデバッガーです
      • Node.js built-in inspector - デバッグとプロファイリングのために Chrome DevTools を Node.js インスタンスにアタッチできるインスペクタです
    • Go
      • VSCode Go extension - Go プログラミング言語向けの豊富な言語サポートを提供する拡張機能です
      • Delve - Go プログラミング言語向けのデバッガーです
    • Ruby
    • その他
      • VSCode Bash Debug - bashdb をベースにした bash デバッガーの GUI フロントエンドです
      • BASH Debugger - bash シェルのコマンドラインデバッガーです
      • GDB - GNU プロジェクトのデバッガーです
  • デバッガープロトコル
    • DAP - 開発ツール (IDE やエディタなど) とデバッガーの間で使用される抽象プロトコルです
    • V8 V8 Inspector Protocol - JavaScript アプリケーションのデバッグとプロファイリングのために、ツールが V8 を計測できるようにするプロトコルです

ロギング

  • ロギングライブラリ
    • Python
      • Python logging - アプリケーションやライブラリのための柔軟なイベントロギングシステムを実装する関数とクラスを定義するモジュールです
      • loguru - Python で楽しいロギング体験をもたらすことを目指すライブラリです
    • Javascript/Typescript
      • bunyan - node.js サービス向けのシンプルで高速な JSON ロギングライブラリです
      • winston - ほぼあらゆる用途に使えるロガーです
      • debug - Node.js コアのデバッグ手法をモデルにした、小さな JavaScript デバッグユーティリティです
    • Go
      • Charmbracelet log - ミニマルでカラフルな Go ロギングライブラリです
      • Go log - シンプルなロギング機能を実装するパッケージです
      • zap - Go における非常に高速で構造化された、レベル分けされたロギングです
      • Logrus - Go (golang) 向けの構造化ロガーであり、標準ライブラリのロガーと完全に API 互換です
      • Zero Allocation JSON Logger - JSON 出力に特化した、高速でシンプルなロガーを提供するパッケージです
    • その他
      • logger - システムログにメッセージを記録するツールです
      • log4j - 汎用性の高い、実運用レベルの Java ロギングフレームワークです
      • log4sh - シェルスクリプト向けの高度なロギングフレームワークです
      • log4net - 優れた Apache log4j フレームワークを Microsoft .NET ランタイムに移植したものです

テストフレームワークとツール

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > ソフトウェア開発プロセス
  • テストの概念とベストプラクティス
    • Test Pyramid - バランスの取れたポートフォリオを作るために、異なる種類のテストをどのように使うべきかについての考え方です
    • Test case - 1 つのテストを定義する、入力、実行条件、テスト手順、期待される結果の仕様です
    • Test double - テストにおいて実際のオブジェクトの代役を務めることができるオブジェクトです
    • Arrange-Act-Assert Pattern - テスト対象のオブジェクトをセットアップし、何らかのミューテーターを通じてそれに作用させ、そのオブジェクトや協調オブジェクト、パラメータについて主張を行うという形でテストを構造化するパターンです
    • DAMP (Descriptive And Meaningful Phrases) - 単体テストを書く際に、DRY よりも重視すべき原則です
    • Unit testing best practices with .NET - 堅牢で保守しやすいテストを書く助けとなる一連のベストプラクティスです
    • JS Testing Best Practices - JavaScript 向けの主要なテストプラクティスをまとめたものです
  • テストプロトコル
    • Test Anything Protocol - テストモジュールとテストハーネスの間のシンプルなテキストベースのインターフェースです
      • tappy - Test Anything Protocol (TAP) を扱うための一連のツールです
      • Node-Tap - JavaScript 向けの Test-Anything-Protocol ライブラリです

テストフレームワーク

  • Bash
    • Bats-core - Bash 用の自動テストシステムです
    • shUnit2 - Bourne 系のシェルスクリプト向けの単体テストフレームワークです
    • shellspec - dash、bash、ksh、zsh、そしてすべての POSIX シェル向けの高機能な BDD 単体テストフレームワークです
  • Ruby
    • Minitest - TDD、BDD、モック、ベンチマークをサポートする、完全なテスト機能一式です
    • RSpec - Ruby プログラミング言語向けのテストツールです
    • aruba - Cucumber-Ruby、RSpec、Minitest を使ってコマンドラインアプリケーションをテストするツールです
  • Python
    • Python unittest - 「PyUnit」とも呼ばれる単体テストフレームワークで、JUnit の Python 言語版です
    • pytest - 小さく読みやすいテストを簡単に書けるようにし、複雑な機能テストをサポートするためにスケールできるフレームワークです
    • pytest-mock - 標準の unittest.mock パッケージの薄いラッパーである mocker フィクスチャを提供する pytest プラグインです
  • Javascript/Typescript
    • Vitest - Vite が搭載された、非常に高速な単体テストフレームワークです
    • Jest - シンプルさに重点を置いた、心地よい JavaScript テストフレームワークです
    • Mocha - Node.js とブラウザ上で動作する、機能豊富な JavaScript テストフレームワークです
    • ランタイム統合型
      • bun test - Bun に組み込まれた、高速で Jest 互換のテストランナーです
      • deno test - JavaScript と TypeScript のコードをテストするために使用できる、組み込みのテストランナーです
  • Go
    • Go testing - Go パッケージの自動テストをサポートするパッケージです
    • Ginkgo - Go 向けの BDD スタイルのテストフレームワークです
  • その他
    • JUnit - Java と JVM 向けのプログラマーフレンドリーなテストフレームワークの、第 5 メジャーバージョンです
    • xUnit.net - .NET Framework 向けの、無料でオープンソースかつコミュニティ主導の単体テストツールです

アサーションライブラリ

  • Chai - node とブラウザ向けの BDD / TDD アサーションライブラリです
  • Gomega - Go 向けのマッチャー兼アサーションライブラリです

コードカバレッジツール

  • Go cover - Go プログラムのコードカバレッジ統計を提供するツールです
  • Istanbul - もう 1 つの JS コードカバレッジツールです
  • cobertura - テストによってアクセスされたコードの割合を計算する、無料の Java ツールです
  • LCOV - プログラムのどの部分が実際に実行されたかについての情報を提供する GNU ツール GCOV の拡張です
  • kcov - コンパイルされたプログラム向けのコードカバレッジテスターです
  • SimpleCov - 強力な設定ライブラリと、テストスイート間でのカバレッジの自動マージ機能を備えた、Ruby 向けのコードカバレッジツールです

テスト支援ツール

  • モックライブラリ
    • Jest / Vitest 組み込みのもの
    • mock - HTTP レスポンスをモックするためのコマンドラインツールです
    • unittest.mock - テスト対象システムの一部をモックオブジェクトに置き換えられるようにする、Python のテスト用ライブラリです
    • sinon.js - スタンドアロンでテストフレームワークに依存しない、JavaScript のテストスパイ・スタブ・モックです
    • mockery - Golang のインターフェースのモック実装を作成するプロジェクトです
  • テストデータジェネレーター
    • Databricks Labs Data Generator - Spark を使って Databricks 環境内で合成データを生成するための Python ライブラリです
    • generatedata.com - 強力で機能豊富な、ランダムテストデータジェネレーターです
    • gofakeit - go で書かれたランダムデータジェネレーターです
    • Fake-rs - Rust で偽データを生成するためのライブラリです
  • マルチ環境テストランナー
    • nox - tox と同様に、複数の Python 環境でのテストを自動化するコマンドラインツールです
    • tox - Python 向けの、コマンドラインで駆動する自動テストツールです

ミューテーションテスト

  • Mutation testing - ソースコードの特定の文を変更し、テストスイートがそのエラーを検出できるかどうかを確認する、ソフトウェアテストの一種です
    • cargo-mutants - テストを失敗させることなくバグを挿入できる箇所を見つけることで、プログラムの品質向上を助ける Rust 向けのツールです
    • Stryker Mutator - ミュータントを使ってテスト自体をテストするツールです
    • PIT Mutation Testing - Java と JVM に対してゴールドスタンダードなテストカバレッジを提供する、最先端のシステムです

ビルド自動化

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
  • 3. テクノロジー > 3.1 ソフトウェア開発 > クラウドインフラ活用
  • ビルド自動化ツール
    • GNU Make - プログラムの実行可能ファイルやその他の非ソースファイルの生成を制御するツールです
      • Remake - エラーレポートの改善、トレーシングとプロファイリングの向上、そしてデバッガーを追加した GNU Make の拡張版です
      • makefile-graph - GNU Make の内部データベースを解析してグラフを生成する、Go モジュール兼 CLI アプリケーションです
    • Bazel - 高速でスケーラブル、マルチ言語対応かつ拡張可能なビルドシステムです
    • Gradle - ほぼあらゆる種類のソフトウェアをビルドできるほど柔軟に設計された、オープンソースのビルド自動化ツールです
    • Maven - ソフトウェアプロジェクトの管理と理解のためのツールです
    • Task - GNU Make よりもシンプルで使いやすいことを目指す、タスクランナー兼ビルドツールです
    • CMake - ソフトウェアのビルド、テスト、パッケージ化のために設計された、オープンソースのクロスプラットフォームなツール群です
      • CPack - バイナリインストーラーとソースパッケージ用のジェネレーターを設定するツールです
    • Meson - 非常に高速であり、さらに重要なこととして可能な限りユーザーフレンドリーであることを目指した、オープンソースのビルドシステムです
    • Dune - OCaml、OCaml 関連言語、Coq 向けの構成可能なビルドシステムです
    • Rake - Ruby で実装された Make のようなプログラムです
    • fpm - Debian、Ubuntu、Fedora、CentOS、RHEL、Arch Linux などのパッケージを簡単に作成できるツールです
  • チュートリアル

モノレポ管理

  • モノレポツール
    • Turborepo - JavaScript と TypeScript のモノレポ向けの高性能ビルドシステムです
    • Nx - ファーストクラスのモノレポサポートと強力な統合機能を備えた、スマートで高速かつ拡張可能なビルドシステムです
    • Lerna - JavaScript/TypeScript 向けの元祖モノレポツールです
  • リソース
    • Monorepo Tools - モノレポ向けのツールとリソースを掲載したウェブサイトです

プログラムドキュメント

  • プログラムドキュメントツール
    • apiDoc - ソースコード内の API 記述からドキュメントを作成するツールです
    • JSDoc - JavaScript 向けの API ドキュメントジェネレーターです
    • perldoc - perl のインストールツリーに埋め込まれた .pod 形式のドキュメントを検索するツールです
      • Pod - Perl、Perl プログラム、Perl モジュールのドキュメントを書くために使用される、使いやすいマークアップ言語です
    • pydoc - Python モジュールからドキュメントを自動生成するツールです
      • Docstring - モジュール、関数、クラス、メソッドの定義において最初の文として現れる文字列リテラルです
    • godoc - Go プログラム向けのドキュメントを抽出・生成するツールです
    • rustdoc - Rust プロジェクト向けのドキュメントを生成するツールです
    • RDoc - Ruby プロジェクト向けの HTML およびコマンドラインドキュメントを生成するツールです
    • Javadoc - ソースコード内のドキュメントコメントから HTML 形式の API ドキュメントを生成する、Oracle 製のツールです

パッケージ依存関係管理

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
  • JavaScript と Web エコシステム
    • npm CLI - 世界最大のソフトウェアレジストリです
      • npm-check-updates - package.json の依存関係を最新バージョンにアップグレードできるコマンドラインツールです
      • npmgraph - npm の依存関係グラフを探索するためのツールです
    • yarn - プロジェクトマネージャーとしても機能するパッケージマネージャーです
    • pNPm - 高速でディスク容量効率の良いパッケージマネージャーです
    • Corepack - Node.js プロジェクトと、開発中に使用されることを意図したパッケージマネージャーとの橋渡しをする、ランタイム依存のない Node.js スクリプトです
    • dpmland - Deno のモジュールと依存関係を管理するための、シンプルでモダン、かつ簡単な方法です
    • Bun package manager - Bun に組み込まれた、高速で npm 互換のパッケージマネージャーです
    • orogene - JavaScript エコシステム向けの次世代パッケージマネージャーです
    • vlt - npm 互換パッケージを安全な npm ミラーおよび完全に解決された依存関係グラフとともに提供する、素早く動くチーム向けの JavaScript パッケージレジストリです
  • Python 開発
    • pip - Python 向けのパッケージインストーラーです
    • poetry - Python における依存関係管理とパッケージングのためのツールです
    • pdm - 最新の PEP 標準をサポートする、モダンな Python パッケージ・依存関係マネージャーです
    • uv - Rust で書かれた、非常に高速な Python パッケージ・プロジェクトマネージャーです
  • システム言語・ネイティブ言語
    • go mod - Go のソースコードを管理するためのツールです
    • Cargo - Rust のパッケージマネージャーです
    • Conan - C 言語と C++ 言語向けの依存関係・パッケージマネージャーです
    • vcpkg - ライブラリの取得と管理のための、無料の C/C++ パッケージマネージャーです
    • bpkg - 軽量な bash パッケージマネージャーです
  • JVM と .NET フレームワーク
    • Maven - ソフトウェアプロジェクトの管理と理解のためのツールです
    • Gradle - ほぼあらゆる種類のソフトウェアをビルドできるほど柔軟に設計された、オープンソースのビルド自動化ツールです
    • NuGet CLI - .NET 向けのパッケージマネージャーです
  • その他の言語エコシステム
    • RubyGems CLI - Ruby 公式のパッケージマネージャーです
    • Bundler - Ruby プロジェクトに一貫した環境を提供するツールです
    • LuaRocks CLI - Lua モジュール向けのパッケージマネージャーです
    • cpanminus - CPAN からモジュールを取得・展開・ビルド・インストールするツールです
    • stack - Haskell プロジェクトを開発するためのクロスプラットフォームプログラムです
    • opam - OCaml コミュニティ向けのソースベースのパッケージマネージャーです
    • Pub - Dart と Flutter 公式のパッケージマネージャーです
    • Hex - Erlang エコシステム向けのパッケージマネージャーです

仮想環境

Relevant DSS-P Skills
  • 3. テクノロジー > 3.1 ソフトウェア開発 > コンピュータサイエンス
  • 仮想環境マネージャー
    • Python venv - 仮想環境の作成のためのモジュールです
    • pyenv - シンプルな Python バージョン管理のためのツールです
    • nodeenv - 分離された node.js 環境を作成するツールです
    • nvm - 複数のアクティブな node.js バージョンを管理するための、POSIX 準拠の bash スクリプトです
    • nvm-windows - Windows 向けの node.js バージョンマネージャーです
    • rv - Rust で書かれた、シンプルで強力な Ruby バージョンマネージャーです
    • frum - Rust で書かれた、高速でモダンな Ruby バージョンマネージャーです
    • g - シンプルな Go バージョンマネージャーで、グルテンフリーです
    • perlbrew - $HOME ディレクトリ内で複数の perl インストールを管理するツールです
    • asdf - ツールバージョンマネージャーです
    • mise - 多言語対応のツールバージョンマネージャーです
    • tenv - OpenTofu、Terraform、Terragrunt、Atmos 向けの多用途バージョンマネージャーです