ハッカソンの前に既有知識を共有するためのチェックリスト
成果物としてソフトウェアをつくるハッカソンの前にメンバー同士の既有知識を共有するためのチェックリスト。
思いついたら追加・更新します。mgn901.icon
実装
制御構造(選択構造、条件分岐、反復構造、繰り返し)
変数、定数
変数の生存期間中の状態の保持のために変数を使うことを知っている。
状態の保持のために用いるためには状態機械を実装する方法についての知識も必要だろう。
値に名前を付けるために変数を使うことを知っている。
変数の特別な場合で再代入ができないものである「定数」があり、保守性を高めるために使われることを知っている。
関数
手続きに名前を付けるために関数を使うことを知っている。
計算に名前を付けるために関数を使うことを知っている。
オブジェクト
状態機械を実現するためにオブジェクトを使うことを知っている。
値や手続きをまとめるためにオブジェクトを使うことを知っている。
ライブラリの関数はオブジェクト単位でまとめられて提供されていることがある。
ミュータブル、イミュータブル
変数の生存期間中に変数が指す値を書き換えられないようにすることが、プログラムの保守性の向上につながることを知っている。
制御構造の代替
例えば「if文等の選択構造の内部での代入」を「三項演算子の結果や無名関数の戻り値の代入」に置き換えられることを知っている。
例えば「選択構造で状態に応じて関数を呼び出す」を「関数を値に持つ辞書Dの項目Kを呼び出す」に置き換えられることを知っている。
参考:TypeScriptで引数の型名に応じて関数を自動選択して呼び出すルータ(switch、if等の選択構造不要)
第一級オブジェクトとしての関数(プログラム言語による)
関数Aの引数として関数Bをとり、関数Aの内部で関数Bを呼び出せることを知っている。
1つの関数に混在する知識を複数の関数に分ける方法を知っている。
状態機械
インメモリでの状態の保持が変数の生存期間によって実現されていることを知っている。
データベースを状態機械として扱うことができる。
データ設計
配列、連想配列、リスト、集合、辞書といった、データをコレクションする方法を知っている。
ソフトウェアシステムで扱うデータの種類を洗い出してデータ型を定義することができる。
データに識別子をつけることができる。
実体関連モデル(ERモデル)
データを識別子同士で紐付けることができる。
あるデータにリストを持たせたることをERモデルで表現する方法を知っている。
データの種類
質的データと量的データ、動作動詞のデータと状態動詞のデータ、といった具合に、ソフトウェアシステムで扱うデータを多様な側面で分類できる。
アーキテクチャ設計
クライアントサーバモデル、フロントエンドとバックエンド
フロントエンドとバックエンドの間、ソフトウェアコンポーネント間の通信規約(プロトコル、インタフェース)を定義する方法を知っている。
ソフトウェアコンポーネント間のインタフェースを実装できる。
他コンポーネントへの知識の流出防止
開発環境設計、システムソフトウェア
フレームワーク、ライブラリ
フレームワークやライブラリの文書を読んで、計画しているアーキテクチャに合わせてフレームワークやライブラリを導入することができる。
静的検査、テスト
静的検査、テストによって、コードの既知の問題を検出できることを知っている。
静的検査やテストを合格しないコードに対処することができる。
統合開発環境、開発環境の構築
自分で統合開発環境のインストールや設定を計画でき、人に指示できる。
本番環境の構築
自分のソフトウェアの実行に必要な実行環境等のインストールや設定を計画でき、人に指示できる。
コンテナ関連技術
自分でコンテナ実行環境のインストールを計画でき、人に指示できる。
ソフトウェアをコンテナイメージとして表現する方法を知っている。
開発環境と本番環境の両方をコンテナイメージとして表現する方法を知っている。
開発プロセス
バージョン管理システム(Gitなど)
上流リポジトリから最新のコードを入手する方法を知っている。
上流リポジトリに自分の編集したコードを他人のコードと衝突しないように反映する方法を知っている。
設計情報を共有する方法、ドキュメンテーションの記述要素を提案できる。