各種設定ファイルのフォーマットとしていまやすっかり定着した感のあるYAMLですが、単なるフォーマットの一種としてしか思われていない節もあり比較的初期から注目していた人間としては残念なかぎり。そこで知っていると役にたつかもしれないトピックをいくつかあげてみます。

YAML⊇JSON

 Webでは「JSONではなくYAML」みたいな表現をよく見かけますが、実はJSONはYAMLです(JSON is YAML)……という表現は使われなくなりましたが、YAMLはJSONの自然なスーパーセットで、すべてのJSONファイルは有効なYAMLファイルでもあります。「どこが?」と思われるかもしれませんが、YAMLは書式としてブロックスタイルとフロースタイルという二つのスタイルを仕様で定めていて、フロースタイルだとJSON相当の記述となるのです。ブロックスタイルのほうが可読性が高いので自然とそちらが多用され、フロースタイルのYAMLは見かける機会がないわけですね。「YAMLのフロースタイルではなくブロックスタイル」と表現すると通に見られる、かもしれません(通に見られたからなんだ、というのはなしで)。

改行を含むテキストの記述

 JSONでのテキスト・文字列の取りありつかいはJavaScriptのそれと大差ないので改行はエスケープシーケンスでの表現になり可読性はよくありません。一方YAMLのブロックスタイルは改行を含むテキストを比較的元データに近いかたちで記述できます。「比較的元データに近いかたちで」というのはYAMLの仕様上インデントをそろえなければならずかならずしも見たままとはならないためです。それでもJSONよりは確実に読みやすいです。 仕様上は文中の改行と最終行の改行の仕様が別に定義されています。

 過剰な気もしますが、データ交換にも用いられることを考えると厳密な定義は必要なのでやむをえないところでしょう。

アンカーとエイリアス

 JSONになくてYAMLにある強力な機能がアンカーとエイリアス。アンカーを設定した要素はエイリアスで参照できるので、活用すれば何度も登場する要素の記述を簡潔にできます。使いすぎるとせっかくの可読性が低下する可能性がありますが、設定系のファイルなど同じ値が正確に必要とされるケースでは積極的に使いたい機能でもあります。

 以上、YAMLのあれとかこれとかでした。お役にたちましたら幸いです。

公開: / 最終更新日:

 GIMPのテキストツールフォント選択インターフェースの見づらさ、Windowsコントロールパネルのフォントサンプルの見づらさに以前から不満を募らせていたのですが、「Processingならフォントサンプルの一覧を簡単に表示できるのでは?」と突然ひらめいたのでさくっと作成してみました。

 マウスホイールで一覧スクロール、コントロールキーを押しながらのマウスホイールでフォントサイズ変更(16から48まで)です。テキストは適当に変えてください。

 私の環境ではスクロールしているとときどきまったく応答しない状態になることがありますが、これはどうやらフォント作成に時間がかかるためのようです。すこしするとまた反応するようになるので、のんびり使ってもらえればと思います。

公開: / 最終更新日:

 ――KORGの見本市になってしまいました。あれえ?

 購入したものの制作には使用しないサウンドデバイスがいくつもある状態で最近Teenage Engineering Pocket Operator PO-14 subを購入しまして、さすがに買っただけのものばかりというのもどうかなあということでスタディのつもりでパターンを作ってちょっと頭の中で転がしていたらベース以外のアイディアが出てきまして、せっかくだからと採用したら主役のPO-14 subがかすんでしまいました。結局使ったのは次:

 もともとスタディのつもりだったのであっさりしているのは狙いどおり、冒頭ノイズが聴こえるのも意図的なもの。ただちょっとスタティックな感じを物足りなく感じたりもするので、そのうちアナログシンセでも買って再挑戦するかもしれません……monotronでなんとかしろ、というのはなしの方向で。

 動画のほうは、Innumerable Struggles aginst injustices公開のときに作成したリサジュー図形ビジュアライザーの色を変えて線の太さ調整処理を追加したもの。制作の動機が動機なのであたらしいビジュアライザーを作るほどではないなと思ったので過去のものを再利用したわけですが、FPSを18にしたらびっくりするくらいきれいにはまりました。これぞクリエイティブコーディングの醍醐味という感じです、おおげさに言えば。
 ビジュアライザーのGitHubプロジェクトのほうもひさしぶりに更新したので、興味のある方はお試しいただけますよ。

 次はインストだと思います。山のようにあるフレーズの断片をなんとかしたい……

(これまでの作品は「はりぼてミュージアム」からどうぞ)

公開: / 最終更新日:

 ソフトウェア技術書温故知新、第三回は1990年に邦訳が刊行されたC.J.デイト『標準SQL 改訂第2版 JIS/ANSI/ISO準拠』(トッパン)。

https://www.amazon.co.jp/%E6%A8%99%E6%BA%96SQL%E2%80%95JIS-ANSI-ISO%E6%BA%96%E6%8B%A0-%E3%82%A2%E3%82%B8%E3%82%BD%E3%83%B3-%E3%82%A6%E3%82%A7%E3%82%B9%E3%83%AC%E3%82%A4%E3%83%BB%E3%83%88%E3%83%83%E3%83%91%E3%83%B3%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4810180190

 ああ憧れの第四世代言語(4GL)……と言う表現が適切だったのかはいまとなってはよくわかりませんが、Webアプリケーション普及前、クライアント / サーバーシステムのクライアントとしてWindowsマシンが用いられるようになった時代のほんの一時期、GUIをドラッグ&ドロップで簡単に作成できるRAD(Rapid Application Development)と呼ばれるプログラミング言語・環境が普及の兆しを見せたことがありました。Windows用としてはSQL WindowsやPower Builderといったあたりが有名どころと記憶していますが、Delphiや.NET化以前のVisual Basicもその文脈で使われた側面がありました。

 私もどういうわけかSQL Windowsを利用した業務システム開発に携わったことがあるのですが、このときこまったのがデータベースへのアクセス。クライアント / サーバシステムの開発ははじめて、関係データベース(RDB)のことなど何も知らない人間でもRADなら楽勝――などといううまい話が転がっているわけがありません。ぶっちゃけRapidなのはあくまでもユーザーインターフェースまわりだけ、RDBアクセスは普通にSQLのコーディングが必要。看板に偽りありとはまさにこのこと。
 当時はSQLって何?というレベルだったので一から勉強しなければなりませんでした。しかたがないので本屋に行って、当時は二冊くらいしかなかった解説書の中から選んだのがこの本。いや長い前振りだったな。

 しかしこちらを選んだのは大正解でした。著者は実装ではなくあくまで規格をその問題点まで含めて解説し、一方監訳者(のちにJIS X 0208の第四次規格(いわゆる97JIS)改定を主導する芝野耕司氏!)は必要に応じて著者の批判に対して注で反論または補足する。率直に言って初読時は理解できない箇所も多かったのですが、規格についての深い理解に根ざした著者と監訳者との紙上での意見交換には知的興奮を覚えたものです。キーの概念や結合、副問い合わせなどSELECT文がきちんと理解できたのもこの本のおかげ。

 一方更新系はカーソル操作の解説が優先され、当時としても実情とはあっていませんでした。このあたりは対話型の処理がそのままプログラミングインターフェースとしても使われ続けてしまったSQLの不幸をあらわしているとも言えるでしょう。ただ対話型=テキストを介した処理がSQLの幅広い利用を可能とした面もあることはまちがいありません。本書は埋め込みSQLに一章を割いていますが、SQLが言語構文と一体化したインターフェースでしか利用できなかったとしたら実務上の要請に応え続けて発展するのはむずかしかったと思われます。

 同じことは規格と実装の乖離についても言えます。私の理解するかぎりではSQLの規格を完全と言えるほどに実装した製品は存在しませんし、規格の取りあつかいも製品によっておおきく異なりますが、実用的なデータベースの種類として競合がすくなく(後年NoSQLが登場しますが、スコープがちょっと違いますし)機能的にも充分であれば規格に適合させるインセンティブもモチベーションもなくて当然です(むしろベンダーロックインに有利に働く)。中途半端な規格準拠もまたSQLとその実装の普及に一役買ったのかもしれません……皮肉な話ですが。

 本書はその後原書も邦訳も版を重ね、そのたびにおおきく厚くなって手軽に紐解くわけにはいかなくなりました。芝野氏も監訳から離れてしまいましたが、SQLを規格面から批判的に理解するにあたっては他に類書はないのではないかと思います。徹底的に実用的にRDBを利用するのもいいですが、こういった本を読むと世界が広がるかもしれませんよ。

 余談ですが最近読んだ『JavaScriptで学ぶ関数型プログラミング』は著者の本を二冊も(そのうちの一冊は必読書として!)紹介していてあっけに取られました。私が読んだのは関係代数の本ではなくて関数型プログラミングの本だったはずなのですが……

公開: / 最終更新日:

 ――「劣等感は消せないけれど存在感はなくてかまわない / 現実感を君とたしかめて絶望感とともに生きていく」。

 というわけでM01D+GUMIの新曲、"劣等感に悩む僕らの存在感はいつも希薄で"を公開しました。

 就寝直前に最近ではめずらしくサビのメロディを思いついてあわててメモして寝たら翌日から二、三日であらかたかたちになるという、制作が非常にスムーズに進行した作品です。まあ手癖で成りたっていると言えなくもないわけですが、作りながらメロディが高野寛くるりっぽいかなあなんて思っていたので、ちょっといままでと違うところはあるのかもしれません。
 歌詞のほうは、最初のフレーズはメロディにくっついて出てきた感じで、最近の若者っぽい雰囲気の気がしたのでそのままタイトルに使うことにしたのですが、おかげで英訳に苦労したという……

 動画は例によってキャラミんStudio他で作成。若者っぽい雰囲気を出したかったのでモデルデータにままま式GUMI 制服ver、フォントにみちますを使ったのがいつもとちょっと違うところでしょうか。動画のオーバーレイはむずかしいなあ。
 ところでHitFilm Express 2017、起動するたびにアップデート版(動作環境はWindows 8以降)を動作対象でないOS(Windows 7)のユーザーにまでダウンロードしろと迫るのですが、なんとかならないものでしょうか。DaVinci Resolveに移行するぞ……いや、サポート終了前にWindows 10に移行しろということですね、はい。

 次はインストですかねえ。

(文中敬称略)
(これまでの作品は「はりぼてミュージアム」からどうぞ)

公開: / 最終更新日: