パスワードを忘れた? アカウント作成
9363 story
Google

解読!Google Suggestの動作原理 41

ストーリー by Oliver
表は華麗に、裏ではゴリゴリ 部門より

Anoymous Coward曰く、"本家記事より。あるブロガーによってGoogle Suggestのコードが解読された。もともと、JavaScriptで書かれたGoogle suggestのコードIOCCCのコードかと思われるほど詰めて書かれており、ちょっと見ただけでは動作の詳細までわからないようになっている。この解読でこの便利なUIのいっそうの普及を期待したい。"

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 解読? (スコア:3, 参考になる)

    by Anonymous Coward on 2004年12月18日 21時05分 (#667874)
    「解読!」というのはちょっとどうかと。

    変数名縮めてあるぐらいで、特に難読化されてるわけではなくJavaScriptに詳しい人なら普通に読めるかと思うのですが。
    動作原理はXMLHTTPを使ってバックエンドで検索結果を取ってきて、画面に書き出しているだけです。

    Google Suggestより以前にもXMLHTTPを使った検索を実装しているサイト [bitflux.ch]があります。

    OperaがXMLHTTPに対応したのはつい最近みたいなので、古いブラウザに配慮するなら、IFRAMEに検索結果を読み込んで似たようなことができます。
    • Re:解読? (スコア:2, すばらしい洞察)

      by airhead (13423) on 2004年12月18日 22時35分 (#667895) ホームページ 日記

      解読じゃなくて解説、あるいは注釈と考えればいいんじゃないですかね。

      var w="";var pa=false;var ta="";var da=false;var g="";var G="";var m="";var j=-1;var h=null;var Z=-1;var za=null;var Ca=5;var q=""; (以下略)
      オリジナル [google.com]

      ↑こういうのを、

      var w="";
      var pa=false;
      var _oldInputFieldValue=""; // inputField value (set during call to google...)...(was ta)
      var da=false;
      var _currentInputFieldValue=""; // also inputField value (was g)
      var G="";
      var _eventKeycode=""; // event keycode... (was m)
      var _highlightedSuggestionIndex=-1; // currently hightlighted suggestion index (was j)
      var _highlightedSuggestionDiv=null; // currently highlisted suggestion div... (was h)
      var _completeDivRows=-1; // completeDiv rows at time of keypress... (was Z)
      var _completeDivDivList=null; // completeDiv div list at time of keypress (was za)
      var _completeDivRows2=5; // was Ca... initially 5? not sure difference between this and _completeDivRows...
      var q=""; (以下略)

      解説版 [fastbugtrack.com]

      ↑こうしてくれているわけでしょう。それだけでも彼はエライと思うけどなあ。

      親コメント
      • by Anonymous Coward
        セミコロンをセミコロンと改行に置換すればよいだけのような。
        • Re:解読? (スコア:2, 参考になる)

          by Anonymous Coward on 2004年12月19日 6時36分 (#668017)
          >セミコロンをセミコロンと改行に置換すればよいだけのような
          コードを読んだ事が無いか、英文が読めないのですか?
          //の後に目を向けてください。

          airhead氏は、「動作原理を"解読"」というタレコミを肯定して
          「偉い」と言ってるのではなく、「動作パラメータを"解説"」
          しただけでも「偉い」と一行目で言ってるのですね。

          ですから、マシンは勝手に解読してくれるセミコロンを改行に
          置換しただけのどこか偉いのかというツッコミは激しく見当外れ。
          親コメント
    • by morioka (6528) on 2004年12月19日 9時03分 (#668033) 日記
      それよりは、本命のサーバ側で行ってる処理が解明/公開されなければ「解読」とは言えないんじゃないかな。

      今回のは「Google Suggest UIの解読/解題」ですよね?
      その意味で、面白さも中くらい。
      親コメント
    • by Anonymous Coward
      未だにOperaではmsdnは読めん。
    • by Anonymous Coward
      暗号でもなんでもないから、「解読」ってのはおかしいわな。 コーディングもjavascriptとしては結構一般的な記述法だと思うけど。 少しでも転送量を減らす為に改行やインデントを入れないのは常套手段だろ。 今回はなんだかとても低レベルで子供っぽいタレコミな気がする。
      • by Anonymous Coward
        確かに「解読」ってのも変だけど、改行やインデントを減らすのは常套手段かなぁ。
        バックアップを取っていても、あとで面倒だから今はそんなことしないような?

        ……と思ったら、googleさんのトップもほとんど改行無い(印出とに至っては皆無)だー。
        • Re:解読? (スコア:1, 参考になる)

          by Anonymous Coward on 2004年12月18日 22時31分 (#667893)
          バックアップを取っていても、あとで面倒だから今はそんなことしないような?
          wwwサーバに置く直前にダイエット・ツールで一括変換するだけで、
          マスタをその状態で管理するわけじゃないと思います。
          親コメント
          • by Anonymous Coward
            私も通常そうしています。
            ポータル系のwebの世界では、たぶん常識的なことだと思います。
      • by Anonymous Coward
        単にこのタレコみ人は「!」を使いたかっただけなんだと思うな。
        たぶん根っからの川口浩探検隊のファンなんでしょう :-)
        • Re:解読? (スコア:3, 参考になる)

          by Anonymous Coward on 2004年12月18日 23時53分 (#667915)
          たれこんだ人ですが、タレこみ時には「!」は付けてませんでした。
          ついでに言うと、JavaScriptアプリケーションではこのようなコードの切りつめが(比較的)一般的であることとRinGOch等ですでにこのUIが実装されてたことも書いていたんですけど削られてますね…

          誰でも時間掛ければ出来ることだけど、それに時間掛けて成果をオープンにしたところが素晴らしいなと個人的には思いました。
          読みづらいコードがあるだけでは、コードが見える価値はあんまりありませんから。もちろん、パクるのが正義ってことじゃないですけども。
          親コメント
          • Re:解読? (スコア:1, すばらしい洞察)

            by Anonymous Coward on 2004年12月19日 1時52分 (#667968)
            うーん、タレこみ人ではなく編集者のセンスに問題があったようですね・・。
            親コメント
          • by Anonymous Coward
            そうか川口浩探検隊のファンはOliverのほうだったのか(・∀・)!
          • by Anonymous Coward
            タレこみ時の原文希望。 それで編集人の作業を検討する。
            • by Anonymous Coward
              ソースをオープンにする事で、皆で議論を深め、
              より良いモノにしていく事ができれば素敵ですよね。

              # O氏は、オープンソースの手法が
              # ソフトウェア開発以外の分野でも
              # 有効に適用できる場合があるとは
              # 認めたくないのだろうか。
  • by n68 (18156) on 2004年12月18日 20時59分 (#667873)
    > Google suggestのコードはIOCCCのコードかと思われるほど詰めて書かれており
    単に転送量を少しでも下げるためにああいう風になっているのではないのですか?
    容量を減らすような「最適化」を施しているだけで、元は普通のコードだと思いますよ。

    # 思っているだけなので実際のところは解りませんけど。
    • by Elbereth (17793) on 2004年12月20日 17時07分 (#668505)
      最適化を施している?割に、変数の宣言をまとめてやっていないのはどうしてなんでしょ。
      var hoge; var moe; var aaa;……(例)と何回も宣言するよりは、var hoge,moe,aaa,……と
      した方が文字数削れると思うんですが。
      親コメント
      • by n68 (18156) on 2004年12月20日 19時47分 (#668554)
        >変数の宣言をまとめてやっていない
        ある程度削れればそれでいい、ということでは?
        おっしゃるとおり、宣言をまとめればその分削れますけど、そういう「最適化」のためにかける開発の手間と、結果として削れる量とのトレードオフを考えて、やってないということかも知れませんよ。

        識別子の圧縮と余白の削除なら字句レベルの処理で済みますけど、宣言のまとめとなると構文レベルでの処理になりますからね。
        親コメント
  • も出ているので、結構はやくから解析されていたのではないでしょうか?

    http://forums.mozillazine.org/viewtopic.php?t=182186 [mozillazine.org]
    右上のグーグル検索バーにオートコンプリート機能をつけます。

    # FireFox大好き
  • こういったjaphとか訳のわからないコードをちゃんと読み込んで解釈できるコンピュータはつくづくすごいと思う。

    #読めないようなコード書いちゃうと後でバグが見つかってもどうしようもない気がするのだが。特に開発者が不幸にして無くなった場合とか。
    • by Anonymous Coward on 2004年12月19日 1時47分 (#667964)
      人間が読んでもわかるようなコードをちゃんと読み込んで解釈できることの方がすごいと思う。
      親コメント
    • >>特に開発者が不幸にして無くなった場合とか。

      デスマーチ中に逃亡、とかそういう場合ですか?
    • m.storage氏は機械語(しかも2進表記)を見たら卒倒しそうだなw

      # 高級言語万歳なのでAC
    • 素人じゃあるまいし、google の開発者は
      あんなコード書いていないと思いますよ。

      開発用コードを配布用コードに変換するツールが
      あるんだと思います。
      変数名を縮めたり、コメントを削除したりとか、
      簡単に作れるツールだと思う。
      • 昔某社でテスタやってたんだけど、こういうのが一番面倒です。
        変換前の状態でテストし、さらに変換後にも同じテストを…
        実は手抜きだったのでAC。
    • こうした圧縮陳列というのは、見た目が散らかっているようで
      実は宝捜しのような気分をもたらすのです。
      さあ!キレイなソースが優れていると言ってる貴方!
      今日からソースを圧縮…

      #間に受けたらダメですよ
  • by Anonymous Coward on 2004年12月18日 19時38分 (#667852)
    遠い昔にあった一行プログラムのようなものですか?
    • by Anonymous Coward
      ワンライナーは今でも便利につかってますわ。
      それよりベーマガ初期に流行った「一画面プログラム」の方が近そう。
      • 年刊 Ah!scii (スコア:2, 興味深い)

        by ribbon (11750) on 2004年12月18日 20時29分 (#667867) 日記
        確か年刊 Ah!sciiにも、最密充填リスト、というのがあったような。

        1) BASICの行番号付きのリストを行番号順ではなく、長さ順に並べ、半分の所で折り返し、残りは逆さまにする。

        2) 行番号順ではあるが、改行コードを特殊な文字にして、改行を全部つぶす。

        の2種類があったような。

        ちらっと見た限りでは 2) に近いかな。
        親コメント
  • by Anonymous Coward on 2004年12月18日 20時56分 (#667872)
    特に読みにくいコードとは思えんが。
  • by Anonymous Coward on 2004年12月19日 2時10分 (#667980)
    機械語で書かれようが難読化されていようが
    英語で解説されていようが
    私には同じ事です

    誰か日本語に解読してください
    • by Anonymous Coward
      未承諾広告

      以上。
    • by Anonymous Coward
      日本語にしてしまったら、この程度の英文すら読めないような低レベルな技術者を篩い分けられるという恩恵が損なわれてしまうではないですか。
  • by Anonymous Coward on 2004年12月19日 3時24分 (#667995)
    また、Googleの挙動がおかしーくなたー!!
typodupeerror

皆さんもソースを読むときに、行と行の間を読むような気持ちで見てほしい -- あるハッカー

読み込み中...