Indesignでsocketを利用する 1

バーコードネタが長引いているので、ここら辺で一度Indesignの事も挟みたくなってきたわけです。だから、ひとつ新しいモノを(ただの気分転換)書き始めるんだ。
Indesignの場合、Illustratorのような描画系に凝ったスクリプトとかやらないから(Illustratorでやればいいから)華やかさにかけるのだけど、自動処理の威力は圧倒的にIndesignの方が高くなるような気がするんだ。支給エクセルデータから数百ページに及ぶドキュメントを自動的に処理するとかでも、スクリプトの調整しながらの半日仕事だったりするからねwww
しかし、ここではそんな真っ当な使い方は置いておいて、世の中の斜め前(どちらかというと、斜めうしろかも…自覚はあったりするw)を進むべく今日も精進することにするんだ。

そして本題、最近知ったのだけれど(おせ〜よw)、Indesignにはsocketを利用するクラスが存在する様なので色々と調べてみたんだ。サンプルCoreJavascriptClassなんか覗いてみると、あらっwwwチャットのサンプルなんかが掲載されているよwwwという訳でとりあえず引用

Socket
Creates a TCP/IP connection, or establishes a TCP/IP server.
Example:
// A simple Chat server on port 1234

function chatServer() {
    var tcp = new Socket;
    // listen on port 1234
    writeln (“Chat server listening on port 1234”);
    if (tcp.listen (1234)) {
        for (;;) {
            // poll for a new connection
            var connection = tcp.poll();
            if (connection != null) {
                writeln (“Connection from ” + connection.host);
                // we have a new connection, so welcome and chat
                // until client terminates the session
                connection.writeln (“Welcome to a little chat!”);
                chat (connection);
                connection.writeln ( “*** Goodbye ***”);
                connection.close();
                delete connection;
                writeln (“Connection closed”);
                }
            }
        }
    }

うまく実装すればIndesign同士でチャットなんか出来そうだね。でも、そんなことしてると仕事が前に進まなくなるので自動化に有効な活用法を検討してみようかな。
最初のsocketの説明には、「TCP/IPコネクションを作ったりTCP/IPサーバを構築したりできるよ」って書いてあるね。サンプルでもポートを監視しながら待機しているし、これはWebアプリとかからダイレクトにアクセスして自動的にページ構築なんて芸当が出来そうな感じだねw
Webで検索をかけてみると…socketを利用したWebアクセスなんかはあるのだけど、仕事に直接関わるようなネタはあまりないんだよね。とりあえず今回はサーバ的な運用は置いておいて(LAMPなんかでフロントエンド組んで運用するとかなり楽しいことになる!絶対おもしろいよwww後のお楽しみということにしておこうwww)クライアントとしての運用に絞って考えてみようと思うんだ。
で、みつけたのがおーまちさんとこのyahooAPIを利用した自動ルビ振りなんだ。ただし、おーまちさんところのやつはyahooAPIを直接利用するのではなくてせうぞーさんところのサーバ経由なのでおいそれと真似のできるものではないんだねwww
という訳で、このネタに食いついてみるんだ。
基本的にはJavascriptからダイレクトにyahooAPIにアクセスしての利用を考えよう。

とりあえず、APIのテストから始めて見る事にしよう。
まず、簡単にhttpプロトコルまわりの基礎的な説明から始めようと思うんだ。色々と方法はあるのだけれど、リクエストヘッダとかレスポンスヘッダとかがそのまま表示されるアクセス方法があるのでそれで行ってみようと思うんだ。
使うのはtelnetコマンド。Macintoshの場合、ターミナルを開いて普通に使えるから誰でも試せるよね。Windowsでもコマンドプロンプト開いて使えるのではなかったかな?まあ、WINDOWSでもターミナルエミュレータはフリーで良いのがいっぱいあるので、そちらを試してみるのも良いかもしれないね。
とりあえずターミナルを開いてtelnetコマンドを入力してみよう

>telnet chuwa.iobb.net 80

telnetコマンドに続くのはサーバアドレスとスペースを挟んでポート番号。実行すると

Trying XXX.XXX.XXX.XXX…
Connected to chuwa.iobb.net.
Escape character is ‘^]’.

ってなサーバレスポンスが帰ってくるんだ。更に

GET / HTTP/1.0

という具合にGETメソッドを与えて、ファイルパスを指定する。この場合「/」なのでルート直下のindex.htmlを探すことになるんだ。

HTTP/1.0

の部分はHTTPプロトコルのバージョン1.0を使ったアクセスを指定しているんだ。
ここで、リターンコードを2個与えると、サーバがコマンドの受取りを終了してレスしてくるんだ。

HTTP/1.1 200 OK
Date: Thu, 07 May 2009 23:34:35 GMT
Server: Apache
Last-Modified: Thu, 13 Sep 2007 02:50:28 GMT
ETag: “1298808-4e-439fb669d4500”
Accept-Ranges: bytes
Content-Length: 78
Connection: close
Content-Type: text/html

Index page

HTTP OK

Connection closed by foreign host.

上記の様にサーバからのレスにはレスポンスヘッダがリクエストしたファイルの頭に付加されて送信されてくるんだ。ブラウザを使ったアクセスでもこれは同じで、単にブラウザが表示しないだけだよ。実際にブラウザがサーバに向けて送出する時も、UAとかHostとかConnectionなんかの各種情報をやり取りしているんだ。telnetでsocketの利用例を挙げてみたのだけど、Indesignからのアクセスも基本的に同じ事をするんだ。
Web上のAPIに対応出来るのでHTTPプロトコルの標準的なアクセスを守れば、それこそどのようなサーバからも情報を頂く事ができるというねwww単純に考えても色々な利用法が考えられるとwww画像サイト(エロ?)にアクセスして自動的に画像をダウンロードして写真集を自動的に作ってしまうとかどうかなw
参考までにブラウザが吐き出すリクエストを掲載しておこうね。

GET /directory/test.php HTTP/1.1
Host: xxxxx.jp
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; ja-JP-mac; rv:1.9.0.10)
Gecko/2009042315 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

てな感じになる。クライアントはMacintosh、OSは10.4.11、ブラウザはFireFox3.0.10使用。このあたりはUAにそのまんま記述されているね。サーバログなんかでもUA見て色々と判断するのだけれど、先ほどのtelnetの接続のような状況を考えるとこのUAって代物は偽装のオンパレードだったりするんだねwwwまあ、後に記述するサンプルコードも偽装しているのだけどね。
socketの構築は基本的にこれを参考にして行えば失敗する事はないと思うんだ。
遅々として進みませんが続きますねw

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中