カテゴリーアーカイブ: WordPress

Aug 9 2009

We Love WordPress in Susukino (番外編)

いきなり番外編から始まる、We Love WordPress。 :-)

日本の WordPress ユーザの間で “We Love WordPress” というロゴがはいった写真をとろうじゃないかと、ちょっとしたブームになったのが 2006年。

あれからはや3年。 たとえば、Masayan さんのところ。

WE LOVE WORDPRESS No.1

WE LOVE WORDPRESSWE LOVE WORDPRESS

[左] 会社の入り口にかけられていました。本日休業と違うのねん。 :mrgreen:

[右] 裏に回るといろんな廃棄物が・・・。おお、こんな風に汚れるとは芸術的。 :x

すばらしい。 なんとその数、No.17 まで続けておられます!

WE LOVE WORDPRESS

我が hiromasa.* 系では、団扇 + 浴衣で毎年撮影。 今年もその方向性、ひとつもかわらず(笑)

舞台裏を明かすと、撮影は毎年「すすきの祭り」と呼ばれる繁華街すすきので行われるお祭りで行われています。 といっても基本的に飲んでいるだけなんですが(笑)

すすきの祭りは、いわゆるすすきの区画の道路を封鎖し、歩行者天国を構成した上でそこにステージや屋台をだして行われます。

090808_190550_ed

090808_202709_ed

という感じで、外の屋台でのんだりたべたりできる寸法です。 ステージもいろいろイベントやっていてにぎやかであります。 :-)

hiromasa.another presents We Love WordPress 番外編。

なんで番外かというと携帯電話で撮影した写真だからです。。 デジカメ高画質版はややあとにて。 :-)

090808_212715_ed

090808_214755_ed

 090808_221126_ed

浴衣はよいものですなぁ。

少し検索すると、往年のみんなの We Love WordPress 写真がでてくるとおもいます。 超かわいーのもありますゾ。

そんな感じで、We Love WordPress、思い立った方、撮影してはいかがでしょうか。 トラックバックとかもらえるとうれしいなぁぁぁ。 :)

Jul 20 2009

wp-kotodama 1.00 & wp-kyodeki 1.00 リリースと WordPress のウィジェットとオブジェクト指向

なんだかリリースお知らせばっかりですが(笑)、wp-kotodama と wp-kyodeki を JSeries のほうにリリースしましたのでお知らせします。 いわゆる Recent Comments と、Todays Popular を表示する WordPress 用ウィジェットプラグイン2種類です :-)

kotodama は旧 widget、kyodeki は新 widget の仕組みをつかっていますので、ソースが気になる方はみてみてください。 せっかくなのでここで新ウイジェットの仕組みとかも書いてみます。

WordPress Plugins/JSeries » wp-kotodama (投稿コメント表示ウイジェット)

サイドバーなどに、最近投稿されたコメント者名とその親記事へのリンクを出力するウィジェットです。

WordPress Plugins/JSeries » wp-kyodeki (本日人気の記事表示ウィジェット)

サイドバーなどに、本日人気の記事表示の一覧とそのアクセス回数を表示するウィジェットです。

wp-kyodeki で既に .another リリース版をおつかいの方は、上書きしていただければと思います。 パスワード付き投稿も集計対象にしていたのを修正しています。

kyodeki50

 kyodeki51

wp-kotodama のほうは修正ありませんのでそのままでOKです。

kotodama02

kotodama01

なお両方ともウイジェットといいつつテンプレートタグでも動作できます。

kotodama_get_comments($limit = 7, $gravatar = false, $size = 18)
 
the_kyodeki($count)

それぞれ関数定義はこんなかんじなので、<?php kotodama_get_comment(); ?> とか <?php the_kyodeki(); ?> とかをテーマ内にかいてあげれば、ウィジェットないテーマでも使えます。 引数はのりでかいてください。 :-)

さて、WordPress の Widget システムですがご存じのように 2.8 からつくりかたが変わっています。 ホントは古いつくりかたの kotodama のほうを新しくかきなおそうかとおもったのですが、コアの新旧変換ロジックもおもしろいのでそのままにしました。

新と旧ウィジェットシステムの大きな違いは、マルチウィジェットのかきやすさです。

kotodama はどこかひとつ配置したらもう配置できません。 kyodeki ではいくつでも配置できるのが分かると思います。 また同一ウィジェットで、配置によって異なる各設定も別に保持できます。

旧ウィジェットシステムではマルチしたい場合は、自分のプログラムでマルチになることを意識してかかなければならずで結構大変だったのですが(kotodama はしていません)、新ウィジェットシステムでかくと何もせずともマルチの制御をシステムでやってくれるようになっています。

ちらっと仕組みを書くと、新ウィジェットシステムは、クラスの継承を行う形で処理をかくのがキモです。 extends WP_Wiget ってやつです。

クラスの継承というのがよくわからない方は、コアにある WP_Wiget の中身(結構長いぜ)を全部コピペして自分のソースにはりつけたと思ってください。 コピペはあんまりなので extends ってかくだけでOKなようになってると思ってもらえれば、とりあえずは正解です(笑)

WP_Wiget にはウイジェット状態維持(配置場所やオプション)、その他管理画面の入出力が便利なようにする処理がはいっていて、自分がしたい処理の部分だけ書き換(オーバーライド)すると簡単に WordPress のウィジェットとして成立するようになっています。

で、ここからはクラスの妙。 クラスは定義するだけでは動作はせず、インスタンスというものをつくる必要があります。 これは言葉がめんどくさいだけで、実質的には構文で「new クラス名」ってかくだけなのですが、これをやってくれているのは今回から WordPress のコアです。

インスタンスはひとつのクラスの定義から複数作成することができます。 振る舞い(メソッド)は同じだけど、値が違う・・・。 まさにマルチウィジェットです。 必要時に必要な数だけ WordPress が該当ウィジェットを new してくれるので、こっちは考えなくてもマルチになってくれるという寸法です。

うーん、オブジェクト指向でよくある「車クラスを継承してカローラクラス」をつくります。 なんて説明よりなんて実践的(笑) 実際のところオブジェクト指向のとっかかりとしては、継承の感覚(さっきコピペっていったところ)より、ひとつのクラスから複数のインスタンスがつくれる感覚の方が、実例がないとつかみづらいですよね。 カローラは大量生産できるのです。

というわけで、オブジェクト指向まで勉強できちゃうすてきな WordPress の巻でした。 :-)

Jul 19 2009

wp-kougabu 1.10 リリース

画像付きアーカイブを作成する WordPress プラグイン wp-kougabu 1.10 を JSeries のほうにリリースしましたのでお知らせします。

変更点は、画像のアスペクト比率維持モードの搭載と、処理の高速化です。 1.00 をお使いの場合は上書きしていただければと思います。 images 内のフレーム画像も増えていますので、忘れずにアップロードしてください。 :-)

1.01 プレビューをお使いの方も、いただいたレポートを元に、途中 CVS でいくつか変更していますので念のため上書きしていただけると助かります。

ダウンロードは JSeries よりです。

WordPress Plugins/JSeries » wp-kougabu (画像付きアーカイブ)

WordPress の投稿やページにアップロードされた画像ファイルを抽出し、サムネイルでページに一覧表示するショートコードを提供します。過去に投稿した画像をサイトに一覧表示しそこから本文にリンクされる、画像付きアーカイブのようなプラグインです。

アスペクト比率維持モード搭載により、画像サムネイルが若干かわっています。 1.00 の方は現在あるキャッシュが優先になります。 wp-content/cache/wp-kougabu 内部のファイルを一度削除すると新画像になります。

kougabu0a

いままでの表現でかまわない方はキャッシュ削除は不要です。 次回の生成からアスペクト維持モードで生成されます。 混在を嫌う方は、wp-kougabu-resize.php の先頭行を以下のように変更してください。

//define('KOUGABU_FRAME_NAME', 'nashi');
//define('KEEP_ASPECT', true);
 
//for version 1.00 compatible
define('KOUGABU_FRAME_NAME', 'maru');
define('KEEP_ASPECT', false); 

これで表現はいままで通りの引き延ばしになります。 1.10 の高速化(といっても体感ほとんど分からなそうですが)だけ対応されるです。

さてさて、次期 WordPress 2.9 はメディア機能がパワーアップするようですね!

WordPress | 日本語 » 2.9 メディア機能のアンケートに投票を!

先週の水曜日、コア開発チームと多くの貢献開発者が IRC の #wordpress-dev チャンネルに集まりました。このチャットの目的は、現在開発フェーズに入りつつあるバージョン2.9に含める機能について話し合うことでした。2.9ではメディア関連の機能(訳注: 画像・動画・音声他のファイルアップロードや管理など)に集中することを計画してきており、予想通りメディア関連の機能についての話題が大半を占めました(*注)。

まだ予定は未定と言うことですが、

メディアメタデータ (Media Metadata): メディアファイルに対してカテゴリーやタグを指定できるようにします。

投稿サムネイル (Post thumbnails): 投稿・記事・抜粋と共に表示する画像を選べるようにします。

とかいいですね~。

メディア機能はぼくも好きな機能のひとつなのでどうなっていくのか楽しみです。 :-)

Jul 12 2009

wp-kougabu 1.01 & wp-kyodeki 1.00 プレビューリリース

画像アーカイブプラグイン wp-kougabu 1.01 と、いわゆる Todays Popular な記事の一覧を表示する新しいプラグイン wp-kyodeki をつくってみたので、とりあえずここでプレビューリリースしてみます!。 :-)

まず、wp-kougabu ですが、処理で遅い部分があったのの修正と、サムネイル画像のアスペクト比率がくるっていたのをなおしています。

wp-kougabu.tar.gz (CVS HEAD)

いま kougabu をお使いで、試験してみたい方はいれてみてください。 キャッシュを削除すると新形式で画像が作成されます。

kougabu50

こちらが新サムネイル形式です。 左右に灰色がでているとおもいますがこれが比率がくるっていた部分です。 現行版は引き延ばしていました。

(2009/07/13 追記)

うちの専属デザイナー(勝手に専属化。。)から、それなら内枠があるのはへん(?) という指摘がありましたので、対応しました!

kougabu56

うむ、よい。 ついこんもかわいくなりました。

kougabu55

比率維持時は内枠を消すように修正して、CVS HEAD にコミットしてあります。 images の画像も増えていますのでこちらもアップロードしてください。

また、現行版の”画像いっぱいモード”も define で選択できるようにしています。

/******************************************************************************
 * WpKougabu Resize - Define
 *****************************************************************************/
 
//for version 1.00 compatible
//define('KOUGABU_FRAME_NAME', 'maru');
//define('ASPECT', false);
 
define('KOUGABU_FRAME_NAME', 'nashi');
define('KEEP_ASPECT', true);

現行版の表現の方が好みの方は、wp-kougabu-resize.php の上2行のコメントアウトをはずして、下2行をコメントアウトしてください。 で、うえの ‘ASPECT‘ ってなっているのは、KEEP_ASPECT に修正してください。。(まちがえです、リリース版では修正しておきます)

(2009/07/13 追記おわり)

また、wp-kougabu にはキャッシュを作成する非同期側と本体側とで通信をするためのデータが処理上存在するのですが、この容量が大きくなって処理を重くする可能性があったため改善しています。 こちらはいれるだけで機能します。 キャッシュの削除は不要です。

つぎ、wp-kyodeki のほうですが、現在うちのブログの右サイドバーにでている、「本日アクセス数の多い記事一覧」を出力する widget です。

kyodeki50

いままでは bsuite プラグインで出力していたのですが、term 系のテーブルに reffer 情報などをアクセスごとに書き込む動きがあったため、アクセスごとにテーブルレコードが増える可能性がありました。

まぁまぁそれは仕様なのでよいのですが、ぼくの場合は本当に Todays Popular の出力だけを使いたかったのでちょっと余計。。

というわけで、いいかげんですがコンパクトな処理のものを自分でかいてみました。

wp-kyodeki.tar.gz (CVS HEAD)

widget “表示時に”カウントする仕組みをとっています。 また、Today だけなので翌日にはそのデータは捨てる仕様です。 なのでデータ増加はその日の範囲内だけになります。

一応、プログラムは新 widget 形式対応にしてみました。 これによりマルチ widget もいけますが、アクセス解析はひとつなのですべてに同じデータが表示されます。 別にしたらかっこいいかな、とも思いましたが使い道なさそうなのでやめました。。(笑

kyodeki51

WordPress にログインしている人のアクセスはのぞきます。 その他はボットなどのアクセスもそのままカウントしますし、同一 IP からの連続アクセスも複数としてカウントします。 ありありルールです。 まぁ1日の範囲なのでちょっとしたランダムポストみたいなイメージです。 :-)

また、widget 使っていない場合はテンプレートタグが使えます。

<?php the_kyodeki(6); ?>

とテーマにいれると同様のものが出力されると思います。(こちらのパターンは hiromasa.zone のほうに試験をかねて導入してみました)

kougabu & kyodeki とも CVS HEAD リリースです。 もしいれてなにか変なところあったら教えてください。 コミットしておきます。 :-)

とりあえず、今日は前から気になっていたところの修正からでした。。 もっとお休みがほしいであります。(笑)

Jun 13 2009

WordPress 2.8 の xmlrpc 経由の投稿で記事とメディアの関連がつかない場合

WordPress 2.8 リリースということでみなさん続々とアップデートされていますね! :-)

そんなこんなで、twitter をのぞいていたら 2.8 以降の投稿で wp-kougabu の画像がでてこないという話がちらほら。 なんかやらかしたかと思ってみてみたら、どうも kougabu じゃない模様。 コアの不具合なのか、xmlrpc 経由の投稿だと記事とメディアがくくりつかない現象がでているようです。

記事とメディアのくくりつけは管理画面のメディアライブラリでみることができます。

xmlrpc02

ちょっと小さくて見づらいですが、”リンク先” という項目があって記事名がでているのが見えていると思います。 これがでているメディアは、記事が結びついているということになります。

wp-kougabu を使われている方は気がつきやすかったのですが、どうも 2.8 で xmlrpc 経由で投稿するとうまくこのリレーションが結びつかないようです。 実際には、(wp_)post テーブルの post_parents という項目で制御されています。

なんでだろーとおもって、xmlrpx.php を追っていく。 と、

$post_id = –1;

動きとしては、まず post_parents を –1 の未確定状態として画像を (wp_)posts に登録して、その後のシーケンスで –1 になっているものを探して、記事の id で post_parents を上書きするようになっています。

だがしかし、(wp_)post をみると 0 で登録されているのです。 なぜ?

ふと、(wp_)posts テーブルの DDL をみてみると、

CREATE TABLE wordpress_28x.wp_posts
(
    (略)
    ID                          BIGINT UNSIGNED NOT NULL,
    post_parent                 BIGINT UNSIGNED NOT NULL,
    (略)
)

ありゃ、UNSIGNED になっていますねぇ。。 これでは –1 は入りません。

というわけで、超ハックコードですが直し方。

xmlrpc.php を –1 で検索して、それを 999999 とかにしてください。(コメント含めて 3カ所)

とりあえず、なおるとおもいます。。。 このコードはいんちきなので、緊急避難という扱いでお願いいたします。

しかしながら xmlrpc 的にはこのへんあんまり変わってないぽいんですよね、、、なんでいままで動いていたか追う元気はありませんでした。 原因も間違ってたらごめんなさい。

2.8 ではデータベースのフィールドをみて SQL を組み立てるようになっているのですが、そのへんとからんで潜在的な不具合が出たのかもしれません。

xmlrpc01

trac みてないけどもうあがっているかな・・・。 xmlrpc 投稿をしている方はみてみてください~。

この投稿がうちのギャラリーにでてばとりあえずは、直ったということで。(ほんとにとりあえずですが。。

あとあと、これはまったく別件ですが、xmlrpx 経由の投稿でタグが削れるという環境的な問題が起きている方は Toru さんのエントリが参考になります。 (今の xampp が該当かもしれません

さくら+WordPressでHTMLタグが消えるバグ « Waviaei

Vistaを入れ直した際に、最近使い始めてたWLWな再インストールしたんですが、ローカルからサーバへ投稿した時になぜかHTMLタグの<や>が取り除かれると言う不具合が。再インストールが原因とも思わなかったけど、原因が分からずアンインストール。

しかしその原因と対策方法がようやく分かりました。

PHP がつかっている libxml2 ライブラリの問題ですが、以下のプラグインをいれると解決することができます。 Toru さんありがとうございました!

WordPress › LibXML2 Fix « WordPress Plugins

Work around for some versions of libxml2 2.7.x that strip out brackets when parsing XML. This plugin fixes XML-RPC requests that are mangled because of this problem. The real fix for this (making the use of this plugin unnecessary) is to use PHP 5.2.9+ with libxml2 2.7.3+.

Jun 12 2009

静的 HTML に WordPress を埋め込む方法

実は昔の hiromasa.zone なんかがそうだったりしましたが、WordPress の情報を WordPress 管轄以外から取得したいときがあります。

たとえば、静的 HTML のトップページに WordPress の新着をだしたい、、とかですね。 全部のページ WordPress でやるのもおっくうってこともあるわけです。 :-)

そんな場合は以下のようなコードを使うのもひとつの方法かもしれません。

とりあえず、静的 HTML の場合は、拡張子を .php とか変更して PHP が動くようにします。

すでに、.html で他からリンクしちゃっていてリネームできないよーって方は mod_rewrite で化かすとかとかしてください。 / で終わる URL のときは、index.html をリネームして index.php にすれば OK です。

で、こんなコードを元 html に挿入します。

<?php // wp-load.php を include して WordPress をテーマなしで起動する ?>
<?php // 該当 HTML の先頭行に wp-load.php のパスを自分にあわせて以下を挿入 ?>
<?php include_once "../wordpress-another/wp-load.php" ?>
<html>
<head></head>
<body>
 
<!-- このへんまで普通の HTML かく -->
 
<?php // たとえば WordPress から最新5件のエントリ名を持ってきたい場合 ?>
<?php // 以下 7行を HTML にコピペする ?>
<?php query_posts('showposts=5'); // 最終5エントリ取得のループをつくる ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<!-- ここからWordPressのテンプレートタグをかく -->
<p><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></p>
<!-- ここまで -->
<?php endwhile; ?>
<?php endif; ?>
 
<!-- このへんからも普通の HTML かく -->
 
</body>
</html>

wp-load.php を WordPress 以外から include して、query_posts 関数でループをつくってあげれば、好みの条件でループの作成ができます。

一点注意ですが、この方式の場合 WordPress の状態、というかまぁ MySQL の動作にひっぱられるので、MySQL がよくおちるサーバだとページに不具合がでてしまう可能性があります。

それを嫌う場合、をかもとにいさんの方式が良いと思います!

Google AJAX Feed API : dogmap.jp

これを実現するために JavaScript で RSS フィードを取得して表示する方法を調べたので、自分用にメモ。

JavaScript 経由で WordPress の RSS をよんでうめこみます。 非同期なので体感表示速度的にも、をかもとさんの方式が有利だと思います。

ぼくのこの記事、 WordPress 直読みは方式は、ページに投稿を即反映したいとか RSS 以外の情報を取りたいとか、投稿を100件とりたい(笑)とかいった要件がある場合によいかもです。 WP のテンプレートタグがそのまんま使えます。

というわけで、呼ばれて飛び出て、メモおしまい。。

お休み中のためオチはないのです。 ←そこの違いなのか!?

May 25 2009

WordPress のテーマフレームワークを使ってみた

endunham さんが WordPress のテーマフレームワーク thematic を使われていらっしゃるのをみて、おもしろそうだったのでぼくもいじってみました!。 自分は HTML とか CSS のほうはてんでできないので、sandbox とかも興味はあったのですが実際には使ったことがなかったのです。

ということで素人がつかうテーマフレームワークの巻、、はじまりはじまり。。

まずは endunham さんの紹介を熟読。。

[WP徒然]テーマをthematicに変更

私が気になってた主なフレームワークテーマ達、Sandbox, Carrington, hybrid, そしてthematicWordPress公式サイトの無料テーマ配布サイトでは、thematicが一番ユーザーの評価が良かった感じなので、単純に使ってみようと思ったのでした。フレームワークなので、とーってもシンプル。これから自分用にちまちまと色着けして行くのも楽しみです。

すっぴんに近いものに色づけをしていく、という感じでしょうか! :-)

とりあえず、 hiromasa.another に適応してみる。

another01

なるほど、シンプル。 (まぁ .another はもともと白いのもあってこれだけでも十分な気がしてきます(笑)

なんとなく style.css を使って、気合いで CSS を適応していくのだろうというイメージは持っていましたが、実際にはどうするのだろうとファイル構成を見ると、 thematic/thematic-sample-child-theme というフォルダがあって、こいつをひな形として移動して wp-content/themes 直下にいれるとのこと。 なるほど~。

another03

ちょっと見づらいですが、another という名前でコピーしました。 コピーしたひな形の style.css をみると、

/* Reset browser defaults */
@import url('../thematic/library/styles/reset.css');
 
/* Apply basic typography styles */
@import url('../thematic/library/styles/typography.css');
 
/* Apply a basic layout */
@import url('../thematic/library/layouts/2c-r-fixed.css');
 
/* Apply basic image styles */
@import url('../thematic/library/styles/images.css');

なんて感じで本体の CSS を import する仕組みになっているようです。 この下に追加で CSS を指定して思い通りのデザインにしていけばよいわけですね! この仕組みは child theme という言葉が使われていました。

で、ぼくはできない CSS をがんばり、試験的に style.css を追加設定し .another と同じようなデザインをつくってみる。。

another00

な、なんとか似たようなのはできました(笑)

ここで注目すべきは再現できていない部分で、たとえば上のメニューに HOME というのがなかったりします。 これは現行、ページ一覧のテンプレートタグの直前に手書きで HOME としてトップページのリンクをいれていますが、こういったことは style.css の修正だけではできません。

あと、記事名の横に青いイメージ日付がなかったり、お天気や月齢がなかったりもします。 これらもタグを直接 index.php などに記入している部分で、同じように再現できません。

で、実はこういった”ないもの”を入れ込むための仕組みが thematic にはいろいろ備わっているようです。

  • サイドバーだけではなく、エントリヘッダ、コメント前、エントリフッタ、かつ条件付きで widget がいろいろなところに設定できる。
  • テーマの任意出力をいかにも入れ込みそうなところに、do_action がいろいろ設定されている。 そこに echo するように function.php に関数を登録すると好きなものを出力できる。
  • header.php や footer.php などの、”いつもの”ファイル名でチャイルドテーマ内にファイルをおくと、フレームワーク側ではなくこちらが優先されて使われる。

全部見切れていませんが、こういう仕組みを使うことで出力内容もある程度柔軟に行うことができるようです。 たとえば、wp-jrelated の独自画像付き出力は現在、テーマに直接記入していますが、2番目の do_action の適切な場所の関数に書き込むことで実現できそうです。

こうあっても、メニューの HOME とか、お天気とか月齢はなかなか難しそうですね。 WordPress に本来備わるプラグインのfilter を駆使していれるか、index.php をコピーしてそれに直書きするしかなさそうです。 ただ、後者はやってしまうとフレームワークを使う意味があまりなくなってしまうかもしれません。

WordPress のテーマはお約束的な PHP の記述がいくつもあります。 たとえば、ループであったりコメントフォームであったり、ヘッドに wp_head かくトカトカですが、1からつくると意外に忘れがちなことがあったりします。 コメントクローズ時の処理とか、admin ログイン時の編集ボタンの出力とか、、widget の記述も面倒だったり。

またそういったテンプレートタグも、コアのバージョンアップとともに非推奨になったり削除されたりすることがあります。

テーマフレームワークはこういったお約束部分の PHP を書くことをしなくていいのはもちろんのこと、本体と修正部分のファイルが分離できますので、なにが良いかと言えばこういった骨格(フレームワーク)部分をファイル上書きでアップデートすることができることにあると思います。

たとえばコアでコメントネストが対応され、フレームワーク側もそれに追従したとすればフレームワークファイルを上書きすれば、今の修正済みのテーマとのマージに悩ませることなく対応することができる感じです。

とりあえず!、好きな出力を好きな位置というのが最大の難関。

結構、フレームワークのコードよまなければいけないこともあったりしそうですが、できあがれば普通のテーマよりも運用はずいぶん楽になりそうです。

自由出力のキモは widget かもで、場合によっては widget 非対応のプラグインの出力を widget に変換したりしてやらなければいけないこともありそうですが、これは意外に簡単。 しかも 2.8 でつくりも綺麗になりますので、、やり方をそのうち書いてみようと思います。 :-)

May 10 2009

WordPress のソースを解析する方法

WordPress のコアファイル数は *.php だけだと、たぶん 260~270 あると思いますが、なにかしらの調査があって調べようと思うと最初はどこに何が状態になると思います。 ということで、ここは IDE の力を借りて簡単にソースを追う方法を紹介してみます。 というかぼくがいつもやっている方法です。 :-)

使っているのはおなじみの Eclipse PDT。 紆余曲折ようやく Ubuntu でも 2.0 が使えるようになったので PDT 2.0 であります。 面倒だったのでまだ英語のままです。

eclipsepdt10

これですね。

IDE というのは、プログラム言語をある程度知っています。 これが関数であるとか、ここが変数のスコープであるとか、という部分をパースしてくれているので、ふつうの検索とかより賢い検索であるとか、カーソルジャンプが使うことができます。

PHP は、言語仕様として、 requre とか include を動的にすることができるので IDE が無力になる場合もあるのですが、それでもある程度まではイケます。 動かすまでどういうプログラム構成になるか分からないというところが、PHP の最大の特徴のような気もします(笑) まぁ DI とかもそうですね。

てなわけで、ケース1。 page_navilink という関数があったとして、これってどこにあるんだっていう grep の例。

PDT では PHP Seach という機能が使えます。 ここで、Limit To を Declarations に設定すると定義部分だけ抽出して検索結果を返してくれます。

eclipsepdt11

おお、general-template.php にあるのね~。

eclipsepdt12 

ソースにぴょん。

eclipsepdt13

ふつうの grep だと、呼び元先、そのほかコメントとかにあるのもだしてきちゃうので、この Limit は賢いです。

ケース2。 じゃーこの page_navilink 関数はどこで使ってるの?

関数を改修しようとして、影響範囲を調べるのによくあるパターンです。 実は PDT には、Java IDE でおなじみの Call Hierarchy というメソッド呼び出し検索機能があるっぽくみえます。 関数なぞって右クリックして実行。。

eclipsepdt14

にゃーんも、でね~(汗)

[news.eclipse.tools.pdt] Re: ‘Open call hierarchy’ (Ctrl-Alt-H) doesn’t

Call Hierarchy is not implemented yet in PDT 2.0.

くらぁ~!(笑)

というわけで、残念ながら Call Hierarchy 機能は使えないのですが、呼び元検索であれば先ほどの PHP Serach で代用できます。

Limit を References に。

eclipsepdt15

ほうほう、これから呼ばれているのか、の図。

eclipsepdt16

なんて感じですね。 いくつかの呼び出しをみれば使い方も分かってきます。

最後ケース3。 テーマをいじってたときに、the_tags という関数の使い方を見たくなったとき。

IDE を使う一番らくな部分が、定義ジャンプです。 the_tags の定義部分にボタン一つで飛ぶ機能であります。

こればっかりは、見ていただいた方が早い!1分動画なのでみてみて~。 :-)

検索すらいりません。 F3 押すだけでどんどんとべますので、ソースを追うときは恐ろしく効率的です。 テーマ表示部分のフィルターみつけるときはこの方法が一番早く見つけられるかもしれません。 あと、PHPDoc 形式にコメントがちゃんとなっていれば、カーソルあわせでホバーもします。

さてさて、ほかにも IDE には、それっぽいところにブレイクはっておいて、そっからステップで追っていくとかいろいろ小技があるのですが、少し大きめのアプリであれば使ってみる価値はあると思います。

以上、ひろまさワンポイント(!?)でした。

May 6 2009

本当に WordPress は 5分でインストールできるのかやってみた

もう100回くらい(?) WordPress をインストールしているぼくですが、WordPress のキャッチコピー「5分でインストール」というのは検証したことがありませんでした。 いまこのフレーズ言っているか分からないですが、たしか昔はそんなだったような・・・。 ということで挑戦は受けて立つ、やってみようじゃないか!! :-)

wordpresstv01

なーんて、WordPress のインストールなんぞ 1分でできるよね (笑)

ということで、ちょっと難易度をあげて、ここ hiromasa.another をエクスポートして、ローカルに WordPress を新規インストールしつつインポートしてみます。要はテーマとか修正用の環境です。 やっぱりデータ入ってないと制作はしっくりこないもんです。

手順。

  • コアサバに SSH してデータベースダンプ、ダウンロード
  • ローカル MySQL にデータベース作成 & インポート
  • WordPress 日本語版、ダウンロード & Apache に配置
  • WordPress インストーラ起動
  • とりあえず動くようにデータベースの URL をパッチ
  • プラグインとかテーマとか何も入ってなくて動かないので解消
  • パーマリンクも再生成

という感じです。 はたして 5 分でいけるか!!

4分半でいけたようです。 :-)

そのまんま撮っただけだとつまんないので、アノテーションで説明入れています。

一応書いておくと、この手順だとローカルにデータ移行されているようにみえますが、画像とかはインターネットサーバ上をみていますし、オプション項目などでパッチが不足していくつか不具合がでるかもしれません。 まぁローカルでテーマいじったりプラグインつくっている分にはとくに問題ないので、いつもこの手順でやっています。

さて、こんなスクリーンキャストってやつですが Linux なら recordMyDesktop というソフト動かすだけでいけます。 最近の機械なら 50コマ/s (最大)まであげてやるとスムーズにとれます。 マイクで音声入れるのもおもしろそうですね。

wordpresstv02

Windows だと窓録がいいかな~。

hiromasa.another :o ) » Blog Archive » PC 操作を録画して youtube にのせてみる。

起動するとびっくりするのですが、ウインドウがマウスイベント等含めて完全透過していて、その中での様子をマウスの動き含めて余すところなく録画してくれるというすぐれもの。

まぁまぁ、ブログにのせる動画ってここぞで使わないと、拘束時間がながくて相当おもしろくないと飽きられそうなのは重々承知なのですが、たまにやってみるといいかもしれません。 :-)

この動画をこえる日を目指してがんばりたいとおもいます。

では、結果を発表します! – MMRT daily life

じゃあ、実際にその目でその様子を見ていただきましょう。 :wink:

May 3 2009

Miro HD Video Player と SongBird

WordPress.tv で WordCamp Tokyo の映像が公開されはじめています!。

インターネットというのはすごいもんですなぁ、と今更ながらに感動しつつ、WordCamp 中マイケル・ピックさんが紹介されていたオープンソースメディアプレイヤー Miro が気になっていたので導入してみました。 ネットワーク上の動画をうまくみる仕組みをもった、クライアントアプリケーションです。

Miro HD Video Player | Free internet tv and video podcast player.

RSS を Miro 上で購読させておくと自動的にダウンロードしてくれる機能があったり、bittorrent と連携して動画ファイルを各クライアント上のピアにおいておいて、サーバ帯域を節約しかつ、高速にダウンロードする機能を持っているようです。 なるほど~。

ちなみに、bittorrent クライアントが UPnP に対応していないせいか、うちはピアの一部にになれませんでした。 残念。

torrent や RSS 取得用に基本的に常駐させておくソフトのようなので、notify 部分にこっそり起動できます。

miro03

早速、WordCamp Tokyo のチャンネルをみてみました! みなさんの動画出ていますね~。

Ubuntu の標準パッケージはメッセージも日本語化済みできれいに動いています。 もちろんほかの OS 用もあります。

miro04

ぴこっとおすと簡単に再生できます。 保存された動画は、iTunes のように管理することができるようです。 便利であります。 :-)

メディアとネットワークの連携というのはおもしろいですね。 半リアルタイムでみられて、かつメタ情報が付与できるのがいいところです。

というわけで、Miro が動画なら、こちらはは音楽。 オープンソースメディアプレイヤーの SongBird

songbird01 

version 1.1 からフォルダ監視機能がうまく働くようになったので、かなりの部分で実用できるようになりました。

songbird02

手持ちの .mp3 ファイルを解析して、ネットワーク上からメタ情報を付与してくれるような機能もあります。 たとえば、WikiPedia を自動でひーてくれるとか。 このへんは、オープンソースならではというか iTunes じゃできないところですね(笑)

マスコットキャラは黒いとりさん。

かわいい。 :-)