たなかこういちの開発ノート

システム開発に携わる筆者が、あれこれアウトプットするブログ

Intentional ProgrammingとIntentional Software社についてメモ

(この記事執筆時点からだいぶ前になるが、)PHPメンターズな方面の方々のツイート等を見ていて、「Intentional Programming」なる用語を知った。
 
Wikipedia, "Intentional Programming": https://en.wikipedia.org/wiki/Intentional_programming
 
Wikipediaの記事および後述のIntentional Software社のホームページによると、、、Intentional ProgrammingはCharles Simonyiなる方が提唱された一つのプログラミング・パラダイムとのことである。Charles Simonyi氏は、メタ・プログラミングに関する論文でPh.Dを取得、Xerox PARCで最初のGUI Word Processorを開発、マイクロソフト社に移りWordやExcelを開発した。その後Intentional Programmingのアイディアをマイクロソフト社で展開しようとしたが、MS社はそれは採用せず、.NETやC#に注力していった。そこで氏は独立し、2002年にIntentional Software社を設立、Intentional Programmingの考えを具現化した開発キットを開発しようとしてる。
 
Intentional Software Corp., "About Us": http://www.intentsoft.com/us/
 
Intentional Software社の"About Us"のページに会社のロゴについての説明があるが、これがいかしている(!)というか、Coolというか、同社もしくはCharles Simonyi氏の考えをよく表していると思う。要点をまとめると、
 
・存在記号∃、全称記号∀、含意および/または伴意の記号→を組み合わせた構図
・"E"、"A"はそれぞれ"Entities" and "Aspects"をも意味する
・”for all domains, there exists a language”または"there exists an intention, for all domain concepts"といったキャッチフレーズにも絡めている
 
だということである。
 
 
Martin Fowler氏によるIntentional Software社と彼らのツールに関する論考があった。
 
 
この記事の中盤でMartin Fowler氏は次のような趣旨のことを言っている。
 
・Intentional社のツールは「プログラムの定義≒仕様記述を行う事と、定義されたものの(サンプル)実行の統合」を果たしていて、それが同ツールを本当に強力なものにしている。
・「プログラムの定義≒仕様記述とその実行の統合」という特徴を備えたものとして、他に「スプレッドシート」、「テストケース」がある。
 
また、終盤では「Intentional社のツールはJetBrains社のMeta Programming Systemと似ている」と言っている。
 
 
Intentional社は2009年に、Martin Fowler氏も言及しているデモを行ったようである。そのデモについての記事があった。
 
InfoQ, "Language Workbenches May Ultimately Completely Change the Way We Do Programming":
 
そして2016年10月現在、Intentional社のホームページには「We are currently in stealth mode」と書かれている。2009年のデモ以降、どうなっているのだろうか。。
 
 
・・・とここまでの草稿を1年ほど前に書いていて放置してました。さて今(2017年10月)どうなったか見てみたら、なんと今年4月にIntentional社はMicrosoft社に買収されていた様です!そしてSimonyi氏は、「Dynabook」の考えを具現化するように、Office製品にオントロジー≒"Domain Specific Terms"の枠を加えていったり、一つの情報について複数の物理デバイス横断して共通のあるいは共有の論理的な(まさに)"Surface"(≒"Views")を展開出来るプラットフォームを作ったりするような仕事をするようです。こちらのページより、中核の一文を引用します。
 
-----(ここから)-----
The Intentional platform can represent domain specific information both at the meta-level (as schemas) and at the content level (as data or rules). It has patterns for distributed interactive documents and for views for a universal surface.
-----(ここまで)-----
 
Simonyi氏としては、古巣に戻ったというか、巡り巡って元々の構想を元々想定していた場で出来るようになった、ということなんでしょうか。
 
 
<追記1
「What指向」-「How指向」というときの「What指向」と「Intentional Programming」は、ほとんど同義といってよさそうである。また、Intentional Software社のキャッチフレーズ”for all domains, there exists a language”は、まさにDDDユビキタス言語でしょう。
 
<追記2
Simonyi氏による今後の展望を読むと、それがMS社で展開されることを踏まえると、MFCDocument/ViewアーキテクチャーOLEを、Web分散環境前提に近代化したもの、だと理解できそう。つまりそれはOffice365が、さらにどうなるというのか??
 
◆以上