投稿スラッグをGoogle AJAX Language APIで英訳するWordpressのプラグインを作った
2009/06/14 作ってみた 3 件のコメント »
それは、どういうものですか?
WordpressのURLとして使われる投稿スラッグ。これは、標準だと投稿タイトルをURLエンコードしたものが自動的に使われて、やけに長くなるしかっこ悪い。
んで、ぼくは投稿タイトルを逐一英訳して投稿スラッグとして入力しているんだけど、ボキャ貧なので通じるかどうかわからない怪しげな英語になってしまう ><
そこで、自動的に投稿タイトルを英訳してくれて、それが投稿スラッグになってくれると素敵だなと思い、Wordpressのプラグインを作ってみました。
Googleの逆ジオコーディングをためしてみた
2009/03/07 日記 2 件のコメント »
ジオポの地図表示で住所を出したかったので逆ジオコーディング(緯度・経度から住所を取り出すこと)をGoogleのAPI使ってやってみました。
まず基本
Google MapsのAPIと違って、日本語での情報が少ない(マニュアル)けど、
http://maps.google.com/maps/geo?ll=35,135&output=xml&key=GOOGLE_MAPS_API_KEY&hl=ja&oe=UTF8
URLはこのサンプルみたいにして、HTTP GETでXMLが取得できる。
リクエストパラメーター
| ll | 緯度・経度(qでもいいと思う。違いがわからないよ><) |
| output | xml、kml、cvs、json |
| key | Google maps APIキー |
| hl | 言語(日本語だとja、英語ならen)。住所記述方法にも影響 |
| oe | 文字エンコード |
レスポンス(XMLをsimple_xmlでパースした場合)
| $parsed_xml ->Response->Status->code |
ステータスコード |
| $parsed_xml ->Response->Placemark |
Arrayで結果が複数入る |
| 以下 Placemark[0]が親とする | |
| AddressDetails['Accuracy'] | 精度。後述 |
| address | 住所。言語によって記述方法が変化。日本語だと[県][市][町] って具合だけど、英語だと [Street], [City], [Prefecture] あと、住所には国名が含まれる。 |
| AddressDetails->Country ->CountryNameCode |
国のコード。JP |
| AddressDetails->Country ->CountryName |
日本 |
| AddressDetails->Country ->AdministrativeArea ->AdministrativeAreaName |
東京都 |
| AddressDetails->Country ->AdministrativeArea ->Locality ->LocalityName |
渋谷区 |
| AddressDetails->Country ->AdministrativeArea ->Locality ->DependentLocality ->DependentLocalityName |
渋谷 |
| AddressDetails->Country ->AdministrativeArea ->Locality ->DependentLocality ->Thoroughfare ->ThoroughfareName |
1丁目26 |
| AddressDetails->Country ->AdministrativeArea ->Locality ->DependentLocality ->PostalCode ->PostalCodeNumber |
日本だと取れない。アメリカだけかな? |
基本的に詳細な住所ほど、先頭にくるのでPlacemark[0]を見れればokとか考えていたらハマった。
ジオポの符号化、復号化をいろんな言語で書いてみる
2009/03/05 日記 コメントはまだありません »
位置情報をいくら短縮して色んなことに応用できるといっても、ユーザーが使ってくれるまでの敷居が高い(今のブラウザ経由の符号化じゃ、ダメってこと)とどうしようもない。
そんな理由で、まずはユーザーが接するアプリケーションの開発者サイドにジオポ実装を働きかけていきたい。そのためにも、具体的なサンプルコードをプログラミング苦手な僕が書いてみた。
と、その前に…
ジオポがネタフルで紹介されたよ!
位置情報を短縮したURLに変換するウェブサービス「ジオポ」
スクリーンショット付きで丁寧に紹介していただきありがとうございます。モチベーションあがりました!
検索エンジンに対応した多言語化方法
2009/03/02 日記 コメントはまだありません »
検索エンジン(まぁGoogleなんだけど)って、ひとつのURIに対してひとつの言語にしか対応してないんですね。
そんなわけで、単純に内部で言語を切り替えただけではクロールされる言語がひとつになってしまい、問題になってきます。
そこで、多言語に対応したサイトの作り方をメモとして書いておく。
CodeIgniterのURIルーティングで.htaccessいらず
2009/02/26 日記 2 件のコメント »
とりあえず、開発スピードを優先させるためにフルスクラッチで作ってたジオポですけど、これから、国際化対応させたり、DB使う場面が出てくると思うので、PHPのフレームワーク CodeIgniterに変換した。
フルスクラッチは、コントローラーからビューだけをinclude()する方法で作っていたので、置き換えもスムース。そして、スピーディー。
- CodeIgniterをダウンロード、展開
- .htaccess 書き換え
- config.php の設定
- $config['base_url'] = "http://" . $_SERVER["HTTP_HOST"]; としてローカル環境・本番環境でも切り替え必要なし。
- //$config['index_page'] = "index.php"; コメントアウト
- autoload.php の設定
- ライブラリのuser_agentとコンフィグに独自config
- コントローラーをクラス化してやり、少しの書き換え
- 同時に独自configファイルを作ってやる
- サーバ名を見て、ローカルだったらデバッグフラグ立てる
- Google Maps APIがローカルだと使えない(localhostならいけるけど、プロジェクトごとに projectName.localhostとしてhostsの変更してるので…)
- ビューを配置
- user_agents.php の書き換え
- 日本向けの携帯設定と、iPhone判別を追加
こんだけです。多分、1時間もかかってないんじゃないかな?
気づいたこと→routes.phpが素敵
routes.php でクラス、メソッドの呼び出しがマッピングできるんだけど、正規表現が使えるからとっても便利。
今までは、.htaccessでmod_rewriteのために正規表現の条件処理を加えて、パラメータをクエリとして渡してやって、そのクエリをバリデートと分岐させるためにPHPの内部でも正規表現で条件分けしてた。
CodeIgniterだとそんなのいらない、
$route['([0-9a-zA-Z_-]{1,10})'] = "geopo/mapGeopo/$1";
これだけで完了。記述方法もとってもわかりやすい(たしか、Cakeだともっと複雑だった気が)。
そんなこんなで、これから国際化に向けてがんばろうっと。
ブログで取り上げてもらった
ヅラずれなるままに(2009-02-26) – ジオポを試してみた
書いていただき、ありがとうございます。
地図からの選択はわかりにくいかな?あのマーカーがドロップしたときの動きが好きで、あんな仕様にしたんだけど、後で変えて試してみっか。