2006年01月31日

iアプリでUTF-8なHTTP通信をする方法

ずいぶん古いネタですが、頼まれ事されたのでコード公開。

iアプリの仕様としては、内部のエンコードがUCS-2という形式になっています。
HTTP通信時にストリームをかますとSJIS←→UCS-2変換を行ってくれる仕組みがあるので
iモードコンテンツと同じノリで、iアプリ向けのサーバプログラムがかけます。
ただ、それ以外のエンコードの変換は行ってくれないのでサーバ側で吐き出すデータはSJISしか使えないのです。
もしくはUCS-2を直接吐き出して、生ストリームで読み書きするとか。

大昔にiアプリで動くBlogクライアントを書いたのですが、サーバ側のエンコードはUTF-8なのです。
iアプリの機能ではUTF-8←→UCS-2なんて事はやってくれません。

で、どうしたかと言うと。。。
生ストリームでHTTP通信をして、ループでまわしてUTF-8←→UCS-2変換するコードで処理する。
というありえない対処をしました。
大昔のASCII本に掲載されているRSSリーダのソースには、もっとJavaっぽくUTF-8←→UCS-2なストリームを実装してました。
というか、携帯でRSS!とか騒いでいる今日この頃ですが、大昔から実装はありましたよっと。

で、自作のだめだめUTF-8←→UCS-2変換処理を晒します。

UCS-2をUTF-8に変換しながらサーバに送信するコード

        int body_size = body.length();
http = (HttpConnection)Connector.open(url,Connector.READ_WRITE, true);

OutputStream dout = http.openOutputStream();
for (int i = 0;i < body_size;i++) {
int w_char = (int) body.charAt(i);
if (w_char < 256) {
dout.write((char) w_char);
} else {
int tmp;
tmp = ((w_char & (240 << 8)) >> 12) + 224;
dout.write((char) tmp);
tmp = ((w_char & (63 << 6)) >> 6) + 128;
dout.write((char) tmp);
tmp = (w_char & 63) + 128;
dout.write((char) tmp);
}
}
dout.flush();
dout.close();

UTF-8をUCS-2に変換しながらサーバのデータを受信するコード
      in = http.openInputStream();
din = new DataInputStream(in);
int w_char;
msg = new String();
while ((w_char = din.read()) != -1) {
if (w_char > 224) {
int w_1, w_2, w_3, w_4;
w_1 = ((w_char - 224) << 4);
w_char = din.read();
w_2 = ((w_char - 128) >> 2);
w_3 = ((w_char - 128) << 6);
w_char = din.read();
w_4 = (w_char - 128);
msg += (char) (((w_1 + w_2) * 256) + w_3 + w_4);
} else {
msg += (char) w_char;
}
}
後は略

といった感じで適当にビットシフトさせてます。
まともにJava書いたこと無いので駄目駄目ソースですが、何かにインスパイアしてもらえたら嬉しいです。

ちなみにライセンスは、この部ログにコメントすることでう。

Posted by Yappo at 13:48 | Comments (1) | TrackBack

2006年01月30日

ファイルシークを研究してみる

■ファイルシークとは

ファイルシークはWeb検索、待受画像検索、着メロ・着声・着うた検索、各種辞書等の強力な検索機能が統合された業界最大級のデータ量を誇る携帯端末用サーチエンジンです。特に待受画像検索エンジン(通称:画像ファイルシーク)は総数で数百万枚もの待受画像をキーワード検索でき、2001年のサイト開設当初から大人気のコンテンツです。
ファイルシークのアクセス数は月間約6,000万PVを誇ります。
という、一日に約200万PVも稼ぐ検索サイトだそうです。

提供サイトもなかなかユニークなので色々と調べてみました。
あくまでも予想ですから、実際と異なる可能性が大です。

サービス別特徴

  • 携帯サイト検索

  • 提供ホスト:web.fileseek.net
    オリジナルデータから検索しています。
    待受/着メロのデータと共用しているようで、各検索結果固有のデータも表示されます。

  • 待受画像検索

  • 提供ホスト:img.fileseek.net, img2.fileseek.net
    オリジナルデータから検索しています。
    携帯サイト検索から、画像属性が含まれるデータのみから検索

  • 着メロ/着声検索

  • 提供ホスト:mld.fileseek.net
    オリジナルデータから検索しています。
    携帯サイト検索から、音声属性が含まれるデータのみから検索

  • PCサイト検索(画無)/PCサイト検索(画小)/PCサイト検索(画大)

  • 提供ホスト:web.fileseek.net
    なぜかGoogleのWeb検索とまったく同じ結果が返ってきます。
    その割にはgoogleのコピーライトがないので、恐らく大掛かりなライセンス契約を結んでいると思われます。
    31日14:56追記:http://fileseek.net/meta.html#helpに詳しい説明がありました。
    ■概要
    携帯ユーザーを対象としたメタ検索エンジンです。具体的にはPC用の大手検索エンジンであるGoogle,Yahoo,Inktomi,Infoseekからデータを取得し重複するページを一つにまとめ、順番に検索結果を表示します。また、検索結果として表示される各ページへのリンクをクリックすると、PC用サイトを携帯でも閲覧できるようにPCサイト閲覧Proxyを経由してページが表示されることになります。
    出てくる結果がGoogleと同じものばかりだったのと、検索結果に何も表記が無かったので勘違いしました。
    要するにメタ検索サイトですな。
    YJDNとかGoogle APIは使ってなさそうです。

  • ドメイン検索

  • 提供ホスト:web.fileseek.net
    多分whoisコマンドを叩いているだけです。

  • アイドル辞書

  • 提供ホスト:fileseek.net
    詳細不明、オリジナルデータかもしれません。
    31日 1:22追記:情報提供がありました。
    [アイドル辞書]
    ttp://i-dic.dorachan.com/
    ttp://www.vector.co.jp/soft/dl/data/writing/se001795.html

    「仲根かすみ」で検索した結果
    ttp://i-dic.dorachan.com/data?13112
    ttp://fileseek.net/cgi-bin/dic/search_idic_word.cgi?word=%c3%e7%ba%ac%a4%ab%a4%b9%a4%df%a1%da%a4%ca%a4%ab%a4%cd%a4%ab%a4%b9%a4%df%a1%dbnknksm00

    > ■本名
    > 植可澄美{ue_ksm00}

    本名の横のIDがまるっきり一緒


  • 英和和英辞書

  • 提供ホスト:fileseek.net
    詳細不明、オリジナルデータだとしたら凄いです。
    31日 12:40追記:情報提供がありました。
    辞書系は edict っぽげ。
    http://openlab.jp/edict/
    電子辞書オープンラボの配布物にあるEDICTのようです。
    大部分のデータが一致していますが、一部違うので加工されているのでしょう。

  • 百科事典検索

  • 提供ホスト:fileseek.net
    私立PDD図書館のデータと完全に一致するデータが入っていました。

  • 漢字辞書検索

  • 提供ホスト:fileseek.net
    詳細不明、オリジナルデータだとしたら凄いです。しかもピンイン対応だし。

  • 郵便番号検索

  • 提供ホスト:fileseek.net
    なぜか、丁目表示が削除されてます。
    0000系番号への対処でしょうか。

  • PCサイト閲覧Proxy

  • 提供ホスト:p01fileseek.netからp11fileseek.net
    特記する事はないです。

  • 速報ニュースヘッドライン

  • Powerd by asahi.com & gooという事みたいなので、記事提供契約を結んでいるのかと思いきや、上記Proxyで閲覧する仕掛けになってます。
    ただ、ニュースヘッドラインはfileseek.net側で出力しています。

  • 動画音声加工ツール

  • 提供ホスト:tools.pageseek.net
    モバイルユーザ待望のPC動画ファイルから3gpファイルに変換するコンバータです。
    内部はffmpegを利用している気もしますが微妙に違うっぽいです。
    ライセンス周りはクリアしているかどうか分かりませんが、問題ないならiYappoでも同じサービスやってみようかしら。
    ちなみにtools.pageseek.netの実態はasahi-net.or.jpです。
    負荷対策に台数が必要だけれどもデータセンタに置くコストが無いので事務所に設置しているのでしょう。
    ちなみに、fileseek.netの前身としてpageseek.netという名前でやってました。

    サーバ構成などについて


    現時点で確認できているfileseek.netのホスト名は
    filesee.net
    web.filesee.net
    mld.filesee.net
    img.filesee.net
    img2.filesee.net
    p[01]?.filesee.net(11ホスト)
    の計16ホストです。
    さらにip addressはばらばらです。
    さまざまなネットワークブロックにip addressが分散しています。

    whoisしてみるとNTTPCのホスティングと出ているため、WebARENa Soloの契約をしている可能性が高いです。
    負荷対策などのために、段階的にサーバ増強をした結果、ブロックがばらばらになったのでしょう。

    2年契約をしていたとして、月にかかるコストは128万円ほどになります。
    データセンタのラックを余裕で借りれます。バックボーンも同等以上かもしれません。
    まぁ、そんな単純な話ではなく、オプションサービスだったりを考えると現状でも安上がりなのかも知れませんが。
    というか、定価ベースで予想しただけだから、もっと有利な条件で契約してるかもですね。
    あと上には出てきてないですが、DB専用マシンとかも何台かあるでしょうし。

    でも、普通に考えたらちゃんとしたネットワーク作って、その下にサービスマシンを置きたいですよね。
    いやいや、この考え方はきっとだめなんでしょう。

    他には、事務所内の動画変換用に相当数のマシンを使用していることでしょう。

    運営会社について


    どこにも情報がありません。
    プレスリリースとかどっかで出してるのでしょうか?
    Googleの件なんかを見る限り、かなり力の会社であると見受けられます。
    31日14:56追記:メタ検索だったと気づいたので、力の程は分かりませんが、世界屈指の技術力はあるようです。

    技術力


    google, Yahoo, NTTレゾナント, ウェブドゥなんぞが逆立ちしても太刀打ちできない技術力です。あ、ライブドアも。
    ▼アンケート
    ファイルシークの検索エンジンは検索速度を下げることなく登録ページ数を無限に増やすことが可能ですので、Web上に携帯サイトが増えれば増えるほど登録ページ数も増やせます。現時点でのWeb上の携帯サイトの数を概算した結果、ファイルシークの携帯サイト検索エンジンの登録ページ数を数千万ページ程度に増やすことを計画しています。

    スケーラビリティがすばらしいシステムをお持ちのようです。
    このあたりの技術が、オープンソースな全文検索システムに還元されると歴史的な技術革新が起こるのは決定的で明らか。
    動画ファイル変換ソフトも自社開発しているので、凄腕エンジニアを多数抱えているはずです。

    日に200万ものトラフィックを、ネットワークが離れているサーバ構成で捌くのもすばらしいです。
    ある種の広域グリッド環境で運用しているとも言えるでしょう。

    残念なことに、本当に運営元が分からないので、どんなエンジニアがいるのかが皆目検討出来ません。

    ただ、

    国内最大・最強の
    携帯用サーチエンジン
    の冠は伊達じゃぁありません。

    技術要素(追記)


    http://www.pageseek.net/intro.html
    ■PageSeekの特徴

    PageSeekは主に下記の特徴を持ちます。


    入力された検索キーワードが実際にWebページ中でどのように使用されているのかが一目でわかるように、検索結果画面で各Webページに含まれるキーワードの前後のテキストを抜粋して表示します。


    携帯端末用サイトに含まれるテキストの多くがコンテンツと直接関係のない広告やランキングサイトへのリンクであるという実状を踏まえ、広告やランキングサイトのリンク文字列を検索対象から外し、できる限りコンテンツと関連するテキストのみを検索できる工夫がなされています。


    同一ドメイン内の類似する内容のページが大量に表示されることを防ぐために、テキストパターンが類似するページの表示を一定数以下に抑える工夫がなされています。


    これらの工夫により、お探しの情報を効率的に検索することができます。

    まとめ


    人様のサービスを研究することで、新しい発見や驚きに沢山出会えます。
    また、出来る限りそれらをインスパイヤしていって自分の糧にもできますね。
    今回は、あまりの技術力に圧倒されてしまい自信を失いかけるほどだったので、やりすぎると諸刃の剣かもしれません。

    次は佐藤さんか今泉さんあたりを研究して圧倒されてみますです。

    31日 12:52追記:MM/Memoに

    知られざるマッシュアップ企業
    とメモされてました。
    確かに、今ちやほやされてるWebにバージョン番号をつけたような所で定義された手法でのMashupとは言えないですが、確かにこのサイトもMashupなサイトと言えるでしょう。
    ただ、各サービス間で連携が取れてないのが残念ですね。

    Posted by Yappo at 23:33 | Comments (3) | TrackBack

    2006年01月29日

    ガーラ頂上


    スキー初日に行かされた所に10年ぶりにきた。
    初心者お断りらしい

    Posted by Yappo at 15:37 | Comments (0) | TrackBack

    手ぶらでスキー


    いってくるずら

    Posted by Yappo at 10:52 | Comments (0) | TrackBack

    2006年01月25日

    はじめて作ったホームページ公開

    初めて作ったホームページもISPへの支払い忘れで消滅して時間がたったなあと思ってweb.archive.orgしてみたらきっちりと残ってますあた。

    LastModified1997/5/5
    とかなってるけど。
    さすがに画像は無いと思ってたけど、一個だけ残ってた。

    もういっこはギガコードとかちょっと古めのメディアとかで使ってたけど消滅してるなぁ・・・
    まぁ残ってても初期のリヴィンオンザエッヂ社作のデータパクリまくりだったので証拠隠滅で願ったりかなったりですが。

    ってことで当時のHTML一部だけ貼り付けてみるテスト


  • SY-55


  • 僕が初めて買ったシンセ第一号です。これは長く使っているだけあって、いろんな音色を作って使っています。現在はギターリードとエレピ系の音色を多用しています、スタジオに持っていくのでも重宝しています。


  • EOS B-700


  • これは、ただたんにデザイン(TK氏に影響されたともいう)が、気に入って購入しました、高校一年の時にローンを組んで買いました。曲を作るときにまず使うシーケンサーがこれですね、一旦これで曲を打ち込んである程度煮詰めてからマイクロロジックを使って本格的に組み立てていきます。


  • TQ-5


  • EOS-B200の鍵盤なしのちょっと変わったモジュールです。これは、FM音源を使っているのでベル系やリード系の音として主に使っています。ただ、専用のACアダプタがない為に音質がちょっと悪いのが残念です。最近は使っていませんがまた使おうと思っています。


  • D-110


  • これは、D-50シリーズの音源モジュールです。この音源は8パラアウトがついているので、主にドラムやパーカッション用の音源として使っています。ちなみにYAMAHA以外の音源はこれだけです。


  • A-880


  • MIDIパッチベイです、本当はSutdio 5とかが欲しいんだけど予算面がなかなかつらくて.....だけども家のシステムの心臓部といっても過言ではないでしょう。なにせケーブルをつなぎ変える手間もなくなって、MIDI関係のトラブルもすぐにわかるから。


  • TX16W


  • 有名なサンプラーですね、買った当初はよくGet wild遊びをしていたんですけど(笑)ライブでは見事に活躍してくれました。でも最近はなぜかサンプラーを使わない方向に進んでる気がするので、もうそろそろ使おうと思っています。まだ全然使いこなしていないし.....


  • プロフェット-600


  • アナログシンセです、プロフェット-5の方が有名すぎてなじみ少ないシンセですけど、かなりいい音をだしてくれてました。しかしこの前の夏から調子が悪くなって、自分でチューニングを合わせていたらさらに調子が悪くなってしまいました。誰かいいチューニングの方法を知っていましたらご一方を!どのキーを押しても音程感のない音が出てきてしまう....


  • GZ-50M


  • 余り有名ではないかも知れないですが、カシオのGM音源です。音は値段相応といったところでしょうか......個人的にはGM関係は好きではないのですが、互換性を考えるとどうしても必要になってしまったので買いました。今現在では作曲時の音源として使用しています。


  • DMT-8


  • フォステクスのMTR型ハードディスクレコーダーです。容量が11分近くまでしかないのが難だけど、それでも上手く使えば十分な性能だと思います。とにかく操作性がいいのにつきます、8チャンネルミキサーとしても十分な性能だと思います。早くバージョン2にしなければ!!!


  • MDX 2100


  • BEHRINGERの最新コンプ/リミッターです。かったばかりで使いこなせていないけど。これでミキシングが楽になりそう...


  • D-06


  • パイオニアのDATデッキっす。96年の大きな買い物はこれになってしまった。

    DMT-8のバックアップ用に、MDのマスターテープ作りにと役立っています!


  • JP-8000


  • 遂に買いました!!!詳細は次回更新にでも書きます



    その後・・・
    Samba方面の人(当時は知らんかった)を含む方たちとJASRACに金払ってCD作ったときはDMT-8をメインでLogicの出番少々。つか、このCDってCDDBにもちゃんと登録されてるとは流石だ・・・
    MUNEOHOUSEんときはHDDレコーダソフト買ってきてこんなの(70MB)とか作って遊んでたっけな。。。

    Posted by Yappo at 03:19 | Comments (0) | TrackBack

    2006年01月13日

    Yappoは9才の誕生日を忘れられていました

    2006年1月7日にYappoは9才になりました。
    親の体調不良とかノートPC我物故割れたりして放置されてました。

    おめでとうございます。

    今年は管理機能の大幅な強化と全文検索周りを何とかできるといいな。

    某社の2周年パーティにでも行けばいいことあるのかな。

    Posted by Yappo at 12:45 | Comments (0) | TrackBack

    2006年01月01日

    初日の出


    どうみても曇り空です。
    本当にありがとうございました。

    奥多摩産のわさびゲッツしただけでも良かったと思っている。

    Posted by Yappo at 07:58 | Comments (0) | TrackBack