Interface はアイデアと知識に溢れた刺激的な月刊誌

隆盛を極める WEB 広告業とは対照的に雑誌の発行数は10年単位で減少傾向にあります。私自身も出版言語を問わず、ながらく自分で雑誌を購入したことはありませんでしたし、誰が購入しているのかについては検討もつきませんでした。

それが現在、毎月の掲載内容を確認するぐらいには注目している雑誌があります。それは CQ 出版の Interface (インターフェース) です。

Interface 誌の立ち位置は絶妙で、『ドローンやセンサを用いた農業』のようにウェブ上にはニュースサイトしか記事がないようなテーマについて、読者が市販品で記事内容を再現できる程度の身近さをもって取り扱っていることです。

新聞記事に比較すると内容的に深く、学術論文と比較すると理論や新規性ではなく実践や実用性を重視しており、書籍と比べると取り扱う対象分野が新しく、専門書が一冊も出ていないようなものが多いという唯一性があります。


Interface(インターフェース) 2020年 03 月号

その反面、月刊誌でありながら特集ごとに掲載内容は大きく変化しますので、一部の連続記事を除くと内容の連続性は乏しいです。

出版社もそのことを承知しているのか、バックナンバーの在庫は常時充実しており、出版社から直接購入する場合は1,500円以上の購入で送料無料になるサービスまであります(※さすがに香港までは送ってくれないでしょうが)。

バックナンバーから興味がある対象についてピックアップすることが、この雑誌の楽しみ方の一つです。月刊誌だからと言って必ずしも定期購読を前提にしているわけでもないというのもユニークなところです。




私が好んで購入してるのは、おもに『農業』と『地図・GPS』と『画像処理』の3テーマです。

たとえば『農業』であれば、Raspberry Pi をつかった LED ライトと給水ポンプの制御により手入れ不要のスプラウト栽培環境(野菜工場)の作り方を説明したり、水面に浮かべた計測機器から水中カメラの様子を YouTube にライブ配信したり、LTE 通信で海面養殖場の水温や塩分濃度を遠隔に通知した際の実際の部品やプログラムなどが掲載されています。

こうした記事を読んでいると単純に楽しくなってくるだけではなく、市販されているセンサ類にも詳しくなれます。そしてセンサからの入力が得られるのであれば、それに応じたプログラム処理を追加できるので、記事を読み終える前から新しい応用のアイデアが自然と浮かんできます。

これだけの内容でありながら、一冊あたりの定価はわずか 927 円と破格です。こういうのを見ていると日本語を理解できて良かったと心から実感します。

もちろん、月刊誌なので懇切丁寧にすべてを教えてくれるほどのページ数の余裕はないですし、むしろ、説明不足気味な記事のほうが多く感じるのですが、そこは関連分野の一般書籍でも十分に補完できます。

社会的な評価の確立していない新しい分野を、身近な市販品をつかって、読者にも再現できる形式で実際に体験してみるという本書のスタンスを鑑みるに、背景にある原理や要素技術の詳細はひとまず置いておき、どのように応用ができるのかという一点に特化していることも成功の秘訣かも知れません(でも参考文献一覧ぐらいは欲しい)。

私自身に読めたかどうかは別として、子どもの頃からこういう雑誌を読みたかったと思いますので、出版業界の市場縮小にも負けずに永続して欲しいと心から願います。

データベースは社会を定義する – DB入門のすすめ –

現代社会においてデータベースの恩恵を受けていない人はいません。携帯電話のアドレス帳から、コンビニのPOSシステム、銀行口座、飛行機の予約システム、生産管理などの業務システムなどまで数多くのものがデータベースによって成り立っています。

その範囲は部品管理から生産管理、受注管理、売上管理、請求管理、支払管理、原価管理、勤怠管理といった具合に多岐にわたり、おおよそ全ての業種において何かしらのデータベースが運用されていると言い切ってしまっても過言ではありません。

つまり、現代の社会活動の多くがデータベースという形式を用いて記録され、その内容に基づいて動いていると考えることも可能なわけです。さらに言い換えると、データベースの知識さえあれば、多くの社会活動の記録や仕組みを正確に記述して、誰にでも伝わる形で表現することができるようになります。

物事を正確に記述して誰にでも伝わる形式で表現することができれば、それを応用できるようになります。たとえば、物体を対象とした力と運動の関係は、幼い子どもでもボールを投げたり、ブランコを漕いだりするうちに体験的に「理解」できるものですが、そのままでは応用できる範囲には限界があります。

しかし、そこに個々の物体と力と運動の関係を正確に記述する力学という表現手段さえあれば、任意の物体に対する正確な動力計算や強度計算などに用いることが可能となります。敢えて大げさに言えば、ボールどころかスペースロケットを飛ばすことにだって利用することが可能です。




力学が記述する対象は物体と力と運動の関係ですが、現在の一般的なデータベースが記述する対象は実体 (Entity) と関連 (Relation) の2つのデータの関係です。

実体とは実世界に存在する顧客、商品、組織のほか、契約プランやマラソン大会のように形がないもの、あるいは概念的な存在である場合もあります。ただし、文京区や Erika Mustermann と言った個別具体的な存在ではなく、顧客や学生、都道府県、自動車メーカーや市町村などの任意の総体を表す概念です。そこに氏名や生年月日、国籍、商品名、製造番号、JANコード、日時などの何かしらの属性(attribute) による特徴づけが加わって、はじめて特定の職員や商品やイベントなどの具体的な対象のデータとなります。

関連とは2つ以上の実体間の相互関係を表すものです。職員と部署という2つの実体間にある所属、会員と商品との間にある購入、取引先企業と配達業者との間の指名などの実体どうしの相互関係を表現します。

データベースは実体型と関連型の2系統のデータを用いて、地方自治体や企業や学校などの組織構造、サービス利用などの取引行為、診察歴などの医療行為といった実社会のあらゆる対象を定義します。したがって、多くの場合、データベースの内容さえ覗ければ、組織の内部構造や業務内容を剥き出しにすることもできます。

データベースの表現力はそれぐらい強力なのです。これを知っているかどうかで組織や社会活動に対する見方が大きく変わってきます。データベースという視点さえ持っていれば、データから組織や業務などの全体像を俯瞰的に把握できるようになります。

しかし、データベースの効用はそれだけには留まりません。データベースの真価はデータを資産として管理、運用し、そこから価値のある情報を生み出すことにあります。情報化社会の実現はデータベースの適切な活用なくしてありえません。

そこで重要となってくるのが DBMS (Database Management System) と SQL (Structured Query Language) への理解です。力学の例で言えば、これらは微分や線形代数にあたる存在です。利用者がデータベースという「コンテンツ」を利用しようとするときに実際に利用するソフトウェアが DBMS であり、そこで用いられる「言語」が SQL です。

これらはデータベースそのものではありませんが、データベースを思い通りに表現し、操作し、運用するときに用いられる、まさに数式や自然言語のようなものです。IBM DB2, Microsoft SQL Server, Oracle Database, MySQL, PostgreSQL, SQLite といったソフトウェアはすべて DBMS に該当します。これらの DBMS は記憶装置に書き込まれた物理的なデータと利用者またはソフトウェアとを仲介し、データベースとして利用するための諸機能を提供します。

DBMS のおかげで、データベースのファイル構造を意識せずにデータの検索、登録、更新、アクセス管理などの処理が行えるわけです。

そして SQL とは今日の DBMS の主流である RDBMS (Relational Database Management System) においてデータベースを操作するために用いられる言語です。複数の文献を見ていると RDBMS が最初に考案されたのは 1969 年から 1970 年あたりのことで、当初は数学の集合論を応用した関係代数 (relational algebra) というもので操作を行っていたようです。


The Relational Model for Database Management: Version 2

基本情報技術者試験、応用情報技術者試験などにおいて出題される直積や交差、射影といった操作を調べていくと、この関係代数に行き当たりますね。

SQL は先の関係代数 (つまり演算処理) を誰にでも使いやすくする目的で作成された専用言語で、のちにデータベース言語の国際標準規格にもなっています。今日ではデータベースと言えば、まずは何をおいても SQL に習熟することが第一の目標になります。世の中のほとんどの DBMS が SQL で操作されることを前提として設計されているためです。

考えたことを無意識に SQL で表現して、クエリを見たら瞬時に結果が思い浮かぶぐらいになると不自由なく DBMS を操作できるようになります。最初は戸惑うかもしれませんが、SELECT や UPDATE など頻繁に使用するものは数が限られているので、一つづつ覚えていけば大丈夫です。

ここでオススメなのは『SQL ゼロからはじめるデータベース操作』です。


SQL 第2版 ゼロからはじめるデータベース操作

ほかの参考書でも問題はありませんが、この著者のデータベース参考書は深い内容をきわめて分かりやすく説明しているものばかりなので、ハズレがありません。上の一冊だけでも初学者には十分すぎるぐらいの分量を丁寧に解説しています。

SQL の扱いに習熟しましたら、つぎに手にとって見ていただきたいのが『楽々ERDレッスン』です。


楽々ERDレッスン (CodeZine BOOKS)

こちらは 2006 年発行の少し古い本なのですが、ほかに類書を見たことがないほどユニークな本です。その内容は手元にある受付用紙や領収書、請求書などを題材にして手当たりしだいにデータベースを設計していくという異色なものです

最初に見たときは、その目のつけどころに感嘆しましたが、本書の魅力はその一点のみにとどまりません。データベース設計の過程を実演していくなかで、現役の業務用ソフトウェアのデータベース設計者がどこに着目して、どのような手順で設計を行っているのかを実例を通して学ぶことができます。

設計したデータベースを実際に DBMS 上で実装して、適当なデータを入力してみるとより理解が深まります。ここまででもデータベースの操作や設計というものが分かってくるので、その効用を実感できるはずです。

さらに内容を進めると運用やセキュリティという分厚い壁に直面することになるのですが、それを仕事にしないのであれば、そこから先は専門家に任せてしまっても問題はありません。

研究者や技術者でも無い限り、データベースを学ぶ上で重要なのは、データをきちんと整理して資産化し、必要なときに必要な情報に変換できること、そして、その上で情報を活用できることです。

ただ、それだけのことが強力な武器になるのは、現代社会の至るところにデータベースが用いられ、ありとあらゆる対象がデータベースという形式で記述されていることからも明らかです。これを知らないなんて、あまりにも勿体ないので、ぜひ有効に活用してください。

なぜアプリ開発の入門書は役に立たないのか

誰にとってもスマートフォンや SNS が身近になった昨今、iOS や Android といった OS や SPA (Single Page Application) のような Web 技術は技術者だけのものではありません。

書店に足を運べば、雑誌や一般書コーナーでも iPhone や Android はもちろん、React, Angular, Kotlin, Swift といった単語に遭遇することも珍しくはありません

そのなかには既成のサービスやアプリケーションを利用するばかりでなく、目的に合致したものを自分で作りたい人に向けて書かれた書籍も少なからず存在します。

ところが、こうした書籍の多くには共通して一つの残念な傾向が見られます。読者レビューで酷評されていることが多いのです。

プログラミング言語やデータベースのように「名著」と絶賛される書籍が少なからず見られる分野と比較して、最新のウェブやモバイルアプリ開発の入門書という分野は統計的有意性が確認できそうなほど低評価のレビューが目立ちます。




その内容を詳しく見ていくと、掲載されているソースコード通りに記述してもプログラムが正常に動作しない、初心者向けではない、誤植が多い、技術的な考証がない(なぜ、そこでそれを使うのかという説明がない)といった評価は日本語に限らず、この分野の書籍レビューでは普遍的に行われていることが分かります。

そのレビューから、興味を持って手にとっては見たものの、エラーが出てまともに動かずに途方に暮れている読者の姿が浮かび上がってくるようです。

しかし、擁護するわけではないですが、多くの執筆者や編集者も決して手を抜いている訳ではありません。商品として提供するソースコードに対して全く動作確認を行わないということもありえません。

問題なのはソースコードではなく、ソフトウェア開発環境のほうが常に変化を続けている事です。とくにウェブやモバイルの分野はその変化が急激で、わずか1年ばかりの間に生じた変化により過去の情報が全く役に立たなくなることが実際に起こりえます。

書籍の場合は執筆途中から既に情報が旧くなり続けていていて、発行日当日から、とっくに環境変化に内容が置いて行かれていることさえあります。こうなると変化に適応するだけでも手一杯で、技術的に深い考察を行ったり、隅々まで内容を精査するところまで手が回らなくなることは容易に想像がつきます。

それでは本に書かれていることは全く役に立たないかと言うと、決してそんなことはなく、自分自身で非推奨になった技術を廃したり、エラーを修正できたりすれば著者の意図は伝わります。

ここで不幸なことには、有償刊行物として成立させるため、そうしたエラー対処などの経験を持たない多数派の一般層に向けた執筆を行う必要があることから、読者層が曖昧になったり、冗長な章や記述が増えたり、あるいは読者によっては段階を飛ばして、いきなり難しくなったように見える部位が出てくることです。

その上、機能解説のためのサンプルプログラムと多くの貢献者がいる人気アプリとでは、同じプログラムでも書き方が全く異なっていたりするので、本の内容と実際に使われている人気アプリや業務アプリとの間には大きな溝があります。

こうした読者の諸々の期待と書籍の内容の不一致が不幸な低評価レビューの一因となっていることが推測されます。

この分野の入門書や教科書を正当に評価するためには、ウェブやモバイルはそもそもが特殊な環境において、特殊な用途をもって動作するものであり、多くのライブラリやフレームワークを用いるためにソースコードは長大で複雑になりがちだということを理解しておかなければなりません。

日常生活において身近にあるからと言って、開発環境としては決して親しみやすいものではありません。公式のチュートリアルですら、初見では何をやっているのかイメージできないことが普通です。

したがって、まず導入以前のところで躓かないようにプログラミング言語や開発環境についての理解は万全にしておくことが求められます。少なくとも、問題が生じたときに、それがソースコードの問題なのか、設定の問題なのか、ライブラリやミドルウェアの問題なのかを自分で判断して切り分けられなければいけません。

これは単体で定番書が欲しくなるぐらいの大きなテーマです。しかし、現状では未経験者を対象としたプログラミング言語の入門書を何冊か読みこなしてコツを掴むしかありません。

また執筆者の方にも基本的な機能紹介に留まるだけではなく、どのような設計思想でプロジェクトを作り上げられているのかを理解し、模範的なクラス設計や適切なメソッドの使用法などを実例として積極的に提示していただきたいところです。

公式のドキュメントやチュートリアルに書かれていることをなぞるだけであれば、最新版に対応している分だけ、ウェブ上の情報のほうが正確で理解に要する手間も少なく、わざわざ書籍を購入する必要性がなくなってしまいます。

そうなると敢えてこの分野で入門書を出版する意義も薄れ、分野の発展にとって不幸な未来しか訪れません。

書籍は公式チュートリアルではありませんので、同一の対象についてパターンを変えながらさまざまな応用例を提示したり、柔軟にオーバーライドをつかって特定の機能を書き換えたり、同一の機能どうしを比較したり、多数の貢献者が参加している人気プロジェクトを初学者にも分かりやすく解説したりとドキュメントには書かれないことを追求する余地が多分にあります。

ぜひ思わず手に取りたくなるようなテーマを取り上げて、この分野を大きく盛り上げてもらいたいところです。

Contact Us