2005-03-21

Avexで"Excel Suggest"

ExcelSuggest

Avex = Asynchronous + VBA + Excel

・・・とか言ってみる。


最近ハヤリのAjaxですが,それと同じことをExcelのマクロで出来ないかというのがAvexです。

サンプルとしてGoogleサジェストと同じ動きをする「Excel Suggest」というものを作ってみました。

VBAを使ってMSXMLオブジェクトを生成し,XMLHTTPRequestを呼び出してます。検索ボックスみたいなセルにキーワードを打ち込むと,Google Suggestからそのキーワードの候補を持ってきて下のセルに表示させます。

フリーで使って貰ってOKですけど,完全自己責任ってことでよろしく。

VBAマクロもなかなか使えますね。ハマってきちゃいました。

さてこのマクロを作って知ったこと。
  1. Application.ScreenUpdatingをサブルーチンの先頭でFalse,最後尾でTrueとすることで画面のちらつきを防げる。実行効率もアップ。
  2. Application.onKeyでキー入力のイベントも取得できるみたい。このマクロでは使ってないけど。
  3. "http: //www.google.com/complete/search?hl=en&js=true&qu="の 後にキーワードを付け足すことでGoogleSuggestのキーワードリストを取得できる。日本語版のリストはどうやって取得するのか分かんない。

ExcelSuggestのソース — Gist

参考リンク
参考にした本。

Groovyの練習 - 素数のリストを出力する -

最近Groovyでスクリプトを書くのをサボってたので,勘を取り戻すために
練習をしてみることにしました。いつの間にかbeta‐10が出てたみたいです。

プログラムの練習には数学的なパズルが一番,ということで1から100までの
間にある素数のリストを出力するスクリプトを書いてみました。

[その1]
1> for(i in 2..100) {
2> flag = 1
3> for(j in 2...i) {
4> if(i%j == 0)
5> flag = 0
6> }
7> if(flag == 1)
8> print i + ", "
9> }
2から100までをループで回す。各数字を2からその数字までで割り切れる数字がないか
チェックしてフラグをセットする。フラグが1だったら出力,というような流れです。
「2..100」は2以上100以下,「2...i」は2以上i未満という範囲を表しています。
一番オーソドックスなプログラムだと思います。

それではこれを改造してちょっとGroovyらしく書いてみます。

[その2]
1> (2..100).each { i |
2> flag = 1
3> (2...i).each { j |
4> if (i%j == 0)
5> flag = 0
6> }
7> if (flag == 1)
8> print i + ", "
9> }

[その1]のループを,範囲オブジェクトのeachに置き換えました。ちょっと
すっきりしたかな。でもやっぱりフラグが面倒ですね。

[その3]
1> (2..100).each { i |
2> if ( (2...i).every { j | i%j != 0 } )
3> print i + ", "
4> }

範囲オブジェクトのeveryを使うと,フラグが要らなくなります。everyは『リストの
全ての要素に対して与えられた条件式が成り立つときtrueを返す』というメソッドです。
[その3]では『2からi-1までの数がiを割り切らない』という条件判断に使っています。

[その1]から比べると,大分短くなっちゃいました。これでも十分だけどもうちょっと
短くなんないかな。

ちょっとトリッキィだけど,こんなのも出来ます。

[その4]
1> (2..100).each { i |
2> (2...i).every { j | i%j != 0 } ? print i + ", ": print
3> }

わぉ,最初の9行のプログラムが3行になっちゃったよ! 実質2行だし。
スクリプト言語を使うのってGroovyが初めてなんだけど,こんなに楽チンで良いのかしら。

さてさて,これを実行してみると。

[実行結果]
3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47,
53, 59, 61, 67, 71, 73, 79, 83, 89, 97,

2が出力されてないじゃん・・・orz


参考リンク
Groovy - Java用スクリプト言語
    Groovyを勉強するならとりあえずこのページを印刷しとくと良いかも。コンパクトにまとまってます。

2005-03-16

Filangyで日本語が使えるようになってるよ!

さっきFilangyのアカウントページにアクセスしてみたら日本語が使えるようになってました。やったー! これで普通に日本語でWebCacheやWebMarkが検索できるようになったよ。前に日本語が使えるようにしてってお願いしたからだったりして。

今日の時点でWebCacheは1,948ページ,WebMarksは284ページ登録されてます。自分の好みは大分Filangyに把握されてしまったはず。これからどう使っていこうかな。

ついでに報告しとくと,最近Filangyにはdel.icio.usからブックマークをインポートする機能が付きました。この機能はどうかな。自分的にはWebMark<del.icio.usだから。

最後にFilangyのページに載ってたこれから追加予定の機能をリストアップしときます。


F-Rank
We'll show you the F-Rank of the page right below your Personal Score. The F-Rank is more or less a real-time blended Authority/Popularity score. A high score signifies the page is important and visted by many. This will be computed a few times every hour, letting you know if the importance of a page is increasing/decreasing over time.


External WebMark Search
Functionality (API) where a Filangy user can allow others (say vistors to his/her blog) to search thru his/her WebMarks.


Personal Tags
Given that now all the pages in your Personal Web are searchable, we have not recieved a lot of requests for Tag support. Thus, we are only planning on adding "Personal Tags" -- so users can tag thier own data. If you want this feature, please Rate it!
And if you really really want Global tags, use the Request Feature link and let us know.

2005-03-06

検索会議2005に行ってきた

検索会議2005

百式さん主催の検索会議2005に行ってきました。三部構成の第三部,【技術動向編】っていうのです。

このイベントはYahoo!がスポンサーで,ブロガーのジェレミーさんやYST検索エンジンの技術ディレクターのヨンドン・ウォンさんのプレゼンを聞くことが出来ました。

講演の内容としては,Yahoo!のサービス紹介や検索エンジンの技術的困難さなどでしたが,時間が短かったせいか,ちょっと浅かったかなってのが感想です。

こういう会議イベントって初めて参加したんですけど,なかなか面白かったです。後半はYahoo!の膨大な情報を利用した新しいサービスを考えるという課題が出ましたが,グループで出したアイデアが最終選考まで残りました! 結局,全体投票で落ちちゃいましたけど。

どんなアイデアかというと,名づけて新サービス『Yahoo! 病も気から』。
Yahoo!の膨大なインデックス情報と医療機関の情報を組み合わせ,他の人と一緒に病と闘うことが出来るというサービス。病気つながりのSNSみたいなもんです。

このアイデア,実は私が提案したものを元にしてるんですが,そのときはサービス名は『Yahoo! 今を生きる』でした。ちょっと重すぎたかな。。。 
グループのメンバの人たちが優秀で,自分のあいまいなアイデアがしっかり具体的になっていくのは面白かったです。壇上でプレゼンした方もすごく安定感のある話し方で,会議イベント常連者恐るべし!って感じでビビってました。ともかくグループのメンバの人に感謝です。

百式の田口さんは初めて顔を見ました。すごく面白い人で司会やコメントもキレてました。田口さんには,メンバの名前を読み上げたときに私の名前を呼び間違えられちゃいました。初めての人には高確率で間違えられますね,私の名前は。


最後にYahoo!からのお土産を紹介。参加費無料のわりには かなり豪華。


yahoo_watch_mouse_02
スウォッチとUSBマウス。
Y!はマウスに入っている水の中に浮かんでる。

yahoo_bag
Yahoo!トートバッグ。裏地は紫色。



イベントの詳細については追々書きます。


参照リンク
Yahoo! Next
ジェレミーさんのプレゼンで知ったサイト。Yahoo!の新技術が紹介されている。Google Labみたいなもんかな
Flickr: Photos tagged with kensakukaigi
 Flickrの検索会議Tag。写真とるの忘れたのでリンクしときます。