2008年4月アーカイブ

5月17日(土)に大阪でセミナーがあります。今回は、プレゼン形式のセミナーではなくて実際にPC上でコードを書きながら行うセミナーで定員は10名。4時間がっつりやります。テキストもオリジナルで用意する予定。

遠方からお越しの方とかいらっしゃいましたら、よければついでに終わってからメシ(酒?)でも食いましょう。

以下、告知ページからそのまま転載します。

概要
Movable Typeを活用して企業サイトを構築する場合、要件を満たすためにプラグインを探し、導入するケースは多いと思います。
しかし、プラグインを探して利用するだけでは、用途に完全に合致したプラグインがない場合はあきらめて機能を削るしかありません。
この講座では、Movable Typeのプラグインを自分で実際に作成しながらその基礎を学びます。
Perlによるプログラミングの経験があるに越したことはありませんが、今回は未経験者にも理解できる内容を目指します(JavaScriptやPHP等を少々さわったことがある人なら十分です)。
開講日時
2008年5月17日土曜日 13時30分開始(17時30分終了予定)
料金
20,000円(消費税込み)
定員
10名
講師
野田純生(アルファサード有限会社 代表取締役)
ウェブアクセシビリティを重視したウェブ制作会社アルファサードにて、企業・公共機関のサイト制作に携わる。
Movable Typeのプラグインを多数作成、MT4をベースとした CMS製品「PowerCMS for MT」を開発。
「第14回WebSig会議:Movable Type 4のポテンシャルを探る」、「CSS Nite MT4LP5」等Movable Typeに関連する講演のほか、書籍「Movable Typeプロフェッショナル・スタイル」では「管理画面のカスタマイズ」について執筆。
Movable Typeプラグイン作成入門 [イメディオセミナー]

今回は、「Perlによるプログラミング未経験」の方OKとしていて、基本的なところも説明するつもりではありますが、せっかくの場ですから事前にやりたいことを考えて既存のプラグインのソースを見ておくとか、書籍に目を通しておくとかするとより当日が実のあるものになると思います。

全然関係ないっていえば関係ないんですけど、今回は会場が家の近所ということもあって(南港) 、何だか不便で遠いイメージありますけど、来てもらうと実は意外と近いのねっていわれるんです。そんなに遠くないですよ(笑)。

2008年4月23日アックゼロヨン・アワード2007授賞式が東京国際フォーラムホールで開催されました。僕は一応自社のサイトがファイナリスト(入賞)ということで行ってきました。

負け惜しみではなく、賞はとれないだろうと思っていて (あちこちで公言していましたが)、事実そうなりました。とれないだろうと思っていた理由は、つまり一次審査と二次審査で見るべきところも違うし見る人も違うから。今年は「コミュニケーションの優れたウェブサイト」です。部門はいくつかあったけれど、コミュニケーションの質以前にサイトによってコミュニケーションの対象が違うわけだから、そういう面で「小規模ウェブ制作会社」のサイトであるウチのサイト (且つ、コミュニケーションよりはショウルーム的、技術アピール、実験的な場所) が選ばれることはないだろうと思っていたのです(中小企業庁長官賞ってのがあればとれていたかもしれんけどね)。

グランプリとなった「モリサワ コーポレートサイト」をはじめ、すばらしいサイトが受賞されました。制作者の方は、このサイトに限らず、入賞サイトを是非見て学んで欲しいと思います。

余談ですけど、一次審査員の方とお話をしていて、ウチのサイトのことを「いいね」「面白い」と言っていただけて、事実点数だけは結構高くてもちろんそれは社交辞令なのかもしれませんけど、まぁそれを聞けただけでも甲斐があったというものです。

で、本題。結局、自分自身ずいぶんエントリー書くのが遅くなってしまいましたが、当日の反応をなんとなく見ていて気になったのがこれ。

当日お会い出来なかったのが残念ですが、せっかくなので最後まで現場にいた人間としての感想を書いてみたい。但し、立ち位置が違えば感じることも違う筈であるし、そのあたり私見です。

※当日の様子はこちらにレポートがあがっています。

僕は、麻生太郎氏の話は面白かったと思う。

「噛み合わなさ」ももちろん感じていた。麻生氏が登壇するまでビジネスアーキテクツの森田雄氏をモデレータとして、カフェグローブの矢野貴久子氏、多摩美術大学の宮崎光弘教授、日経BP社の勝尾岳彦氏、IMJの取締役荒井尚英氏、イメージソース代表取締役の伊藤幸治氏がディスカッション?にはならないまでもあれこれ話していたが、その内容と麻生氏の話のギャップが面白く、またアックゼロヨンの当初の「アクセシビリティ・アワード」であったことと、このアワード (ひいては日本のウェブ - 制作者) が進もうとしている方向と、麻生氏の話の内容のギャップにこそ当日最も考えさせられたのだ。

例えば携帯サイトの話。

デザインの自由度もないし、面白いことができない。だから今まではやっていないけど、iPhoneとか、フルブラウザとか、そろそろ面白いことができそうだよね。

これが麻生氏が到着する直前の話。

今回の件とは直接は関係ないのだが、一方で僕が最近感じていたことがこれ。

麻生氏は第一回のアワードから経緯を知っているのだから (且つ、忙しいんだし今年は「コミュニケーション」ですってのを理解する程の情報も時間もないんだと思う) 、きわめて「アクセシビリティ」のことを頭において話していたのだろう。もちろん「巣鴨」云々はどっかで話していた話の使い回しかもしれないけど。

だからこそ、当日は話がずれていたのだ。

  • 年寄り見てないだろう?お前ら。
  • お金持ってるぜ?
  • 携帯でウェブ?目が疲れるから見ないよ。

さて、そこでiPhoneですか?フルブラウザですか?そういった話はもちろん展開されなかったのですが (麻生氏は後で来てひとりしゃべって帰ってしまったので) 、僕が感じた違和感はまさにそこにあって、携帯電話が音声読み上げ出来る状況になり「携帯サイト」という読み上げ環境で使いやすいものを利用する手段を彼ら(視覚障害者も高齢者も)が手に入れて、そこで再びWebでかつて起こったことを繰り返そうというのだろうか?フルブラウザでAjaxを走らせるの?iPhone向けのアプリは彼らに配慮されているのか?ポインティングデバイスはやっぱり難しいじゃない!そこの議論なくして次世代のウェブデザインを語っていいのだろうか?「モザイク」を回顧して昔話を話してる場合でもないでしょうに。

だから、僕は麻生太郎氏がアックゼロヨンに対して経緯を知らないまま「お前らちゃんと考えてるのか?」とだけ言って帰ったという印象を持ったのだ。そして、あの場の空気は事実「ずれていた」。

インタラクティブ・アドアワードではないのであって、アックゼロヨンらしさとか、日本に一つくらいアクセシビリティに対するアプローチとか技術を競うアワードとかがあっても良いと思う。もちろん現状で掲げていること、考えていることがわからんでもないのですけども。

だから「くだけすぎ」「仕切りがどう」ってのはあまり気にならなかった。はっきりいってそんなこと求めちゃいないし、あの場で何かを得るかどうかは受け手次第。僕はすごく得るものがあったと思う。それは主催者の意図とは関係のないところではあっても。

そして、日本のウェブ(協会?)が僕が感じた違和感とは逆の方に走って行っても僕は一向に構わないのだ。そうであれば尚のこと、数年後にそこに立っているのは彼らではなくて自分たちだからである。

もちろん、そうならないとは思うしそう願っているけれど。現状ウチは会員でもないから、とりあえずそこから始めてみますか。


少し付け加えると、僕もそれなりに大人の事情で気を遣わないといけない立場になってきつつあるのですが、今回は敢えて書きました。とにかく当事者の方々の(例えばブログのエントリーとか)アウトプットがあまりにもなくて、そのあたりがウェブらしくないような気がしています。当日が閉鎖的とは思いませんでした。

ってことで、画像の挿入をドラッグ&ドロップで行える「SidebarImageプラグイン」ってのを上げといたんですが、

ブログ記事を書こうとして、はたと思った。新規に画像をアップロードするときは?

いやね、あんまり真面目に作る気がなかったのです。ブラウザ単独だとやっぱり現状では限界あるし、デスクトップアプリで作るとか Adobe Airでつくるとか、Adobe Flexで埋め込むとか。

デスクトップアプリは既にサクっと?作っていらっしゃる方もいますし。

とはいえ、できねーつかえねーって言われるのもなんだしさ。カっとなって書いたよ(他にやることあったのになぁ)。選択→アップロードっていうブラウザからのやり方は変わらないけど、複数のファイルが同時にアップできますよ。あと、名前 (label) もその場で付けられるし、編集アイコン をクリックするとアイテムの編集ダイアログ開くから、タグ付けとかもそこからできますよ。

画像の挿入をドラッグ&ドロップで

まぁ、なんというか制作者の方は試すだけじゃなくて、自分で書かないまでも「どんなインターフェイスが使いやすいのか」ってな視点で考えたりアウトプットして晒していくと世の中?良くなるんじゃないかなぁ。

制限事項というか、同一の名前のファイルが存在したときはチェック面倒なので強制的にリネームします。あとファイルの保存場所はブログ毎のプラグイン設定から行ってください。

2010年2月13日不具合修正及びIPホワイトリスト/ブラックリスト対応しました。最新版は以下から。

環境設定で出来ないかなぁと思って見てみたんだけど...なさそうだったので「それplu」。

1時間以内にログインが3回失敗していたら(回数や時間は設定で変更可能)そのIPアドレスからはログインできなくなります。

安全性の検証はあまりしていません。MTのログをチェックして、(設定時間内に設定回数)ログインに失敗していたら以後、正しいIDとパスワードでログインしても強制的にログアウト(画面へリダイレクト)するようになります。

プラグイン設定画面

もしもあなたが正しいユーザーで、間違ってログインできなくなったら...それは知らんw

いや、プラグイン外せるなら、外してログインしてMTのログを消去すれば元通りです。まぁその間我慢すればいいんですけどね。

もちろん、ミッション・クリティカルなサービスであればApacheの側でIPで制限するとか、正攻法で対策してくださいませ。

あと、念のため。ご利用は自己責任でお願いしますね。

4月18日修正しました。

イケてる、イケテないどころじゃなくて、インデックス・アーカイブでは動かないのとページ送り部分におかしなところがあったので修正/差し替えしました。

実装面で新たに以下の修正をあわせて行いました。

  • フィルターコールバックに対応させたので、build_pageコールバックプラグイン等の処理が反映されるようになった。
  • <MTIfPagerCurrent>タグの追加。ページ送りの部分で現在のページと一致するところのリンクを外したりが簡単。

イケてないところは以下に書いていますが、多分MTPagenateとか他の同類のものよりは比較的素直な実装じゃないかと(PHPにしなくていいし区切り文字入れて分割とかしてないし、カウンタ値とかも素直に出るはずだしbuild_pageコールバックのプラグインも使えるし、何よりページ送りの部分のタグの書き方が素直だと思う)。

Download:

ページ送り部分のタグは例えば以下のような感じで書けるようになりました。


<MTPager>
<MTIfPagerHeader>
 Page <MTPagerCurrent> of <MTPagerTotal>
 <MTIfPagerPrev><a href="<MTPagerPrevLink>">Prev</a></MTIfPagerPrev>
</MTIfPagerHeader>
<MTIfPagerCurrent>
<strong>[<MTPagerCounter>]</strong>
<MTElse>
[<a href="<MTPagerLink>"><MTPagerCounter></a>]
</MTIfPagerCurrent>
<MTIfPagerFooter>
 <MTIfPagerNext><a href="<MTPagerNextLink>">Next</a></MTIfPagerNext>
</MTIfPagerFooter>
</MTPager>

<MTEntries offset="0" limit="20">
  <MTIgnore>Some Template Tags Here.</MTIgnore>
</MTEntries>

ページ送り部分の出力結果

なので...以下、忘れてください w


イケてない。イケてないけど勢いで書いたので晒しておく。テストもあんまりしてないです。

以下のようなテンプレートを書く。インデックステンプレートもしくはブログ記事リスト系のアーカイブでのみ有効。


<MTPager>
<MTIfPagerHeader>
 Page <MTPagerCurrent> of <MTPagerTotal>
 <MTIfPagerPrev><a href="<MTPagerPrevLink>">Prev</a></MTIfPagerPrev>
</MTIfPagerHeader>
[<a href="<MTPagerLink>"><MTPagerCounter></a>]
<MTIfPagerFooter>
 <MTIfPagerNext><a href="<MTPagerNextLink>">Next</a></MTIfPagerNext>
</MTIfPagerFooter>
</MTPager>

<MTEntries offset="0" limit="20">
  <MTIgnore>Some Template Tags Here.</MTIgnore>
</MTEntries>

MTEntriesにlimit=分割したい単位の数字, offset=0を指定する。でもって「このアーカイブを分割する」チェックボックスにチェックを入れる。

テンプレート編集画面のチェックボックス

以下のようにページ送りが表示されて、ページが分割される。

テンプレートの出力結果

でも気に入らない。イケテない。イケてないのは、

  • 分割されたページの再構築時にbuild_file_filterとかbuild_pageコールバックが呼ばれない(即ちWeblogPublisherにbuildさせていない)(対応済)
  • fileinfoテーブルに保存されない(対応済)
  • ファイル名が「_」+ナンバーで、固定
  • MTEntriesタグでないと駄目で、且つ1テンプレートに分割の条件は1つだけ
  • そもそも正規表現でoffset値を書き換えるってどうよ

なので、書き直すかもしれないけれど、まぁ晒しておきます。やっぱりカスタムなアーカイブタイプとして登録するのが良いのかなぁ。

Download:

Movable TypeをMySQL(5.x)で運用し、且つ文字コードShift_JISで運用しているケースで、「表,—,ソ,噂,欺,圭,構,蚕,十,申,貼,能,表,暴,予,禄,兔」等の文字で終わっているデータ(entry_textとかblog_nameとかとにかく文字列型のデータ)が保存できないことに気づいた。サポートにも確認したけど「文字コードとしてShift_JISを利用している際、文字データの2バイト目が「0x5c」となる文字を使用した場合に発生」「MySQLの文字コードの扱いに起因する問題」とのことで、MT側の実装では対処できないとのこと。

不思議なのは、「表示」では問題なく「試算表」では問題になること(複数サーバーで確認してますが、他の環境でどうかはわかりません)。

つまり「表」等で終わっている場合にアウトになる模様(「表 」のように最後に空白文字を追加してやると保存できる模様)。

対象法2つ

一つ目はDB上はUTF-8で運用し、ファイル出力時にShift_JISに変換する方法。

ということでプラグイン (ダイナミックパブリッシングには対応しないけど) 。

ShiftJIS.pl(出力文字コードをShiftJISに、<$MTPublishCharset$>タグの出力を強制的に「Shift_JIS」にするプラグイン

もうひとつは(美しくはなく且つ強引なやり方だが)、無理矢理「0x5c」で終わる文字列を保存する際に末尾に空白文字を追加する。プラグインですべてのオブジェクトに対して処理するのは...ちょっと思いつかなかった。

手を入れるのは、lib/MT/Object.pm の892行目付近

オリジナル


sub set_values {
    my $obj = shift;
    my ($values) = @_;
    for my $col (keys %$values) {
        unless ( $obj->has_column($col) ) {
            Carp::croak("You tried to set inexistent column $col to value $values->{$col} on " . ref($obj));
        }
        $obj->$col($values->{$col}) if defined $values->{$col};
    }
}

修正後


sub set_values {
    my $obj = shift;
    my ($values) = @_;
    for my $col (keys %$values) {
        unless ( $obj->has_column($col) ) {
            Carp::croak("You tried to set inexistent column $col to value $values->{$col} on " . ref($obj));
        }
        my $str = $values->{$col};
        $str .= " " if (check5c($str));
        $obj->$col($str) if defined $str;
    }
}

sub check5c {
    my $str = shift || return(undef);
    my $format = '%X';
    $str =~ s/(.)/sprintf($format, ord($1))/eg;
    if ($str =~ /5C$/) {
    	return 1;
    } else {
        return 0;
    }
}

きれいな解決法あったら誰か教えてくださいな。

参加させていただきました。

今までにも実際のユーザーの方とお話をさせていただいたり怒られたりw色々勉強の機会をいただいたこともあるのだけれど、支援技術の進歩とかウェブの現状が日々変化していっていることを考えると定期的にこういった場で勉強するのは大切なことだと思う。

とりあえず現段階で僕が最も感じていることは表題にもしましたが「携帯サイト+らくらくホンがウェブアクセシビリティの大きなヒントとなる。」ということです。

その他感じたことについて、まだ整理できていないところもあり改めて書くかもしれませんが、以下、メモのようなもの。

代表的なソフトでの読み上げについての実演、紹介を実際のネットショッピングを使いながら行っていただきました。

対象としたのは

ほか。以下、まとまりなくメモしたものを列挙しておきます。

全盲のかた、音声ブラウザ/スクリーンリーダー

  • ファンクション/Ctrlキー等で一時停止とか、スペースで再開
  • タブ、Shift+タブでリンクを移動(結構「勘」重要、というか勘重視)
  • 「障がい」?「さわりがい」
  • ナビゲーションを飛ばすのはやっぱり嬉しい(例:日経。「音声ブラウザの方は...(注1)」)
  • ○○の方○○のかた(ほう)
  • 自治体の広報がPDFだと読めない(読めるものもある>>環境/ソフトの問題?)
  • ブレイルメモ ? 低機能な昔の電子手帳のようなものをイメージすれば良い。
  • 点字が使える(?)人ばかりではない。
  • 全盲の方だけでなく、弱視の方等にも配慮必要
  • ユニバーサルデザインには限界があるのではないか?
  • メール/テキスト?URLクリックするとブラウザ起動等の連携は便利
  • 情報を線で追って行く(凄まじいスピードで読み上げる)
  • メール重要。簡単に情報に入手できる手段。
  • メルマガ、アスキーアートとんでもねぇ。(2chもアスキーアートがねぇ...)
  • 「★」?「クロボシ」(笑)
  • 楽天のページの先頭付近、URLの連続読み上げ>>何のことかわからない(現状は無視してます(注2) )
  • Yahoo!オークションで検索、「一致する商品はありませんでした」なのに、それがわかるまでに時間かかりすぎる[追記](>>解決方法は簡単。title要素に入れておけば良い)
  • Yahoo!オークションで検索、価格.comの広告が出てくる。紛らわしい(価格が出てくるし?価格.comの広告が。○○が○○円から!)、広告見分けにくい。
  • カレンダー読み上げると鬱陶しい。
  • OSだけで出来なきゃ嘘でないか?「痛い出費」
  • コンボボックス(select option〜メニューのこと)
  • 「くわしくはこちら」リンク分かんねぇ。いちいち戻らんといかんよね。面倒。
  • 「ラジオボタン」とかコントロール名称は先に読み上げて欲しいよね。支援技術側の問題。
  • ※(こめじるし)何だよ、それ。
  • IE7。新しいウィンドウを開く時にタブキー移動するとおかしくなる?IE6までは問題なかった(ちゃんと理解できてません>俺)。
  • フォームの最後に「次へ」ボタン。え、これで確定するの?どうしよう、とりあえずやめておこうか。
  • 銀行決済のワンタイムパスワードと画像認証
  • 例えばパスワード情報を電子データで送る(CD-ROMとかFDDとか)

弱視のかた

  • コントロールパネルで黒バック+黄色にしている(文字を白だとどちらかだけしか指定していない場合に見えなくなる)
  • 背景色を指定するなら前景色(文字色)も指定せよ
  • マウスポインタを大きくして、軌跡を最大に
  • 視覚障害者の中にはまだアナログ回線の人が結構いるので、テキスト中心ページにしている(ご自身のお店のサイトで)。

らくらくホン

  • 携帯サイトは使いやすい
  • 音声で読み上げる
  • 読み上げ「選択画面26個」とか
  • らくらくフォンで携帯サイト操作。パソコンより使いやすい。何故なら、
    • 階層化されている
    • 画像少ない
    • 広告が少ない
    • 携帯サイトは僕ら(が携帯サイトを利用している感覚)に近い(短くページ分割されてるし)
    • とにかくリンクをすぐたどれる
    • テキストの画像化もしていないし
    • 画像をオフにするとパケットの節約になる
  • サービス提供者は逆に携帯サイトをPCでアクセスできるようにしたらどうか?(注3)
  • 携帯サイトの場合は画像認証等がなぜか少ない
  • マウスオーバーとか、うまく読み上げられない、買い物出来ないじゃん。
  • 楽天、Yahoo! 一応使いやすい部類?というより、使いやすくて欲しいものがないより、使いにくくても欲しいものがあるところを使いたい。要するに、使いたければ使いにくくても使う。
  • 構造が変わると覚えるのが大変。サイトを乗り換えも大変(注4)
  • 例えばYahoo! なら50行目に飛んで読めばいい(そこまでは広告)。
  • おそらくJavaScript/Flash?使いにくいサイトが増えて来た。
  • リンクテキストがうまく指定されていないのでURLを最後まで読んで想像。
  • (サイトの制作費を下げるために)製品の説明をカタログの写真とかにしないで欲しい。
  • 著作権の問題?テキスト抽出不可のコンテンツ
  • カタログがせっかくPDFであげてるのに、画像をスキャンしたものだったらお手上げ。
  • PDFはやはり読みにくい印象(注5)

注1:ユニバーサルデザインの考え方で行けば、音声ブラウザの方はこちらから...って(表現)のは僕自身はどうかと思う。純粋に聞いた人がどう感じるかの問題だけど。
注2:楽天市場のトップからどこかのショップに移動すればわかると思うが、これはヘッダ部のイメージマップの要素にalt属性がないのでURLを読むのだろう。
注3:僕も常々思って来たしこれまでも書いて来たけれど、これは実は非常に重要な指摘かと思う。携帯サイトは読み上げて使うと使いやすいのだ。100個のメニューを1ページで与えられるより(100の選択肢)、10個のメインメニュー、2階層目に10個のメニュー(最大でも20の選択肢)の方が圧倒的に「ユーザビリティ」が高い。あと、らくらくホン、良く出来てる。
注4:リニューアル注意。
注5:せっかく?なのでNaked (ウェブコンテンツ・テキストバージョン・ジェネレーター) の紹介をさせていただいた。

よくMovable Type (に限らないけど) のどこが面倒って話で画像とかファイルのアップロードがブラウザベースで1つずつってのは面倒だよねって話になるのだけど。

で、結局作っちゃえばいいじゃん、っていう話になるんですけど何でもかんでもJavaScriptとかAjaxとかでやるんじゃなくて、Adobe AIRでやるとか色々考えられるんだけど (それでもブラウザ上にこだわるならAdobe - Flexでやるとか)、ちょっと思い立ってREALbasic落としてきて触ってみた。昔結構使い込んでいたツールだし、手っ取り早いかなって(iPod touch / iPhoneのアプリ吐けるようにならないかなぁ...)。

1時間ほど使いながらリファレンスとか使い方をググってみたりしたけど(メーリングリストの過去ログとかでサンプル探したり)、一時は結構日本のコミュニティも勢いあったんだけどなぁ、という感想。特に日本語で新しい情報がない。

HTTPSocketまわりは昔使っていた頃からかなり変わっていて(もちろん充実していて)、とりあえずサーバーのcgiにユーザー名とパスワードをポストするだけのスクリプトを書いたらちゃんと動いた。

ウィンドウにURLFieldって名前でテキストフィールド作り、Movable Typeのcgiのパスを入力。プッシュボタンに以下のスクリプトを書いてクリック。


Dim form as Dictionary

form = New Dictionary
form.value("username") = "test"
form.value("password") = "test"
  
MTSocket.setFormData form
MTSocket.post URLField.text

ただそれだけ。ちゃんとMTにログインできた。別にMTでなくともXML-RPCクライアントくらいなら簡単に作れそうな気がする。

で、Assetにアイテム放り込むには添付ファイル? を付ける必要があるわけだが、情報としてはこのあたりか。何とかなりそうか?

受け取る側はプラグイン書くかBootstrapでアプリ作って受け取るとか、ファイルブラウザとかも定義してxmlでAssetのデータリストを返してREALbasic側でインターフェイス作るとか...半分くらいやる気になった。とりあえずライセンスアップグレードしておこうか。

プラグインのデバッグをどうしてますか? っていう質問がどっかで出てましたよね。みなさんどうされてるんでしょうね。って言うのも何だから自分の場合はってのを書いておきます。

MTのログに変数の値とか保存したらって話がありましたよね? 僕も時々やります。具体的には以下のようにするとログに保存されます。


$app->log($foo);

もちろん真面目? に


use MT::Log;
my $log = MT::Log->new;
$log->message($foo);
$log->save
    or die $log->errstr;

としても同じ。こっちの方法の場合はlevelとかclassとかmetadataとかも保存できるので、必要に応じて使うといいと思う。

ログの表示画面

ただ、本当はこの辺↓のしくみがそれ(debug)のしくみにあたるんではないかなぁ...誰か教えてください!

僕が個人的によくやるのは実は普通にテキストファイルにログを吐く方法。ごく普通に、こんな感じで変数の値とかをテキストに吐く。


open  FH, ">>debug.log";
print FH "$foo¥n";
close FH;

で、この方法は実はMacローカルで書いている時にお勧めで、ポイントは保存するログの拡張子を.logにすること。で、このログをダブルクリックするとデフォルトのMacだとコンソールが起動しますよね。で、これログファイルをいちいち開かなくてもリアルタイムにウィンドウに反映されるんですね。

コンソールの画面

↑これ、昨日書いたプラグインのデバック時のログ。アーカイブの数とページ分割されて出来るページの数、吐き出されるアーカイブのパスが再構築中にリアルタイムにずらずらーーーって見えるのです。

あ、もっといいやり方あったら是非教えてください。ってか、中の人は絶対何かやってる筈。でもMacローカルサーバー便利です、本当に。

あと、PERL5WEBDBってのもありますね。試してはいないのですが。

What happened to the design?

| コメント(0) | トラックバック(0)

※当日? の様子 (スタイルなしのページ) はこちらから。

今年は4月9日、CSS Naked Dayです。

日本語での紹介としてはこちらを参照いただくと良いかもしれません。

去年、Naked (ウェブコンテンツ・テキストバージョン・ジェネレーター)ってのを作ったんだけど、ネーミングの由来はこの日から来ています。

美しくマークアップされたブログだったらCSS外しちゃうだけでいいんだけど、このブログとかインラインでCSSとかぐちゃぐちゃ書きまくっているし、あるいはテーブルレイアウトのサイトだってたまには「脱いじゃえ」ってことで、以下簡単に「脱げる」スクリプト。


<script type="text/javascript">
    window.location.href = 'http://labs.alfasado.net/naked.cgi/cssnakedday/' + window.location.href;
</script>

MT4LP5が終了しました。

| コメント(0) | トラックバック(1)

どの部分に反応するか、何が印象に残ったかってのは人それぞれだけど、僕は間違いなくこれですね(Web担当者フォーラム安田さんのKeynote)。

1,000万円のエンタープライズCMSの画面を例に出していらっしゃったけど(もちろん投稿画面のインターフェイスだけじゃないんだけど)、後で関根さんと話していて「別にMTごにょごにょしてあのくらい作るのわけないよね...」ということになっておりましたよ。

僕は根性がないので資金調達してリサーチしてマーケティングして設計して製品開発して市場投入してなんてことはやる予定がないけれど(ここではそう言っておく)、エンタープライズCMSのマーケットに対して(以下大人の事情により省略)>>改めて書くかもしれません。

B3のセッション風景

[撮影:岡田陽一氏]

ウェブ屋として何故、どこに注力していくか、この人は何でこんなことを言っているのか? を考えないで何となくイベント参加して聞いてても多分いかんのです。これはウチのスタッフの台詞だけど「作れるようになる」ってのと「何を作れば良いのか」を思いつく、考えられる能力ってのは違うので、結局のところ「着眼点」と「気づき」勝負なわけです。

だから、最後の質疑の時に「こんなの作る予定のある方ありませんか?」とか「ここが使いにくい」ってのは滅茶苦茶有益なヒントなんですね。MODxのどこがいいのか? カスタムフィールドとRightFieldsはどこが違うのか? ウェブ屋さんはああいうところを聞き逃してはいけない。

あと最近(ウチも少しは影響を与えてるんでしょうけど)、MT関係の新しいソリューションもいくつか生まれてきていますね。裾野が広がりマーケットが広がるのはもちろん良いことですが、そんな中でちゃんとポジションを確立して強くあらねばならない。そのためには単なる競争だけじゃなくて恊働ってのも考える必要があるし、人材や体制の面ももっと頑張らないと。

と、まぁそんなことを意識させられた1日でした。

いずれにしても、僕のセッションを聞いた方ってのはどっちかと言えば「コア」な方たちじゃないかと思うわけですが、これをきっかけに面白いものが出来て広まって行けば面白いし嬉しいです。

# ライブはやっぱり難しい...

背中どころかパンツの中まで見せるくらいで丁度いいんではないかな。

本日リリースしました。あと、Acc04で入賞してましたぜ。

自社サイトにめっちゃ駄目だしして、こんなクリエイティブじゃ人前に出されへんって何度もやり直してようやくリリースです。

「紺屋の白袴」ってか、自社のサイトに時間を割けない事情はわかるつもり。ちょっと前までそうだったから。でも、鶏と卵の関係に似て、何かを変えようと思った時に自社のサイトを見直すこと、これ重要。

ひとつ確かなことですけど、ウチの会社って10人に満たない小世帯で、10人っていうとそこそこかもしれんが、これ2カ所の合計人数です。事務所に来た人みんな結構びっくりする。この規模とこの人数でこんだけアウトプットしてまんのか?って。

全然話題と関係ないけど一例。先月末から今週末にかけてサイトとか販促系の経費を結構使ったわけです。

  • 会社案内パンフレットの印刷代
  • 製品案内パンフレットの印刷代
  • Movable Typeライセンスの仕入
  • プレスリリース配信代行サービスの利用料

地方のWeb屋が案件予算が低い、っていうのと関係するかもしれませんが、社員10人未満の会社でも必要とあればそこそこ都合する訳です。せいぜいサイト制作予算が数十万円がリミット、ってのは嘘やね。必要だったらそのくらいなんとかするよ。必要ならば!

その予算がとれないとしたら...だからそれは必要じゃないWebサイトなんですってば。例えば折り込みチラシ、求人広告、いくらかけてます? 必要なものはお金払ってでもなんとかするじゃない。

だから受託のWeb屋は時にはちゃんと必要なものに投資するってか金使うべきだと思う。つまり時には発注者になって考えよう。目線を変えるのですよ、時には。

まぁ、ちょっと今日は打ち上げ兼ねて飲んだので、明日ちゃんと書く。

Mac OS X Leopard のAppleScriptが密かに面白い。
単なるOS Xネイティブなアプリケーションだけでなく例えば Movable Type 4.1 のようなソフトウェアを扱えるようになっているようだ(用語辞書、誰が書いたんだろう?)。

エントリーをブログに登録して再構築するスクリプトの例


tell application "Movable Type 4.1"
    activate
    set obj to new entry with property
        { title : "Welcome to Movable Type4!",
          text : "New design launched using Movable Type.",
          status : 2,
          author : 1 }
    set blog to item 1 of mt_blog
    set result to save obj in blog
    rebuild result without index archive
end tell

まぁ、ここまでなら素直にPerlで書けよ! ってなことになるけれど、以下の例なんかどうだ?

Excelと連携させる


tell application "Movable Type 4.1"
    activate
    set blog to item 1 of mt_blog
    set entries to get entries of blog
    set i to 1
    repeat with entry in entries
        tell application "Microsoft Excel"
            tell document 1
                set cell1 to "A" & i
                set cell2 to "B" & i
                set text of range cell1 to (title of entry)
                set text of range cell2 to (permalink of entry)
                set i to i + 1
            end tell
        end tell
    end repeat
end tell

エントリーのタイトルとURLをExcelにそのまま渡してセルにセットしている。Excelからエントリーをインポートの方がニーズはありそうだけど。





嘘! 嘘です。すいません、もうしませんって言ったのに...一年に一度だし...また書いてしまいました。あんまり覚えてないや、AppleScript。(てかLeopardのマシンないし!)

それでも、


do shell script "./tools/run-periodic-tasks"

ってのは普通に使えるかもね。Excelから値をひっぱってシェル経由でPerlスクリプトに渡せばいいわけか。いや、できんことないよな。意味があるかどうかわからんけど。

最近、MacのみならずiPod touchとかiPhoneとかApple製品が面白いんだが、昔僕が良く使い捨てアプリを作っていたREALbasicとか、最近どうなんだろう。iPod touch / iPhoneのアプリが作れるとかなったら再び注目を浴びるんじゃないかなと思っていて、久しぶりに触ってみようかと。

で、本格的なデスクトップアプリを作るほどの暇は年度末のこの次期にはないし、ちょっと以前から思っていたアイデアを少し。

WordPressのプラグインをDrag & Dropすると、Movable Typeのプラグインに変換してくれます。β版。

Drag & Drop すると表示されるウィザードに従って必要な情報を入力していくと変換されます。

やっぱり何でも間でもウェブアプリではなくてたまにはこういうデスクトップアプリとかも作ってみたいよね。



















ごめんなさいごめんなさい。忙しかったのでネタをブラッシュアップする暇がなかったんです!

来年こそはもう少しゆとりを持って面白いネタ考えます。

Facebook

Twitter

このアーカイブについて

このページには、2008年4月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年3月です。

次のアーカイブは2008年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.2.6