structured-documents

AI の会話の方針

求められた成果物(コード・手順・設定・答え)が、同種の状況にもそのまま使える一般的な形で書けるなら、その形で書いてください。 一般化しても適用範囲が広がらない場合や、成果物が複雑になる場合は、局所的なままで構いません。 その場合、一般化しなかったことの説明は不要です。 調査の進め方、切り分けの手順、心構え、判断の姿勢といった、 技術的内容から離れた一般論は書かないでください。

症状や差分を説明するときは、まずそれを生んでいる仕組み(どの機能が、何を根拠に、どう動いた結果か)を書き、その後に結果を書いてください。

外部のコマンドやツールの挙動について書くときは、ドキュメントで確認した内容か、実際に動かして確認した内容か、そうでない推測かを区別して書いてください。 推測のときは、確認する方法を添えてください。 実際に動かして確認したときは、試した条件と、結果が変わりうる条件を書いてください。

プログラミング言語共通 コーディング ルール

順序

コメント

命名規則

制御構文

その他

シェルスクリプト コーディング ルール

順序

コメント

分類コメント

CLI の オプション指定

命名規則

関数定義

関数定義

関数呼び出し、パイプ、リダイレクト

エラー処理

変数、引数

制御構文

その他

開発中のコード

CLI のオプションの解析をするスクリプト

PositionalArgs=()
while [[ $# -gt 0 ]]; do
    case $1 in
        -s|--search-path)  Options_SearchPath="$2"; shift; shift;;  #search: bash default values
        -*) echo "Unknown option $1"; exit 1;;
        *) PositionalArgs+=("$1"); shift;;
    esac
done
set -- "${PositionalArgs[@]}"  #// set $1, $2, ...
unset PositionalArgs

echo "\$SearchPath = \"${Options_SearchPath}\""
echo "\$1          = \"$1\""
echo "\$2          = \"$2\""

Error 関数のサンプル

function  Error() {
    local  errorMessage="${1-""}"  #// "${1-""}" means that "$1" default is "".
    if [ "${errorMessage}" == "" ]; then
        errorMessage="ERROR"
    fi

    echo  "${errorMessage}"  >&2
    exit  1
}

SetArrayFromLines 関数

function  SetArrayFromLines() {
    #// Sets lines to array except for empty line
    #//     local  __Array__=( )  &&  SetArrayFromLines  __Array__  "a"$'\n'"b b"$'\n'$'\n'"c"$'\n'$'\n'
    #//     #// __Array__ == ( "a"  "b b"  "c" )
    local -n  arrayRef="$1"
    shift
    #// local  texts="$*"  #// Use "$*" instead of "${texts[@]}" for faster
    local  IFS=$'\n'  #// "$*" joins arguments with newline, and read splits by newline

    arrayRef=( )  &&  read -r -d ""  -a arrayRef <<< "$*"  ||  true
}

TypeScript コーディング ルール

命名規則

関数やメソッドのコメント

以下についてコメントを書く場合、書く位置を以下のようにしてください。:

(目的は、折りたためるようにすることと、@ を書かないドキュメント生成ツールに対応するため)

サンプル

export function  getOverlays(
    // composite() に渡すオーバーレイの配列を作る
    regions: Region[],
        // 塗りつぶす領域の配列。各要素は画像左上を原点とした
        // ピクセル座標
    imageWidth: number,   // 合成先の画像の幅
    imageHeight: number,  // 合成先の画像の高さ
    color: string = '#000000',  // 塗りつぶす色。'#000000' や 'black' などの CSS 色名
): sharp.OverlayOptions[]  // composite() にそのまま渡せる配列
{
    ...

HTML+SVG コーディング ルール