MEP 29: ドロップダウンのウィジェット
- Created: 2026-03-22 11:58:00
- Updated: 2026-04-07 12:52:00
- Status: Supported(v1.0.10)
モチベーション
ハーフトーンなどで循環パターンをドロップダウンで選ぶ、のような事をしたい。
提案: @param_i32のウィジェットにDROPDOWNを追加
以下のようなドロップダウンのウィジェット型と、文字列配列の引数を追加したい。
@param_i32 pattern(DROPDOWN, label="形", items=["四角", "丸", "星"])
こうすると、patternは0, 1, 2のどれか。デフォルトは0。
検討
ウィジェットの名前と引数が主な検討事項。
DROPDOWNかDROP_DOWNか
そもそもにdrop downなのかdropdownなのか、という問題で、 業界的には両方広く使われているので、どちらでも良い、というのが結論。
COLOR_PICKERが2つに分かれるのでDROP_DOWNもありうる。 だがCHECKBOXなので一つの方が自然という気もする。
htmlやcss界隈ではdropdown-menuなどとなる事が多いので、 CHECKBOXと同じ扱いとして一つの単語が良いのではないか。
- Dropdowns · Bootstrap bootstrapはdropdown
- Create a drop-down list - Microsoft Support MSのドキュメントではdrop-down list
drop-down listはdropとdownの間が空白では無いので2つの単語という訳でもなく、曖昧な所に思える。
initは無いのか?
初期値は選べても良い気はする。 一方で最初の実装で必須という気もしないし、後から追加も出来るので、 まずは必要最低限から始める、というYAGNI的な精神で、とりあえずinitは無しにしよう、という判断。
数字はマジックナンバーになるのか?
0, 1, 2, 3という数字は、いかにも定数にしたい。 概念的にはenumにしたい。 現状のenumはMFGの処理系内部には存在しているのだが、ユーザー定義は出来ない状態になっている。
現状は以下の理由からマジックナンバーである事を受け入れる
- 国際化してない時には文字列を並べるだけで使いたい
- enumのサポートを追加しないといけない
- 単なる数字になるのは学習しやすい
国際化と配列
今回はじめてparamの中に配列がでてきた。 MEP 19: paramの国際化との兼ね合いも書いておく。
国際化ではダブルクオートをとって直接リソースIDとなるので、以下のようになる。
items=[$LABEL_SQUARE, $LABEL_CIRCLE, $LABEL_STAR]
全体としては以下。
@param_i32 pattern(DROPDOWN, label="形", items=[$LABEL_SQUARE, $LABEL_CIRCLE, $LABEL_STAR])