このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

ハイパーリンク の検索結果:

『圏論による量子計算と論理』はエキサイティングだ (1/2)

…の本の困るところは、ハイパーリンクや文字列検索が使えないことです。それを補う機能としての索引は必須! 索引がない(あるいは、ないに等しいほど貧弱な)専門書は買うに値しないと思っています。『抽象によるソフトウェア設計』に関する記事を書いたとき、本は「序章4ページ + 付録2.5ページ」しかマトモに読んでなくて、ソフトウェアの使用記が大部分でした。ここでも僕の評価ポイントを繰り返しています。 紙の本は、モノとしての形態がすごく気になるのですが、その点では使い勝手がいいです。 付録…

ド・ラーム・コホモロジーとホッジ分解のオモチャ (2/2)

…参照からもとの命題にハイパーリンクを張ったりすると便利でしょうが、そこまではやってません。文字列検索で、もとの命題は探せるでしょう。命題をラベルにより参照したとき、その命題を繰り返し記述(引用)するときは、次に形にします。 [記述サンプル] $(足し算の結合法則: (a + b) + c = a + (b + c) )によりウンヌンカンヌン 一時的なラベルには番号(「---(1)」や「$(1)」)を使います。記事本文内で言及してないが、予備知識だと想定されている命題への参照は…

絵算からテキスト、そして可換図式化もやってみた(当然疲れた)

…とか、解説ページへのハイパーリンクを辿るとか出来るソフトウェアがあるといいのですが。可換図式は、単一の等式や、組織化された複数の等式群を表現するグラフィックスです。意味的には等式、または等式の連鎖と同じなので、定理の記述や証明に可換図式が利用されるのです。可換図式と他の表現方法可換図式と他の表現方法(等式的推論、絵算、アニメーション)との対応は次のようにまとめられます。 可換図式 等式的推論 絵算 アニメーション パス 項 絵 フレーム(スチル) 多角形領域 等式 絵の変形 …

Webブラウザにおけるドラッグ・アンド・ドロップ

…て、画像とアンカー(ハイパーリンク)はデフォルトでドラッガブルになってますよね。他のソフトウェアやデスクトップに運んでドロップすることを想定しているのでしょう。これって便利なのかぁ? 僕は何年も使ったことないのだけど。使っている人が多いのかぁ? 僕は、テキストのカット・アンド・ペーストのときに、間違ってアンカーをドラッグしてしまうことがあって、アンカーはドラッグに無反応なほうが助かるんだけど。みんなそんなミスはしないのかぁ?JavaScriptでドラッグ動作/ドロップ動作は制…

僕らが大好きだったWebはなくなるのかもしれない

…文書の表示装置です。ハイパーリンクをたどってインターネットを“サーフィング”できます。あるいは、検索エンジンを利用して目的のWebサイトを探します。たまにフォームを使ってWebに“書き込み”をします。それが、今までの(「かつての」かもしれない)Web体験です。このようなスタイルのWebの盛り上がりのピークは2005年からのWeb 2.0ブームだったと思います。Web 2.0の提唱者だったティム・オライリーの真意はどうであれ、Web 2.0を象徴するものはブログシステムでした。…

野生のデータを飼い慣らし育成する:データ・ブリーディングと進化的データベース

…メント間の相互参照をハイパーリンクに置き換える また、Webからのデータの入力や編集を可能としたいなら、なんらかの入力フォームを生成できると便利です。野生のデータでは、データ形式が非定形で多様になるので、単一形式の入力フォームではまかないきれず、多数の入力フォームが必要になるかもしれません。入力フォームに対応するバリデーションも必要です。後で述べるドキュメントへの処理は、Webリクエスト時に実行することもあります。シーケンスに対する処理でも比較的に軽い処理なら、同じくWebリ…

はてなダイアリーのダウンロード・データ

…動トラックバックは、ハイパーリンクによる構造を与えてくれていました。残念ながが削除されます。再現したいなら、バックポインタを自分で付けるしかありません。メタデータは不足を感じます。編集履歴はいいとしても、created、lastUpdatedの時刻は欲しいです。後から斜め読みする都合からは、summary、abstractのたぐいが欲しくなります。そのようなものを書くメカニズムはないし、あっても使うかはあやしいですけど。ブログはもともと体系的に書くツールではないので、メタデー…

思考実験: HTMLのa要素はナシにしてform要素だけを考える

ハイパーメディア/ハイパーリンクに関して、僕の用語法やメンタルモデルが「なんかズレているみたいだ」と思って、今日「もう少し、ハイパーメディア・アプリケーションについて」という記事を書いて、「ハイパーリンクは何を繋ぐのか」と「ハイパーリンク設計をサーバーサイド設計に従属させるべきではない」に追記を加えたりしました。で、「こう考えたら僕の想定に近い」と思えることを以下に:HTMLが最も普及したハイパーメディア・フォーマットだ、ということはたぶん異論がないでしょう(大丈夫だよね?)…

もう少し、ハイパーメディア・アプリケーションについて

…ビゲーションの契機をハイパーリンクと呼んでもいいだろう、と僕は思います。「そんな拡大解釈は許さん」というご意見もあるでしょうが、それは言葉の定義と使い方の議論となります。ソフトウェア的メカニズムとはまったく別な話題です。実は、なんかめんどくさいから、「ハイパーリンク」の拡大解釈はやめようかと思います。となると、「ハイパー遷移」とか何か新しい用語を割り当てる必要があって、また頭が痛いですけどね。「クライアント状態」という言葉も、「対話状態」とか言ったほうが誤解が少ない気もします…

ハイパーメディア・アプリケーションにおける「サバー vs. クライアント」の問題

「ハイパーリンクは何を繋ぐのか」と「ハイパーリンク設計をサーバーサイド設計に従属させるべきではない」では、既存の用語を使い、ある程度は現実っぽい例を出したりして説明をしました。このようなスタイルの説明は諸刃の剣です。具体的で分かりやすく感じる反面、夾雑物〈きょうざつぶつ〉をイッパイ含んでいるので誤解と祖語齟齬のタネが満載。誤解と祖語齟齬を減らすには: 既存の用語を使わない。(新しい言葉を造るか、既存用語の意味をリセットしてから使う。) 抽象的な定式化をする。 当然に、これはこ…

ハイパーメディア・アプリケーションをどう捉えればいいのか

先週は、URLやらハイパーリンクやらの話をしてました。僕の用語法がどうも杜撰〈ずさん〉で誤解を招いたキライがあります。言葉の説明を付け足しながら、少し抽象的に、「ハイパーメディア・アプリケーション」をどう捉えればいいのか? これについて述べたいと思います。内容: 基本的な概念 クラアント側の状態遷移 状態遷移系のチャンキング 半遷移族から状態遷移系の構成 ハイパーメディア・アプリケーション 基本的な概念「Webアプリケーション」、「Webサイト」、「Webサービス」、「Web…

ハイパーリンク設計をサーバーサイド設計に従属させるべきではない

…/追記]昨日の記事「ハイパーリンクは何を繋ぐのか」の続きです。今日も落書きみたいな絵で説明します。昨日使った絵も再掲(流用)します。僕にとっては、ハイパーリンクがリソース間のリンクだというモデルは受け入れがたいものです(それが昨日の記事の主張)。サーバーは利用者の相手はできません。利用者に機能性や利便性を提供する窓口はWebクライアントです。利用者(それが人間だとして*1)は、画面を見て、アンカーをクリックして次の画面に移り ……、とナビゲートされます。このとき、URLの綴り…

ハイパーリンクは何を繋ぐのか

…態 接続性 具体例 ハイパーリンクは何を繋ぐのか アプリケーション状態まず、アプリケーション状態という言葉ですが、95ページに「クライアント側で維持される状態」と定義されています。具体例による説明は次のようなものです。 検索エンジンを使用する際、現在のクエリと現在のページはアプリケーション状態である。この状態はクライアントごとに異なる。あるユーザーが「クラゲ」の検索結果の3ページ目を表示していて、別のユーザーが「ネズミ」の検索結果の1ページ目を表示しているとしよう。ページ番号…

結果から原因へと考えること

…あいだの関係(遷移、ハイパーリンク)から考えるでしょう。僕は、このやり方は正しいと思っています。画面(ページ)という概念がないWeb APIの場合でも、画面をクライアント状態に代えて、クライアント状態とその遷移から考え始めるのは良い方法です。最終的な出力/結果から考える、ってことですね。これは処理の順番とは逆なので、入力データや処理を考えたがる人には違和感があるかもしれません。実は僕自身が「入力データや処理を考えたがる人」でして…。なので、結果から逆向きに考えることが苦手です…

Catyの特徴と機能をイメージできるようなオハナシ

…に書かれたデータ型やハイパーリンク構造を確認できる程度ですが、最初のプロトタイプとしては使えます。つまり、ミーティングが終わったら時点には、最初のプロトタイプが動き出します。作り方を作れる今までのハナシで、仕様からプロトタイプを作り出す機能をCatyが組み込みで持っていると思った方もいるでしょう。それは違います。そうじゃありません。Catyがもともと持っている機能は、データ型やらスクリプトやらのメタオブジェクトを通常のデータ(JSONデータです)に“落とす”機能です。この機能…

スノーグローブのなかの小人さん達

…動くか、のチェック ハイパーリンクが確実に繋がっているか(リンク切れがないか)のチェック ヘルプ/リファレンスのドキュメンテーションを書く 仕様書から図を描く(すぐ下にあるような) リグレッションテストや長時間テスト用のテストデータやテストスクリプトを作る Catyでは、これらの作業の素材となる情報はすべてスキーマモジュールに含まれます。プログラムが素材となる情報にアクセスできるなら、少しだけ知的だが所詮は単純労働である仕事はプログラムにも出来ます。問題は、ソースコードや仕様…

Catyと型推論

…ンは当然の事として、ハイパーリンクがちゃんと繋がることを保証しよう(ハイパーバリデーション)とか、リクエスト処理の途中で失敗しても被害を抑えるためにトランザクションをしっかりやろうとか、テストが負担にならない環境を作ろうとか、文書と実装の乖離をなくすために、自動描画や自動文書化のメカニズムを入れようとか、そんなことです。当然に、リクエスト処理が“正しく”行われることも、できるだけ実行前に保証したいわけです。とは言っても「正しさ」とは何であるかの定義は難しいし、仮に定義が出来て…

JavaScriptでシーケンシャルな作業をゆっくりと行う方法

…とでモジュールの図(ハイパーリンク・グラフ)の一部を赤く塗ることができます。しかし、赤く塗る作業が一瞬で終わってしまうので面白くない、とKuwataさんに言われました。jsAnim(http://jsanim.com/)とJSDeferred(http://cho45.stfuawsc.com/jsdeferred/doc/intro.html)あたりを組み合わせてなんとかしようか、とも思ったのですが、どうせ使い捨てで大したことはしないので、ツギハギして小さなライブラリを作っ…

Caty: 識別子の日本語化で一苦労したけど、日本語だと分かりやすい

…)とか「トリガー」(ハイパーリンクの根元)の名前には日本語を使ってもいい気がします。ソースコード上の日本語は奇妙な感じでも、図示すれば自然で分かりやすいですから。関連記事(古い順): 1年たって、手書きから自動描画へ ハイパーバリデーションに向けて WebアプリケーションフレームワークCatyの現状と今後 WebアプリケーションフレームワークCatyの特徴と方向性 // -*- coding: utf-8 -*- /** ユーザー管理業務モジュール */ module use…

ハイパーバリデーションに向けて

…が、Catyにおけるハイパーリンクの扱いは概ね目星が付いた、と思っています。思い起こすに、ハイパーリンクをどう扱うかを考え込んでいたのは、やはり1年以上も前からです。 ハイパーリンクはホントウに難しい 去年の年末から今年の正月あたりにもウンウン考え込んでいました。 ハイパースキーマについて再び考えよう、っと ハイパースキーマまでの道 それから紆余曲折、いろいろと変化がありましたが、ハイパーリンクを合理的に扱う技術的なピースは揃ったと感じています。当初は、JSONハイパースキー…

データの部分構造とパート

…、JSONデータからハイパーリンク部分を抽出することを目的として考えたものなので、そのような例を挙げます。まずは次の型定義; これは、画像を使った紙芝居ないしはスライドショーに使うようなWebページのデータ構造を想定しています。 type uri = string(format="uri"); type Page = { /** ホームへのリンク */ "home" : uri, /** 画像のURL */ "image" : uri, /** 画像に対する説明文 */ "d…

ハイパースキーマについて再び考えよう、っと

…したってダメみたい ハイパーリンクはホントウに難しい JSONデータをどうしたらハイパーメディアとみなせるのかJSONベースのWebサービスを前提としたとき、困難の(全てではないが)一因は、JSONデータに対してハイパーリンクを定義する適切な方法がないことです。JSONスキーマの「ハイパースキーマ」という仕様案はあるにはあるのですが、2010年4月の段階ではイマイチでした。 JSONだってハイパーメディア -- JSONハイパースキーマ仕様をなんとかしたい JSONスキーマ仕…

スキーマ駆動の設計と開発:実例と共に

…いですよね。あとは、ハイパーリンクを活用して、一連の操作のナビゲーションを提供すれば、Webっぽくなります。ハイパーリンクとナビゲーションについては次の記事を参照してください。 Webサービスの設計: ハイパーオブジェクトとトリガー Webサービスの設計: ハイパーオブジェクトはワークフローやインターフェースも運ぶ Webサービスの設計: ハイパーオブジェクトは設計を極端に単純化する *1:@[readonly]アノテーションはまだ実装されていません。 *2:ノードのデータ量…

Webサービスの設計:リンク集+お絵描きWeb設計

…を極端に単純化する ハイパーリンクはホントウに難しい Webサービスの設計: Webフローの図示法を再考する 状態遷移指向Webサービス設計の課題:可視化したってダメみたい 実は、次のエントリーも関連するのです。 やっぱりこれからはフローチャートだな いまさらにHTTP通信とCOMET通信、そして双対性 こんな簡単なトレース付きモノイド圏があったなんて 僕が言いたいことは、「Webシステムを、明確に定義されたサブシステムから構成しよう」ってことです。その道具に絵図(pictu…

状態遷移指向Webサービス設計の課題:可視化したってダメみたい

…すね。もともと僕は、ハイパーリンクのグラフ構造を正確かつ完全に把握したいという強い要求・願望を持っていました。その1つの方法を提案したのが次の記事です。 Caty:サイトのハイパーリンク構造を把握する 少し長くなりますが、上の記事の最後を引用します。 一旦有向グラフが出来てしまえば、ノード間の可達性、ハブノードの存在、ノード間の経路距離などを判定/算出できます。入次数/出次数(in-degree/out-degree)などから何か計量的な指標が得られるかも知れません。特定のノ…

ハイパーリンクはホントウに難しい

…連の記事において、「ハイパーリンクこそがWebなんだから、Webでハイパーリンクを使わないなんてあり得ないぞ、使いまくれよな」みたいな話をしてきました。しかしながら、HTML以外のフォーマットでハイパーリンクを「使いまくる」のはなかなか難しいことです。そのへんの事情を話します。内容: 高機能・柔軟なハイパーリンクの末路 HTMLを真似るという方法 HTMLを素直に真似できないときは ハイパーリンク構造の定義は型システムとは切り離す 高機能・柔軟なハイパーリンクの末路HTMLは…

Webサービスの設計: ハイパーオブジェクトは設計を極端に単純化する

…きをもう少しします。ハイパーリンクを活用するとどんなメリットがあるか、ってことです。昨日出した図をもう一度下に掲載します。この図は、UMLのインタラクション図(シーケンス図)と少し似てます。このテの図は、アプリケーションレベルのプロトコルの記述に使われます。「あなたはまずこうして、そしたら私はああするから」みたいな手順とお約束を表すのです。古典的なRPC(遠隔手続き呼び出し)ベースのシステムでは、通信の両端が共に手順・お約束に対する厳密な知識を持っていることを要求します。トリ…

Webサービスの設計: ハイパーオブジェクトはワークフローやインターフェースも運ぶ

…: 僕は「Webとはハイパーリンクなり」と考えているので、Web APIでもなんでもハイパーリンクを使ってないなら「Webっぽい」とは思いません。RPC(遠隔手続き呼び出し)的な要素を取り入れても、ハイパーリンクを活用しているならWebっぽいでしょう。「っぽい」とか「らしい」は単なる趣味嗜好の問題ではなくて、ハイパーリンクの活用は大きなメリットがあります(そのメリットの説明は今日[注:2010年8月11日]はしませんが)。 「ハイパーリンク活用の大きなメリット」について、今日…

Webサービスの設計:Webの状態遷移図の描き方

…その内部にトリガー(ハイパーリンク)を含むかもしれないデータ(転送オブジェクト)という意味を強調したいときにハイパーオブジェクトと言います。2番のトリガーは、1番のハイパーオブジェクト(状態ノードでもある)に含まれています。それは3番のリクエスト辺を通じて4番のアクションに繋がります。アクションから2本のレスポンス辺(5番と7番)が出てますが、これは論理OR/場合分けによる選択です。つまり、レスポンスが5番→6番の経路を通る場合と、7番→8番の経路を通る場合がありえます。6番…

今どき「RPC vs REST」なんてテーマ設定に意味があるかどうか? 自分の頭で考えてみよう

…ルにマップすること ハイパーリンクを徹底的に使う 歪みがないWebバインディング 教義を盲信しないで IDL仕様を実装プログラミング言語やトランスポート・プロトコルにマップすることRPCスタイルでは、IDL(interface definition/description language)により“仕様としてのインターフェース”を書きます。それは、IDLコンパイラにより実装言語のソースコード雛形*2に変換されます。プログラマは、処理の実質的な部分さえ書けば(適当なライブラリや…