一覧へ

BioPlaygroundはどうやって作られたか — 研究者が開発者になった物語

生命工学研究者がBioPlaygroundバイオツールを作った実践経験記。コーディング入門からWebデプロイまで。

入門
|
30
|
検証済み (2026-06)
BioPlaygroundWeb開発バイオツール可視化実践経験
進捗0/8 (0%)

BioPlaygroundはどうやって作られたか

この記事はコーディングチュートリアルではありません。「なぜ始めたのか、どんな壁にぶつかったのか、どう乗り越えたのか」についての物語です。

コードを1行も知らなかった研究者がどうやってバイオツールを作ることになったのか — この経験がDevBenchを始めるみなさんの勇気になれば幸いです。

始まり:「このグラフ、毎回手で描かなきゃいけないの?」

すべては繰り返し作業から始まりました。

毎週実験結果をExcelで整理し、同じ形のグラフを繰り返し作り、同僚にメールで送る作業。「これを自動でできないだろうか?」という問いがBioPlaygroundの種でした。

最初はPythonスクリプト1本でした:

python
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
data = [23.5, 45.2, 67.8, 89.1, 12.3]
labels = ["Sample A", "Sample B", "Sample C", "Sample D", "Sample E"]
fig, ax = plt.subplots(figsize=(8, 5))
ax.bar(labels, data, color="#2d5a3d")
ax.set_ylabel("Expression Level")
ax.set_title("Gene Expression Comparison")
fig.savefig("expression.png", dpi=150, bbox_inches="tight")
plt.close(fig)
print("チャート保存完了: expression.png")
assert len(data) == len(labels)

このスクリプト1本が毎週30分を節約してくれました。「コーディングってこんなに役に立つんだ。」

最初の壁:「他の人にも使えるようにするには?」

Pythonスクリプトは自分だけが使えました。同僚に「Python入れて、このスクリプト実行してみて」と言うと、返ってくる答えはいつも同じでした。

「結果だけ送って。」

Webアプリが答えでした。URL1つで誰でも、どのデバイスからでも使えるのですから。

python
tech_stack = {
"フロントエンド": "React (Next.js)",
"スタイリング": "Tailwind CSS",
"バックエンド": "Supabase",
"デプロイ": "Vercel",
"チャート": "Recharts",
}
for category, tool in tech_stack.items():
print(f"{category}: {tool}")
assert len(tech_stack) == 5

初めて見る技術名が宇宙語のように感じました。でも一つずつ学んでいくうちに気づいたことがあります — フレームワークはただの道具、大事なのは解きたい問題だということ。

2番目の壁:「このコード、昨日は動いたのに今日は動かないのはなぜ?」

Gitなしでコーディングしていた頃の悪夢です。

  • app_v1.py
  • app_v2_final.py
  • app_v2_final_本当に最終.py
  • app_backup_20260315.py

Gitを学んでからこの問題は完全に消えました。すべての変更履歴が残り、いつでも過去に戻れるのですから。

python
git_lessons = [
"コミットは頻繁に、小さく",
"コミットメッセージには「なぜ」を書く",
"mainブランチに直接pushしない",
"コードレビューはミスを見つけてくれるセーフティネット",
]
for i, lesson in enumerate(git_lessons, 1):
print(f"教訓 {i}: {lesson}")
assert len(git_lessons) == 4

3番目の壁:「データが大きすぎてブラウザが固まります」

バイオデータは巨大です。GTExデータセットは数万行、TCGA臨床データは数千人の患者。これを全部ブラウザに読み込むとタブがクラッシュします。

解決策はサーバーで要約し、ブラウザには結果だけ送ることでした:

python
strategies = {
"サーバーサイドフィルタリング": "全データのうち必要な部分だけAPIで送信",
"ページネーション": "一度に100行ずつだけ表示",
"事前計算": "統計量を事前に計算して保存",
"遅延読み込み": "スクロール時に追加データをロード",
}
for strategy, desc in strategies.items():
print(f"- {strategy}: {desc}")
assert "サーバーサイドフィルタリング" in strategies

振り返って:コーディングを学んだ研究者が得るもの

コーディングを学んでも開発者になるわけではありません。しかし研究者としてより強力になります。

python
gains = {
"自動化": "繰り返し作業からの解放 → 研究に集中",
"再現性": "スクリプト = 完璧な実験ノート",
"コミュニケーション": "開発チームと同じ言語で対話",
"独立性": "欲しいツールを自分で作れる",
"キャリア": "バイオインフォマティクス、データサイエンスへの拡張",
}
for gain, desc in gains.items():
print(f"- {gain}: {desc}")
assert len(gains) == 5

DevBenchを始めるあなたへ

完璧に学んでから始めようとしないでください。不完全なコードでも問題を解くコードが良いコードです。

BioPlaygroundの最初のコミットは恥ずかしいほどめちゃくちゃでした。でもそのめちゃくちゃなコードが今日のツールを作りました。

あなたの最初のprint("Hello, Biology!")がどこに導くか、誰にもわかりません。


この記事で取り上げたツールの使い方はDevBenchの他のトピックで一つずつ学べます。共通基礎から始めましょう

💬 質問・コメント

0件のコメント

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

0/2000

読み込み中...