設計者の発言

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

2つの階層構造「自己参照型」と「部品表型」

「階層型」のデータ構造は業務システムでしばしば目にするものだが、苦手意識を持っている開発者が少なくない。その原因として「自己参照型」と「部品表型」とが区別できていない点を指摘できる。これらを確実に区別して、ややこしい階層構造を攻略しよう。 …

システム設計に関するアカデミックな学びの意義

システム開発会社で技術者向けにDB設計について教えることがある。関数従属性に関する演習をやってもらうとわかるのだが、中堅技術者でもほとんど手が動かないことがある。さまざまな案件で設計経験を重ねているはずなのに、そういった基礎的な学びに苦労し…

リレーションとリレーションシップの誤用に注意

RDBやデータモデリングに関する説明の中で「リレーションシップ」と言うべきところで「リレーション」と表現する誤用が目立つ。どうでもいいような違いに思われるかもしれないが、これらは明確に区別されるべきだ。そうでないと、RDBの用語の意味がわからな…

「概念データモデル」は役に立つのか

データモデルに「概念モデル」、「論理モデル」、「物理モデル」の3種類があることは広く理解されている。しかし、これらを律儀に作成・保守しているプロジェクトがどれだけあるだろう。ただでさえデータモデリングはないがしろにされがちなので、3種類の…

住民情報と統合された「戸籍」のデータモデル

自治体システムは日本に1基あればいい――そのように昔から主張しているのだが、統一自治体システムには「戸籍」も組み込みたい。戸籍に関する事務は、法務局の指導・管理のもとで自治体が行っているからだ。自治体の住民情報の基礎を成す「住民」や「世帯」…

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

2020年から小学校での「プログラミング教育」が必修化された。プログラミングを通して論理的な問題解決能力を育成することを謳っている(文科省による手引き書)。しかし教員にとってはとっつきにくい内容で、多くの教育現場が途方に暮れている。けっきょく…

開発基盤の切替におけるDB構造の移行容易性

業務システム向けの開発基盤というものは、DBの設計方針に対して中立的であるべきだ。扱われるDBの構造について強い制約を求めるようであってはいけない。与件としての「静的なデータ構造」に対して「データを登録・加工するための手段」を与えるものが開発…

ココログから引っ越し

ココログ@niftyからこちらに引っ越しました。2020年以降の記事を持ってきましたが、それ以前については「2020年以前の記事(cocolog)」のリンクから読めます。

オブジェクト指向開発もローコード開発も楽しい

データモデリングとローコード開発の組み合わせを推奨しているのだが、私としては「ノーコード開発」には食指が動かない。理由は明確で、複雑なDB構造を扱えないし、何よりも端正なコードを書く喜びを味わえないからだ。とはいえ、そもそもノーコード基盤は…

「新型コロナワクチン接種管理システム」のデータモデル公開

統一自治体システムを基礎として 10万円の一律給付が話題になった頃に「給付管理システム」のデータモデルとプロトタイプを公開したが、それに「ワクチン接種管理システム」の機能を組み込んだ(ダウンロードはこちら)。前回の「給付管理システム」は、日本…

IT技術者の分類名「WEB系」の奇妙さ

話している相手が料理人であることがわかったので「どんな分野の料理ですか」と尋ねたとしよう。「あ、自分は電気炊飯器系です」という答が返ってきたらどうだろう。和食、洋食、中華といった答を期待しているのに「電気炊飯器系」ではキョトンとするしかな…

データモデルの変化を抱擁せよ

「データモデルにもとづいて動作するプロトタイプ」を「本番システム」の実装に先行して組み立てることで、システム仕様の妥当性を早期に確立する。このスタイルを「モデリング&プロトタイピング手法」と呼んで実践している。的確なデータモデルをまとめあ…

実装について学ぶこと大杉問題

実装のために必要な学習の量は時代によって増減する。どんな時代にシステム開発者として成長したかによって、実装技術の学びに対するスタンスは違ってくるような気がする。大事なことは、実装技術は目的ではなく手段であることに気づくことだ。われわれの本…

交響曲はアジャイルに収録できない

音楽ファンとして昔から感じていたことだが、ウォーターフォール方式(WF)とアジャイル方式の違いは、クラシック音楽とポピュラー音楽(軽音楽)での収録スタイルの違いに似ている。WFとクラシック音楽では、行き届いた仕様書(楽譜)を用意したうえで実装…

業務システムとマイクロサービス(2)

マイクロサービス・アーキテクチャ(MSA)を適用する際に頭を悩ます問題のひとつが「複数サービスにわたる更新操作」である。マイクロサービスを成すソフトウエアのまとまりは、個々に独自のデータストアを持っている。ゆえに複数サービスを横断する更新操作の…

業務システムとマイクロサービス(1)

マイクロサービス・アーキテクチャ(MSA)は、モダンなソフトウエアのあり方を考える際に欠かせない考え方だ。複雑で巨大なソフトウエアを扱いやすいモジュールに分割することで、独立したチームに開発や運用・保守をまかせられるようになる。モジュール間の通…

人数ではなく技能を確保するためのシフト管理システム公開

拙書『データモデル大全』の第8章図8-14(203ページ)にもとづくレファレンスモデルを公開した。例によって、基本設計情報(業務フロー、データモデル、機能モデル、業務マニュアルを含む)と、これらにもとづいて実装されたシステムがバンドルされている。…

システム設計のスキルは「掛け算」で作用する

拙書で説明した「看護師スケジューリング問題」を扱うための「要員シフト管理システム」のプロトタイプを組み立てたのだが、各シフトで必要なスキルの充当状況を計算しながら気づいたことがある。ある種のスキルは足し算的に充当されるが、掛け算的に充当さ…

データモデリングの上達には「事例研究」が不可欠

効果的なデータモデルは「顧客の要望」を緻密に分析するだけでは得られない。設計者側の「専門家としての経験的蓄積」による補完が欠かせない。ところが、システム開発の世界ではそのように語られることはほとんどない。「記法を理解し、システム要件が明ら…

開発者が自動化に負けないためのたったひとつの方法

ソフトウエア開発者の立場をもっとも脅かすものは、「新たな開発用ソフトウエア」である。それまで半日がかりだったような作業が、新たなソフトウエアを用いることで一瞬で片付いたりする。こういった合理化にともなって開発者の人員削減が進む。そのときに…

サロゲートキーにこだわるデータモデルの異様さ

サロゲートキーは「ワサビ」のようなものだ。ある種の料理を引き立てるため、熟慮のうえ利用される。どんな料理にもワサビが強制されるとしたら、異様な食卓になるだろう。同様に、どんなデータを扱う場合にもサロゲートキーが強要されるとしたら、異様な情…

「仕様の妥当性とフィージビリティ」でデスマーチを回避

職業柄、さまざまなデスマーチを内から外から観察してきたが、始まり方には一定のパターンがある。それまでは順調に見えていたのに、システムテスト(結合テスト)でまともに動作しないことが発覚して始まるパターン。または、ユーザ試用の段階で「これでは…

デスマーチは「失敗」ではないゆえに繰り返される

高層ビルが施工中に倒壊したとすれば、大問題になって原因究明されるだろう。謝罪会見が開かれ、関係者の更迭やトップに対する株主代表訴訟が起こるかもしれない。そのようにして、同じことが二度と起こらないように徹底的に検証される。痛みをともなった失…

「真面目で仕事熱心」が業務の合理化を阻む

日本で業務プロセスがしばしば非効率であることの、皮肉な理由をひとつ挙げたい。現場が真面目で優秀であるからだ。 どんなに非効率なやり方でも現場は仕事をこなしてしまう。もちろんその過程で膨大な無駄が生じているのだが、ユーザは「バカバカしい。やっ…

OOUIは強力だが、合理的なDB構造を導くわけではない

話題の新刊書「オブジェクト指向UIデザイン」を読んだ。使いやすいUIについては昔から興味があって手に取ったのだが、読みながら既視感につきまとわれた。かつてAS/400使いであった筆者は、90年代初頭に「アクション→オブジェクト vs オブジェクト→アクショ…

Railsは新人教育に向いていない

Rails(Ruby on Rails)はちょっとしたアイデアを形にするには便利な開発ツールである。扱われるテーブルを定義するだけで、CRUDアプリがサクッと出来上がる。私自身、このツールが登場した当時には、その独自の立ち位置や狙いの面白さに感心したものだ。Rails…

自治体向け給付金管理システムのプロトタイプ大競演

「『10万円給付』のためのレファレンスモデルを公開」の記事で説明したデータモデルにもとづくプロトタイプのデモイベントを、7月1日(水)にオンラインで開催する。今回は、以下の5つのローコード開発ツールによる実装の比較検討である。 ・楽々Framewor…

SQLの前に「DB設計」を身につけよう

DB設計とSQLは、複雑な構造をともなうDBを扱うシステムの開発において必須スキルとみなされている。データストアがNoSQLであっても、関数従属性やSQLを理解しているかどうかで応用力が違ってくる。それらは建築設計における構造力学のような基礎知識で、これ…

「10万円給付」のためのレファレンスモデルを公開

新型コロナ禍は現代日本社会に潜むさまざまな無駄や不合理を明らかにした。出社のための出社や儀礼的な捺印の無駄ばかりか、広々としたオフィスやある種の人員を抱えることの無駄まで明らかになった。無駄や不合理なモノゴトであれば即刻排除せよと短絡的に…

実装スキルと業務知識のバランスをはかる

日経クロステックの連載「本音で議論、企業情報システムの勘所」で記事を書いた。システム開発者は業務知識を広く浅く学ばねばならない。そして、業務知識は実装技術と統合されなければいけない。それがシステム開発者の「高度専門性」であるという主張であ…