設計者の発言

業務システム開発とデータモデリングに関する語り

プログラミング教育ではなくデータモデリング教育を

 2020年から小学校での「プログラミング教育」が必修化された。プログラミングを通して論理的な問題解決能力を育成することを謳っている(文科省による手引き書)。しかし教員にとってはとっつきにくい内容で、多くの教育現場が途方に暮れている。けっきょくは子供向け教育サービス会社や機材ベンダーが儲かるだけではないかと思ったりするのだが、それでも声を大にして言いたいことがある。プログラミング教育よりも「データモデリング教育」のほうが実用的だしコスパがいい。

 なぜか。今日の多くの仕事において高度な情報管理が主要課題となっているからだ。これはプログラミングを専業とする人々に限らない。たいていの職場には、まとまった形の業務システムがないとしても、巨大Excel(神Excel)シートがいくつもある。複雑かつ膨大な情報を管理することは、今や事務職を含めた多くの職業人にとって避けられない課題である。

 そういった課題に取り組む際に、関数従属性値域制約のようなデータモデリングの基礎的素養があるかないかで、効率や結果が違ってくる。もしエンドユーザに正規化の知識があれば、正規化違反だらけの巨大Excelシートなどは作らずに、ピボットテーブルを駆使するか、とっととRDBを活用するだろう。

 そういった事務系の仕事に子供たちが就く可能性は低くない。公立の40人クラスに少なくとも5人はいるのではないか。いっぽう、プログラミングで問題を解決する開発者や研究者になる子供は1人か2人くらいだろう。なお、そのような子供は算数や数学が得意で、わざわざプログラミングやアルゴリズムなど教えられずとも論理的思考を身につけるだろう。

 また、データモデリング教育には「機材」が要らないことも、私がこれを推す理由のひとつだ。模造紙の上に広々とデータモデルを書かせ、モデルの制約にもとづいてインスタンス(具体値)を書き込んでもらうだけでいい。たとえば「ゲーム」と「生徒」と「各生徒が各ゲームをどれくらい好きか」を一覧させるグループ実習なんて盛り上がりそうだ。私自身、駆け出しの頃に同僚の吉田くんとそのようにしてデータモデリングの感覚を身につけた。紙やホワイトボードがあれば、データモデリングはご機嫌に学べるのである。

 教える側の負担も小さい。データモデリング集合論の一種なので、算数や数学の教員免許を持っていれば理解しやすい課目だ。なにしろ「関数」の変数を社会的現実に拡張したものがデータモデルに他ならない。これに比べたらプログラミングはさすがに取っつきにくい。X=X+1なんて教えられたら子供たちは混乱するだろう。

 そもそも、IT技術者の間でもデータモデリングの学習が足りているとは言えないのが実情である。すべての主キーを"ID"にする「とりあえずID」、複合主キーを利用してはいるが同じ主キーのテーブルが頻出する「おそ松くんDB」、やたらと多くの項目を複合させる「生長型主キー」といったさまざまなアンチパターンをこのブログでも紹介した。そういった無手勝流が開発現場をどれだけ混乱させているかわからない。IT産業全体の生産性向上のためにも、初等教育でのデータモデリングは役に立つだろう。

 少なくとも「データ構造を考える」という重要かつ容易ならぬ課題が現代社会に存在する事実だけでも、子供たちには理解してほしい。不適切なデータ構造の上にどんなに大量のデータを載せても、所与の目的は果たせない。いつか大人になってそのような失敗をしたときに、「そうだった。中学の頃、みんなでデータモデリングというのをわいわいやったよなぁ。まともにデータモデリングしていない結果がこれなんだ」と思い出してもらえばいい。ある種の課題にはオーソドックスな対処方法がすでに存在する。そのことを伝えることが教育の大事な目的のひとつだ。そういった対処方法のひとつとしてデータモデリングは積極的に教えられていい。