開発ブログ一覧に戻る
開発ストーリー2026年1月10日

データの型を統一する

前回の記事で、any型を排除してPrismaの型を使うようにしたと紹介しました。 今回は、なぜ「Prismaの型を優先する」というルールを設けているのか、 もう少し詳しく説明します。

書類のフォーマットを想像してみてください

学校には様々な書類があります。 出席簿、成績表、保健調査票...。 もし、これらの書類で「生徒の名前」の書き方がバラバラだったらどうでしょう。

名前の書き方がバラバラな例

  • 出席簿:「山田 太郎」(姓と名の間にスペース)
  • 成績表:「山田太郎」(スペースなし)
  • 保健調査票:「太郎 山田」(名・姓の順)

同じ生徒なのに、書き方が違う。 これでは、書類を照らし合わせるときに混乱します。 だから学校では、書類のフォーマットを統一しています。

プログラムでも同じです。 「生徒」のデータをどんな形で扱うか(どんな項目があるか、 それぞれ何が入るか)を決めておく必要があります。 これを「型」といいます。

型が乱造されると何が起きるか

問題は、開発者が自由に型を作れてしまうことです。

たとえば、Aさんが「生徒一覧画面」を作るときに 「StudentData」という型を作る。 Bさんが「成績表出力」を作るときに 「StudentInfo」という型を作る。 どちらも「生徒」のデータを表していますが、微妙に違う。

型が乱造されると
  • 同じデータなのに、別の型がいくつも存在する
  • 「どの型を使えばいいんだっけ?」と毎回迷う
  • データを渡すたびに変換処理が必要になる
  • データベースの構造を変えても、独自の型は自動で更新されない

これは実際に起きやすい問題です。 「とりあえず今必要な形で型を作ろう」と思うと、 どんどん似たような型が増えていきます。

「Prismaの型を使う」というルール

一括採点では、この問題を防ぐためにルールを設けています。「できる限りPrismaの型を使う。独自の型は作らない。」

Prismaは、データベース(SQLite)とプログラムをつなぐ道具です。 データベースの設計から、型が自動で生成されます。 この自動生成された型を「唯一の正解」として、プログラム全体で使います。

Prismaの型を優先するメリット
  • 「どの型を使うか」で迷わない(Prismaの型一択)
  • データベースの構造を変えると、型も自動で変わる
  • 似たような型が乱造されない
  • 変換処理が不要になり、バグが減る

「生徒」のデータを扱うなら、Prismaが生成したStudent型を使う。 画面で表示するときも、ファイルに書き出すときも、同じ型。 独自に「StudentData」や「StudentInfo」を作らない。 これがルールです。

2つの部分で同じ型を使う

以前の記事で紹介したように、一括採点は「メインプロセス」と「レンダラープロセス」という 2つの部分がデータをやり取りしながら動いています。

  • メインプロセス: データベースにアクセスしたり、ファイルを読み書きする部分
  • レンダラープロセス: 画面を表示する部分

この2つの間でデータを受け渡すとき、 もし別々の型を使っていたらどうなるでしょう。 送る側が想定している形と、受け取る側が期待している形が違う。 これはバグの温床です。

だから、メインプロセスでもレンダラープロセスでも、同じPrismaの型を参照することをルールにしています。 「生徒のデータを送る」なら、送る側も受け取る側も同じStudent型を使う。 型が一致していることをプログラムがチェックしてくれるので、 「送ったデータと受け取ったデータの型が違う」というバグを防げます。

独自の型を作っていい場合

とはいえ、すべてPrismaの型で済むわけではありません。 以下の場合は、独自の型を作ることが許されています。

独自の型を作っていい場合

  • データベースに保存しないデータ: 画面の状態(選択中の項目、読み込み中かどうか)など
  • 技術的な制約がある場合: Prismaの型をそのまま使うと問題が起きる場合

「データベースに保存するデータ」については、Prismaの型を使う。 「画面だけで使う一時的なデータ」については、独自の型を作ってもよい。 この区別がポイントです。

「Prismaの型を優先する」「独自の型を乱造しない」というルールは、 型定義が散らかるのを防ぐための方針です。

書類のフォーマットを統一するように、 プログラムでもデータの型を統一する。 地味なルールですが、プログラムが大きくなるほど効いてきます。

一括採点を使ってみませんか?

最新版をダウンロードして、採点作業を効率化しましょう。

最新版をダウンロード

一括採点

中学校の先生が、全国の先生のために作った、採点ツール。

© 2023-2026 KeppyNaushika. AGPLv3 オープンソースソフトウェアとして開発しています。