«前の日記(2007-09-08 (土)) 最新 次の日記(2007-09-11 (火))»  

まちゅダイアリー


2007-09-09 (日)

地名しりとり × はてなスター(Permalink 重要)

急にはてなスターのことを調べたくなったので、地名しりとりにはてなスターを付けました。 地名しりとりについては、過去の日記をご覧ください。

地名しりとり × はてなスター

  • しりとりに登場した地名にスターを付けられます。
  • 面白い地名や思い入れのある地名にスターを付けるといいでしょう。
  • 機能はそれだけです。たくさんスターを付けても、特典はありません。
  • スターの付いた地名ははてなスター - 地名しりとりで見られます (2007/09/14追記) 。

追記 (2007/09/10)

はてなスター日記で取り上げられていてビックリした。

まちゅさん、ありがとうございまスター。

初めての方のために補足しておくと、地名しりとりは日経ソフトウエア4月号のサンプルプログラムとして作りまスター。 その後、ムックにも収録していただいているので、よかったらご覧ください(宣伝)。

このムックには、竹迫さんの「正しいPerl/CGIの書き方」や大垣さんの「セキュアWebプログラミング入門」や笠谷さんのSeleniumの記事や結城さんの連載記事が載ってて面白い。時間のある休日にのんびり読む感じ。

以下、いつもの日記っぽく

改めて思ったのは、「Permalink重要」ってこと。 これまでの地名しりとりには、以下の3つの画面しかなかった。

  • トップページ(最近の10件+次の地名の入力)
  • 地名検索ページ(入力した地名から候補を表示)
  • 履歴ページ(過去に登場した地名の一覧)

過去に登場した地名の一覧はあっても、それぞれの地名を指し示す Permalink が抜けていた。 Permalink が無いだけで、こんなに不便なことになるとは。

  • おもしろい地名を紹介したときにリンクが張れない。
  • フィードを配信してもリンク先が無い(とりあえずGoogle Mapsの検索結果をリンク先にしてた)
  • 気に入った地名にブックマークやスターが付けられない。

ということで、スターを付けるために、地名に Permalink を付けることにした。 Rails を使っているので、 Permalink の URL はそれほど悩まずに自然に決まった。

http://capping.machu.jp/histories/view/461

histories はコントローラ、 view はアクション、 461 は履歴のIDになる。 view が呼ばれたときのメソッドを、コントローラに追加した。単に ID から履歴を取ってくるだけ。

  def view
    unless params[:id]
      return redirect_to :action => 'index'
    end
    @history = History.find(params[:id], :include => {:area => [:position, :stations]})
  end

同じく画面データ (view.rhtml) も作成。 こんなに簡単にできるなら、もっと早くやっておけばよかったよ…。

Permalink ができたので、はてなスターのスクリプトを呼び出す記述を追加した。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
  Hatena.Star.EntryLoader.headerTagAndClassName = ['h2'];
</script>

はてなスターのスクリプトは、 <h2> 要素の内側にリンクが含まれていれば、それを Permalink とみなすようになっている。 リンクは画面上に表示する必要が無いので、リンクのテキストは空にしている。 本当はスタイルシートで隠すほうがいいのかな?

<h2><%=link_to("", :action => 'view', :id => @history.id) %><%=h @history.area.name %></h2>

Permalink ができたので、履歴の画面からもスターを付けられるようにした。

地名しりとり × はてなスター

といっても、普通に Permalink へのリンクを張って、 JavaScript をロードするだけだけどね。 思ったよりも簡単だった。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
  Hatena.Star.EntryLoader.headerTagAndClassName = ['span', 'name'];
</script>
    <span class="name">
      <%=link_to(history.area.name, :action => 'view', :id => history.id) %>
      (<%=h history.area.syllabary %>)
    (後略)

一番大変だったのはトップページ。 スターの対象となる最近10件の地名は、ページのロード後に動的に取得している。 ちょっと悩んだけど、ページの構築後に手動で Hatena.Star.EntryLoader() を呼び出せば動くようになった。

    this.histories.each(function(history, index) {
      /* ページの構築処理をいろいろと */
    }.bind(this));
    /* はてなスターをロード */
    new Hatena.Star.EntryLoader();

Perlで予約語プログラミング

ITpro Challengeが終わったあとの飲み会で、TAKESAKOさんが「Perlで予約語プログラミング」というプレゼンをされた。 とっても面白いプレゼンだったので、お願いして動画をニコニコ動画に載せさせてもらった。 感謝感謝。 プレゼン資料はad-hocな人生 - TAKESAKO (仮) - ppencode公開しましたに置いてあるみたい。

さっそくご本人からブクマされてるし! id:maedanaさんのまとめページでもリンク張られてる〜。

こういう動画「も」増えてもいいと思うなぁ。

Tags: memo
本日のツッコミ(全4件) [ツッコミを入れる]
maedana (2007-09-09 (日) 14:08)

さっそくリンク貼らせて頂きました。ちょっとわけありで名刺が無かったこともあり先日のイベントでは大人しくしていたのですが、今度どこかでお会いしたときにでもぜひご挨拶させて下さいm(_ _)m あとtracは僕も大好きですw

まちゅ (2007-09-09 (日) 14:32)

素晴らしいまとめをありがとうございます〜。<br>ぜひTracのイベントの時にでもお会いしましょう:)

quill3 (2007-09-09 (日) 15:34)

私もこれは面白かったー。<br>Perlまったく知らないのに大笑いしてました…

まちゅ (2007-10-04 (木) 14:32)

>quill3<br>動画以上に会場は盛り上がりましたよねー。<br>(いい意味で)不思議な人たちの集まりだなぁと思ってました。