一覧へ

変数の命名はコーディングの半分だ

camelCase、PascalCase、snake_caseの違いと良い変数名の付け方。バイオデータ変数の実例とNCBI/ENSEMBL命名規則との関連。

入門
|
15
|
検証済み (2026-06)
命名規則camelCaseコード可読性変数名協業バイオデータ変数
進捗0/8 (0%)

変数の命名はコーディングの半分だ

コーディングで最も難しいことは何でしょうか?アルゴリズム?デバッグ?実はプログラマーの間で有名なジョークがあります:「コンピュータサイエンスで難しいことは2つだけ — キャッシュの無効化と名前付け。」

ジョークですが本当です。変数、関数、ファイルの名前はコードの説明書の役割を果たします。名前をうまく付ければコメントは不要で、6ヶ月後にコードを開いてもすぐに理解できます。

悪い名前 vs 良い名前

javascript
// 悪い例
const d = [1.85, 0.42, 2.10, 0.15];
const t = 0.5;
let c = 0;
for (let i = 0; i < d.length; i++) {
  if (d[i] >= t) c++;
}

// 良い例
const odValues = [1.85, 0.42, 2.10, 0.15];
const odThreshold = 0.5;
let passedCount = 0;
for (let i = 0; i < odValues.length; i++) {
  if (odValues[i] >= odThreshold) passedCount++;
}

2つのコードはまったく同じ動作をします。しかし下のコードは読んだ瞬間に「OD値の中から基準値以上のものを数えるコードだな」とすぐにわかります。dtcからは絶対にわからない情報です。

4つの表記法:いつ何を使うか

コーディングで名前を付ける規則を**命名規則(Naming Convention)**と呼びます。主要な表記法は4つあります:

表記法形式使用対象
camelCase最初の単語は小文字、以降は大文字変数、関数sampleCountgetGeneInfo()
PascalCaseすべての単語が大文字始まりクラス、ReactコンポーネントGeneCardSampleList
snake_case小文字 + アンダースコアPython変数/関数、ファイル名sample_countgene_info.py
SCREAMING_SNAKE大文字 + アンダースコア定数MAX_RETRYOD_THRESHOLD

JavaScriptではcamelCaseが基本です。Pythonではsnake_caseが基本です。これらは各言語コミュニティの約束なので、規則に従えば他の開発者がコードを読みやすくなります。

javascript
// JavaScript (camelCase)
const sampleCount = 96;
function calculatePassRate(samples) { /* ... */ }

// Reactコンポーネント (PascalCase)
function GeneCard(props) { /* ... */ }

// 定数 (SCREAMING_SNAKE)
const MAX_OD_VALUE = 4.0;
const MIN_SAMPLE_VOLUME = 0.5;

バイオデータと命名:実践的な課題

バイオデータをコーディングする際には特有の悩みがあります。遺伝子名、データベース識別子、分析パラメータをどう変数名に落とし込むか?

ゲノム機関ごとに命名規則が違う

機関/DB遺伝子表記
NCBI (Gene)大文字イタリック(ヒト)TP53BRCA1
ENSEMBLENSG + 数字IDENSG00000141510
UniProtタンパク質名_種略称P53_HUMAN
HGNC公式シンボル(大文字)TP53、EGFR

コードではイタリックが使えないので、変数名にする時にルールが必要です:

javascript
// 遺伝子名はそのまま文字列として
const geneName = "TP53";
const ensemblId = "ENSG00000141510";

// 複数の遺伝子を扱う時
const targetGenes = ["TP53", "BRCA1", "EGFR"];

// 分析結果オブジェクト
const geneExpression = {
  TP53: 12.4,
  BRCA1: 8.7,
  EGFR: 15.2
};

遺伝子名そのもの(TP53)はデータなので文字列に入れ、それを格納する変数(geneName、targetGenes)はcamelCaseで命名します。

良いバイオ変数名の例

悪い名前良い名前理由
dataqcResults何のデータかわかる
valodValueどの値か明確
listfailedSamples何のリストか明確
flagisPassedbooleanはis/hasで始める
nsampleCount何の数か明確
temprawSequence一時的だからと命名を諦めない
resapiResponse略語より完全な単語

命名5原則

1. 意図を表す

変数名だけ見て「これが何か」わかるべきです。dよりelapsedDaysxよりcurrentIndex

2. 省略しない

cntよりcountbtnよりbuttonmsgよりmessage。自動補完があるのでタイピング時間は同じです。ただし慣例として定着した略語は例外:idurlapidb

3. Booleanはis/has/canで始める

javascript
const isPassed = od >= 1.0;
const hasPermission = user.role === "admin";
const canDelete = hasPermission && !isLocked;

passedだけでは「通過したもの」なのか「通過したかどうか」なのか曖昧です。isPassedは明確にtrue/falseを意味します。

4. 関数は動詞で始める

javascript
function calculatePassRate(samples) { /* ... */ }
function fetchGeneData(geneId) { /* ... */ }
function formatDate(timestamp) { /* ... */ }

関数は動作なので動詞が自然です。passRate()よりcalculatePassRate()の方が「この関数は合格率を計算する」とすぐにわかります。

5. 一貫性を保つ

一つのプロジェクトで「取得する」をgetfetchretrieveloadの4種類で混用すると混乱します。一つを決めて一貫して使いましょう。チームプロジェクトならこのルールを文書化します。

ファイル名とフォルダ名

規則があるのは変数だけではありません。ファイルやフォルダにも規則があります:

対象規則
JavaScriptファイルcamelCaseまたはkebab-casegeneUtils.jsgene-utils.js
ReactコンポーネントファイルPascalCaseGeneCard.tsxSampleList.tsx
Pythonファイルsnake_casegene_analysis.pyqc_report.py
CSSクラスkebab-casegene-cardsample-list
環境変数SCREAMING_SNAKEDATABASE_URLAPI_KEY

kebab-caseは単語をハイフン(-)でつなぐ方式です。URLやCSSで主に使われます。

結論:名前はコードの第一印象だ

良い名前を付けることに時間を使うのは無駄ではありません。コードは一度書いて何十回も読まれます。書くのに30秒余計にかかっても、読むたびに10秒節約できるなら — それは投資です。

論文でFigureの軸ラベルを「value1」「value2」と書いたらレビュアーにリジェクトされるように、コードでdtcと名前を付ければ将来の自分が苦しみます。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...