2008年7月の投稿

2008-07-23
晴れ

阪神タイガース応援ウィジェット Tigers 2008 バージョン 0.8.0

ゆりこ による 20:25:50 の投稿
カテゴリー: WordPressハック,阪神タイガース
タグ: , , ,

マジック番号ロゴ一覧画像

われらが阪神タイガースに優勝マジック46が点灯しました!! 今シーズンのリーグ優勝を応援すべく、WordPress ウェブログに現在のマジックナンバーを表示するウィジェット Tigers 2008 を作成しました。

  • 現在のマジックナンバーは手動設定です。自動計算や自動取得はできません。
  • 番号のロゴは数字ごとに違います。
ダウンロード: tigers080.tar.bz2 (338.0KB)
バージョン 0.8.5 をリリースしました。

以前から予告していた、優勝マジック表示ウィジェットをリリースします。配布形態としてはプラグインですが、動作としてはウィジェットになります。このため、お使いのテーマで「タイガース」ウィジェットの追加が必要です。

カウントダウンの数字ロゴが毎回異なっているのは、わたしの趣味です ;-) このため、配布ファイルも 300KB オーバーになっています。全部同じデザインの方がいい、という人もおられるかもしれませんが、ご了承ください。ロゴデザインは、「Illustrator10分間ロゴデザイン」にある作例をほぼ流用しています。ちょっと古い本ですが、テクニック自体はそのまま使えますね。

マジックナンバーの自動計算は、タイガースと他チームそれぞれの残り試合数を取得する方法が困難なので、実現できていません。阪神タイガース公式サイトにマジックナンバーが掲載されるならば、それをひっぱってくる (自動取得) する手はあるかと思います。

数字ロゴ自体はタイガースと何の関係もないため、「マジック: 0」の画像を差し替えればパ・リーグでも使用可能です。しかし、パ・リーグの優勝マジックは9月まで点灯しそうにないですが ;-)

[追記] 本日、タイガースは負けましたが、ドラゴンズも負けたためマジックは 45 になったようです。ジャイアンツに自力優勝が復活した (==マジック消滅) したのではないかとビビりましたよ……。

[さらに追記] マジックナンバーの計算には、タイガースと他球団それぞれの残り試合数が必要と思っていましたが、それはマジック点灯するかどうかの判断に必要なのであって、点灯することが確実であれば不要でした。つまり、勝敗表さえあれば計算可能です。ということで、タイガース公式サイトの順位表日本野球機構のセ・リーグ勝敗表Yahoo! ニュースの順位表あたりを読み取って自動計算させることを考えてみます。ただし、中日は引き分けが4試合と多いので、単純に勝ち数だけの計算ではうまくいかないようです。通常、「対象チームが残り全勝した場合の勝ち数より1つ多く勝てれば優勝できる」前提で計算しますが、今年はその前提が崩れています。ドラゴンズが残り全勝すると99勝ですが、分母となる試合数は140なので、勝率は 0.707 です。タイガースは143試合ある (引き分け1) なので、同じ勝率ならば 101.1 勝なので、102勝しないと上回れません。ここから現在の勝ち数57を引くと「45」となり、マジック45と算出できるわけです。巨人 (読売) を対象とすると、残り全勝して101勝、試合数142 (引き分け2) なので勝率は 0.711 です。あれ? ドラゴンズを上回ってしまいました。143試合換算で 101.7 勝なので、いずれにせよタイガースは102勝すれば優勝できます (==マジック45)。問題は、ジャイアンツまたはドラゴンズが全勝してもタイガースが45勝できるかどうかですが、これには直接対決の試合数が必要、というわけです。

2008-07-24

関西契約iチャネルは神戸新聞社継続

ゆりこ による 16:33:18 の投稿
カテゴリー: モバイル・携帯電話,阪神タイガース
タグ: , , , ,

NTTドコモが、8月1日よりiチャネルをリニューアルすると発表しました。ポイントは、雑誌、音楽チャネルの追加と、情報提供元を毎日新聞社から日本テレビ放送網株式会社に変更することです。iチャネルにまで「脱・毎日新聞」が波及してしまいました;-)

もっと大事なこととして、関西契約のユーザーにとってはうれしいことに、芸能・スポーツチャネルは「神戸新聞社」からの配信が継続されることになりました!! そりゃ「日本テレビ」からの配信では、阪神タイガースファンから反乱が起きそうな内容になりそうですから、妥当な判断です。全国1社体制になって心配したのが「iチャネルの関西特別体制がなくなること」だったので、継続されるのはやれやれです。

J-PHONE は全国1社体制になって、各地域に見合った施策ができなくなった (料金プランの全国統一 etc) ために没落した (Vodafone に買収) のですが、さすがにドコモはその轍を踏むことはしてなさそうですね。

2008-07-25
晴れ

阪神タイガース応援ウィジェット Tigers 2008 バージョン 0.8.5

ゆりこ による 00:29:23 の投稿
カテゴリー: WordPressハック,阪神タイガース
タグ: , , , ,

マジック番号ロゴ一覧画像

快進撃を遂げた 2003年星野阪神の再来です!! われらが阪神タイガースのリーグ優勝を応援すべく、WordPress ウェブログに現在のマジックナンバーを表示するウィジェット Tigers 2008 のバージョン 0.8.5 をリリースします。0.8.0 からの違いは以下の通りです。

  • 数字デザインを変更できるようにしました。
  • タイトルと数字ロゴの間にマージンを空けるようにしました。
ダウンロード: tigers085.tar.bz2 (2.2MB)

利用者のみなさんへのピンバック: telmina.com

数字デザインを変更できるようにしました。前バージョンは、数字ごとのデザインは違いますが、同じ数字に対するデザインは固定なので、もし多くのサイトにインストールしてもらったとき、それらのサイトで全部同じロゴデザインになります。これが「なんとなく気持ち悪い」ように感じました。やはり設置者がそれぞれ好みのデザインを選びたいですよね (そして、どのデザインが人気あるか知りたい ;-) )。とはいえ、10種類のデザインすべてで1〜45の数字を作るのは大変だったので、デザインは7種類に絞りました。なお、従来の「バラバラ」設定も残してあります (こちらは10種類 +α)。数字1つ1つに独立した画像ファイルを割り当てているので、配布ファイルは 2.2MB (!) と巨大化してしまいました。あまり頻繁なアップデートはできなさそうです ;-)

次はマジックナンバーの自動計算機能をつけたいと思います。計算自体は簡単なのですが、順位表の取得間隔と取得結果のキャッシュを工夫する、マジックナンバーを手動入力したら暫く自動計算させないようにする、などの細かい調整があるため、ちょっと時間がかかるかもしれません。なお、「マジックが消滅する」という事態は想定しないことにしました。マジック消滅を判断させるのはちょっと面倒だからです。

[追記 21:30] 今日は、タイガース vs ドラゴンズの直接対決に勝利しましたが、ジャイアンツも勝利したため、マジックは1つしか減りません。現在のマジック対象チームはジャイアンツに移っています。厳密に計算すると、次のようになります。ドラゴンズは44勝42敗で残り54試合、残り全勝すると98勝42敗で勝率0.700です。タイガースは試合数143なので(引き分け1を除くため)同じ勝率になるには100.1勝必要です。ジャイアンツは48勝41敗残り53試合なので、残り全勝すると勝率0.711です。143試合換算で101.7勝です。結果、タイガースは102勝すれば優勝できるので、今の勝ち数58を引くと「マジック44」と算出できます。

2008-07-26
晴れ

WP-PageNavi を使わずにナビゲーション表示

ゆりこ による 00:35:21 の投稿
カテゴリー: WordPressハック
タグ: ,

ナビゲーションのサンプル画像

複数ページをいっぺんに飛べるナビゲーションを実現するプラグインとして WP-PageNavi は人気があります。しかし、このプラグインは、WordPress のバージョンに応じて使用するバージョンが異なっていて、ちょっと使いにくい面があります。

実は、WordPress の標準機能として、こういうナビゲーションを実現するテンプレートタグが存在します。管理パネルなどで使用されています。そこで、テーマでこのテンプレートタグを使えば、WP-PageNavi を使うことなく同等の機能が実現可能です。([追記: 2008-08-06] 根本的に変更しました)

<div class="tablenav"><?php global $wp_rewrite;
$paginate_base = get_pagenum_link(1);
if (strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()) {
	$paginate_format = '';
	$paginate_base = add_query_arg('paged', '%#%');
} else {
	$paginate_format = (substr($paginate_base, -1 ,1) == '/' ? '' : '/') . 
	user_trailingslashit('page/%#%/', 'paged');;
	$paginate_base .= '%_%';
}
echo paginate_links( array(
	'base' => $paginate_base,
	'format' => $paginate_format,
	'total' => $wp_query->max_num_pages,
	'mid_size' => 5,
	'current' => ($paged ? $paged : 1),
)); ?></div>
<div class="tablenav"><?php echo paginate_links( array(
	'base' => trailingslashit(get_pagenum_link(1)) . '%_%',
	'format' => user_trailingslashit('page/%#%/', 'paged'),
	'total' => $wp_query->max_num_pages,
	'mid_size' => 3,
	'current' => ($paged ? $paged : 1),
)); ?></div>

base, format の部分は、パーマリンク設定によって変更が必要です。標準のパーマリンクの場合は以下のようにしてください。←新しいコードは両方対応です。

'base' => add_query_arg( 'paged', '%#%' ),
'format' => '',

これだけだと見た目がいまいちなので、style.css に以下の記述を入れてください。なお、当サイトでは違う色にしています。

.tablenav {
	color: #2583ad;
	background:white;
	margin: 1em auto;
	line-height:2em;
	text-align:center;
}

a.page-numbers, .tablenav .current {
	color: #00019b;
	padding: 2px .4em;
	border:solid 1px #ccc;
	text-decoration:none;
	font-size:smaller;
}

a.page-numbers:hover {
	color:white;
	background: #328ab2;
}

.tablenav .current {
	color: white;
	background: #328ab2;
	border-color: #328ab2;
	font-weight:bold:
}

.tablenav .next, .tablenav .prev {
	border:0 none;
	background:transparent;
	text-decoration:underline;
	font-size:smaller;
	font-weight:bold;
}

これで、ほぼ WP-PageNavi と同等の表示になりました。というか、WordPress のデフォルトテーマがこうなっていてもいいと思うんですが……。

WP-PageNavi サンプル画像

[追記] WP-PageNavi は、旅行記で以前ちょろっと使っていましたが、「最初へ」が「前へ」より左にあったり、「最後へ」が「次へ」よりも右にあるのが嫌だったので改造していました (「前へ」を「最初へ」よりも左に持っていく等)。論理的には不自然ですが、「一番左/右にあるものをクリックすれば、1ページずつの移動になる」わけで、直感的であり使いさすさは上だと思います。paginate_links() はまさにそういうナビゲーションを吐き出すので、「よくできている」と思います。みなさんも、ぜひお試しください。

[追記 2008-07-27] パーマリンク構造がスラッシュで終わってない場合 (/%year%/%monthnum%/%day%/%postname%.html のような場合) は不具合が出てしまうため、対策したコードに変更しました (掲載したコードは変更ずみです)。厳密には「1ページ目」へのリンクにスラッシュが残ってしまいますが、WordPress 2.3 以降では自動的にスラッシュなしにリダイレクトされるため Not Found にはなりません。これを回避するにはちょっとコードの改良が必要っぽいです。

[追記 2008-08-06] パーマリンク構造を設定していても、検索などクエリー文字列を使った URL だと動作が変でした。このため、URL にクエリー文字列を含むかどうかを判別させるようにました。パーマリンク構造がスラッシュで終わっていない場合にも対応しています。

WP-Cache 設置

ゆりこ による 14:58:39 の投稿
カテゴリー: WordPressハック,更新履歴
タグ: ,

旅行記の方で設置していた WP-Cache ですが、旅行記での設置はやめて、当サイトで設置することにしました。こちらの方がアクセス数が多いこと、更新間隔は半日に1回程度であることが理由です。

で、設置作業をしていると、「WP-Cache および WP Suer Cache と併用する場合」の記述が、wp-content/ ディレクトリーの移設に対応していないことが分かりました。そもそも、wp-cache-config.php が wp-content/ の場所を決め打ちしているので、当面はこれでいいのかも。WP-Cache や WP Super Cache が wp-content/ の場所変更に対応したら、この記述も修正が必要ですね……。

2008-07-27
晴れ

Lightweight Google Maps 1.40 ベータ版(その2)

ゆりこ による 13:56:00 の投稿
カテゴリー: WordPressハック
タグ: , ,

WordPress 用 Google Maps プラグイン「Lightweight Google Maps」のバージョン 1.40 ベータ版(その2)を配布いたします。1.30 より大きな変更を加えたため、ベータ版を配布して広くテストを募ることといたします。ベータ版その1からの変更点は以下の通りです。

  • Ktai Location 1.0.0 以降で導入した、Lat_Long フィールドの第3引数 (高さ) への対応が不十分だったため、再度修正しました。以前のバージョンおよびベータ版その1では、高さフィールドを持つ Lat_Long フィールドを認識しない場合がありました。
  • 独立の地図ページを開いたときは最新の位置情報の情報ウィンドウが出るようにしました。また、投稿に出た地図のマーカーをクリックして独立の地図ページにジャンプしたときはその地点の情報ウィンドウが出るようにしました。
  • ベータ版その1で、カテゴリーでの絞りこみ、キーワードタグでの絞り込みが動作していなかった不具合を修正しました。
ダウンロード: lw-google-maps140-beta2.tar.bz2 (30.0KB)
2008-07-27 14:40 ごろ、軽微な不具合を修正した配布アーカイブに差し替えました。

ベータ版(その3)をリリースしました。

独立の地図ページを出したとき、最新の位置情報に情報ウィンドウを出すようにしました。投稿についている地図をクリックして地図ページに飛んだときは、その地点の情報ウィンドウを出すようにしました。従来は何も出なかったため、マーカーが詰まっている場合、どれがどれやら分かりにくいという問題がありました。今回はそれが改善されています。

ユーザー視点と作者視点

今ごろ気がついたのですが、wpmob, wpmobExpress の作者さんから「そっとしておいてもらえると嬉しい」と言われていました (リンクするかわりに引用しておきます)。「作者の視点」としてはまさにその通りで、そう言いたい気持ちもよく分かります。

あと最近、ソフトウェアを批評する方のサイトから良くリンクを頂いているようですが、正直そっとしておいてもらえると嬉しい。

紹介して頂けるのは本当に有り難いのですけれど、単なる趣味としてやってんだから類似したソフトウェアといちいち何回も細かく比較されるのは不快です。
自作のソフトウェアの機能アピールに当て馬として使われるのはもっと不快です。

他のソフトを引き合いに出して自作をアピールするなら、もっと優秀なソフトウェアのみ選出すると良いでしょう。
拙作は明らかに「機能不足」で「時代遅れ」なソフトウェアなワケだから無視して下さい。

ただ、わたしが「メール投稿ツールの比較表を作った」のは、純粋にユーザーの便宜のためでした。WordPress 用メール投稿ツールは、日本語に対応したものだけでも7種あり (Ktai Entry 含む)、選択基準を提示すべきではと考えたのです。網羅性を重視したため、見つけたものはすべて掲載しました。そして、ユーザーの立場としては「機能の劣る点」「問題点」も重要な情報ですから、○×表として記載したり、日本語ファイル名の対応などを確認したわけです。確かに「作者としての立場」を考慮しない書き方なのはまずかったですが、「作者さんにはがんばってメンテナンスしてほしい」という願いがありました。

「当て馬」があるとすれば、それは拙作の wp-mta および、Otsukare さん作の wp-shot になるでしょう。wpmob および wpmobExpress は、古いというより「枯れている」というのが合っていると考えていて、けなす意図はありません。優劣を判断してツールを選択するのはユーザーですから。

ついでに書いておくと、WP MOBILE の非難は、どちらかというと作者視点セキュリティー啓発者としての活動です。同様の機能を持つプラグインを作っているために「ライバル潰し」と誤解される可能性が大なのですが、あくまで「危険なプラグインの啓蒙」です。Ktai Syle は、「安全なものの代替案」として提示していると考えてください。(その割にバージョン 1.3x はバグが多くてご迷惑をおかけしましたが……)

幸い、WP MOBILE はユーザーがほとんどいなくて安心しているのですが、Mobile Eye+アダルト広告問題が見つかってしまい、これを啓発せざるを得ないのは残念なところです。セキュリティー欠陥ではないので「ほっとけばいい」という考えもあるでしょうが、危機管理という面では放置できないネタなので、広報しています。ライバルとなるソフトウェアを開発している人が言うのは、告知効果という面ではいまいちなので、利害関係のない第三者にやってもらいたいところです……。というか、まおうさんに修正して頂くのがベストですね ;-) 例えば、URLGATE 機能にリストアップするサイトを個別に ON/OFF できるようにして、画像リサイズ/画像URLGET/ファイルシーク/pic.to の横に「アダルト広告注意」と書いておく (デフォルトはすべてオフ) などの実装が考えられます。

ユーザー視点としてみると「便利なものを使いたい」「機能豊富なものを使いたい」となるでしょうし、多くのプラグイン作者は「自分が必要なものを作りたい」「ハック欲を満たしたい」となるでしょう。わたしの場合、そこに加えて「セキュアなものが普及してほしい」「危険なものは使うべきではない」という考えも持っています (「使うべきでないプラグイン12選」はその一例)。そのへんのバランスはなかなか難しいですね。WordPress コミュニティーに「セキュリティーを重視する」という文化が醸造されればいいのですが……。

2008-07-28
晴れ

Mobile Eye+ のパッチを作ればいいのかも

ゆりこ による 03:40:38 の投稿
カテゴリー: WordPressハック
タグ: , , ,

前エントリーMobile Eye+ の問題について述べたのですが、まおうさんの動きが鈍そうなら、「Mobile Eye+ に対するパッチ」を作るのはどうだろうか、と思いつきました。PHP5 未対応環境におけるツールとして Mobile Eye+ は有用なので、「まずいと思われる部分」を修正できればよさそうです。あくまで「作者にパッチを提供する」というスタイルにしたいので、差分ファイルだけの配布がよいでしょうか。

  • WordPress 2.6 対応
  • URLGATE 機能で、外部サービスを個別に ON/OFF する。
  • URLGATE 機能はデフォルトで OFF。
  • 省パケ機能は、半角カナの ON/OFF 機能に変更する。それ以外は使用に決め打ち。
  • ブログのパーマリンクは「使用する」に決め打ち。(「使用しない」はWordPress 2.3 以降で不具合が出る)
  • コメント投稿受け付けファイル mobile-comments-post.php を mobile_eye ディレクトリー配下に移設した方がいい?? (配布ファイルとインストールの簡易化)
  • 設定画面や附属テーマのフッタのリンク修正。
  • その他、細かいバグの修正

[追記 2008-07-29] WordPress 2.6 対応 (wp-config.php, wp-content の移設対応) は大幅な修正が必要そうなので、パッチ作成者の仕事ではないと判断して、やめておきます。省パケ機能も、まおうさんの実装意図を尊重してそのままにしておきます (単に変更が面倒という説もある ;-) )。

yuriko-wp-ドメイン名、というアドレス

ゆりこ による 07:28:46 の投稿
カテゴリー: 更新履歴
タグ: , ,

ウェブサイト/ウェブログのオーナーさんで、わたしのコメントを頂いた方はご存知と思いますが、メールアドレス必須設定の場合「yuriko-wp-ドメイン名 (あっと) ゆりこねっと」という形式のアドレスを使っています。コメント投稿先が http://www.example.com/ の場合、「yuriko-wp-example.com @ ….」とするわけです。

これは qmail の拡張メールアドレスを使って生成したもので、きちんとメールが届く正当なアドレスなのですが、初めて見る方にはちょっと不思議、ないし不審なものかもしれません。そこで、「問い合わせ」ページに説明を入れて、今後書くコメントは、ウェブ URL の欄にこの問い合わせページのアドレスを書いてみることにします。これで、「何か変なアドレスやなーー」と思った人でも理解しやすくなるかと思います。

同様のテクニックは Gmail のアドレスでも可能です。しかし、Gmail の場合は、そもそもスパムが届かないので、策を講じなくてもいい気がしますね……。

2008-07-29
晴れ

端末識別情報の蒐集はリスクが大きい

ゆりこ による 08:27:59 の投稿
カテゴリー: WordPressハック,モバイル・携帯電話
タグ: , , ,

Ktai Style バージョン 0.98 から、携帯電話でのコメント投稿時に、端末識別情報を要求できるようになっています。バージョン 1.30 からは、iモードIDにも対応しています。この機能を付けたのは、荒らしコメントに対応するためでした。ケータイの場合 IP アドレス制限を行うことができないため、端末識別情報で投稿者を区別するしかないためです。ただし、まだ端末識別情報でコメント投稿を拒否する機能はありませんし、設定パネルの説明にも「『送信を必須』にしても、フルブラウザ・PC サイトビューアー等に切り換えれば回避できます。通常は『必須ではない』を選択することをおすすめします。」と書いてある通り、実効性は少し疑問があるため、オマケ機能に近いものです。

しかし、iモードIDの登場以降、端末識別情報を蒐集することはリスクが大きいことが指摘されています。高木浩光さんの日記「『日本のインターネットが終了する日』あとがき」では以下のような記述があります。

これが、住所氏名と契約者固有IDを含むデータを流出させてしまった場合には、被害者に具体的な損害が生ずるようになる。被害者は、どこのサイトに行っても住所氏名がバレてしまうという事態になるので、携帯電話の契約者固有IDを変更する必要に迫られ、改番手続きないし契約の解除と再契約などが必要になる。携帯電話会社によっては手数料を請求するところもある。また、契約者固有IDと住所氏名の漏洩は、任意サイトにおける過去のアクセス記録についてもそれが誰のものだったかバレてしまうという被害をもたらすので、被害者の精神的苦痛は大きいと判断される可能性がある。原状回復のために被害者にかかる作業の負担もあり、それらの損害を、漏洩させた企業に賠償請求することができるようになると思われる。なにしろ、被害の発生原因が漏洩させた企業にあることは明白だ。

ウェブログのコメントに「自身の住所氏名や電話番号」を書くことはめったにないでしょうが、端末識別情報を蒐集することはこのようなリスクがあることを意味します。Ktai Style の「端末識別情報の要求」を「必須」に設定する人すべてが、この問題を認識しているのならいいんですが、附属ドキュメントにはそこまで詳しく書いてないので、安易に「必須」にする人がいるかもしれません。次期バージョンでは記述を詳細にしなければなりませんね。機能をオンにするときは、JavaScirpt のダイアログを出して「本当に端末識別情報の要求を必須にしますか?」と注意を喚起するようにしましょう。また、各サイトのプライバシーポリシーの改訂も行うことを指南した方がよさそうです (Yuriko.Net のプライバシーポリシーでは、端末IDは個人情報と規程していますが、コメント投稿時に必要とする理由が分かりにくい)。

ちなみに、Ktai Style の「簡単ログイン」機能の実装が遅れている理由は、「端末識別情報だけでログインするのは危険」という理由が大きいです (ウィルコムで使えないというものあります)。今のところ、Ktai Style 2.0 で予定している「クッキーによるセッション管理」が実現したら、「クッキーを保存したままにする」という実装方法にすることを検討しています。つまり、Ktai Style 1.xx 系統では自動ログインはできない予定です。