2008-09-27

Google Toolbar for Firefox 5 リリース

Firefox 向け Google Toolbar の最新版バージョン 5 がリリースされた。

目玉は 4 つ。

  1. Google Gadgets をサポートしたカスタム・ボタン
  2. Toolbar 設定の同期
  3. Google Notebook 機能
  4. Autofill 機能

では一つずつ見て行きませう。

Google Gadgets をサポートしたカスタム・ボタン

Google Gadgets もカスタム・ボタンとして登録できるやうになった。Google Gadgets をカスタム・ボタンとして登録すると、カスタム・ボタンにプルダウン・メニュー (用の三角のマーク) が付く。このプルダウンをクリックすると、Gadget がめでたく現れる。

Google Toolbar - Custom Button for Google News

スクーン・ショットは「News」のカスタム・ボタンの例。このニュース・カスタム・ボタンは、普通にボタンをクリックする「Google News」の検索を実行し、プルダウン・メニューを開くと「Google News」のトップページが読める仕組みになっている。つまり、カスタム・ボタンとガジェットの良いとこどりをしたカスタム・ボタン。

今の所、ガジェットをカスタム・ボタンにしても「検索」機能が使えなかったりする。例えば、Google Calendar ガジェットをカスタム・ボタンに登録しても、そのボタンを押して自分の Google Calendar の検索はできなかった。

でも、おそらく Google News のやうに、「検索」機能もガジェット機能も両方備える「ボタン」が増えることは想像にかたくない。

どんな時でも、ツールバーからアクセスできる「ガジェット」は使い勝手がいい。バージョン 5 で、一番の機能だと思う。

カスタム・ボタンの追加は以下のページからできる。

Toolbar 設定の同期

Google Toolbar の設定を、他のマシンの Firefox と同期できるやうになった。設定は Google アカウントごとに Google のサーバーに保存される。保存される設定は以下の通り:

  • デフォールトの検索エンジンを何にするか etc.
  • Google カスタム・ボタン
  • オート・フィルの設定

複数のマシンを持っている人向け。設定の同期が一発になるんでイイ。

設定を同期するには、Google Toolbar 上の緑色のアイコンをクリックする。アイコンの色と形は、こちらのヘルプを読まれたし。

Google Notebook 機能

Google Notebook Addon の機能が、事実上 Google Toolbar に吸収された。

Autofill 機能

プロフィール入力を自動で行なってくれる機能。

オート・フィル機能自体はバージョン 3 からあったと記憶しているけれど、日本語版では使えなかった。バージョン 5 になって、日本語でも使えるやうになった。

この機能を使うと、会員登録とかオンライン・ショッピングの配送先入力なんかで、自動的に必要事項を入力してくれる。ユーザーは、予め Google Toolbar にプロフィール情報を入力しておく。自動入力されるのは次の項目。

  • 名前 (姓と名)
  • メール・アドレス
  • 会社名
  • 住所
  • 電話番号
  • クレジット番号

プロフィールは複数作成可能 (Toolbar 5 の新機能!)。例えば、自宅用と会社用、英語用、ハンドル・ネーム A 用なんて風に使い分けることも可能。

日本語のプロフィール入力画面を、どれだけ正確に Google Toolbar が認識してくれるかは分からない ^^;

蛇足

あと一つ、「ウェブ履歴」の検索ボタンが追加された。

あとがき

全体的に、Google Toolbar for Fx ver.5 は使い勝手の向上部分が大きい。オススメ。

Blogger の記事ページにコメント投稿フォームを追加する

「Blogger のコメント投稿フォームを、個別エントリー内に作る方法 (いわゆる inline comment)」を説明する。

ちなみに Blogger のデフォールト設定では、コメント投稿専用のページがあって、個別エントリーからそのコメント投稿専用ページへのリンクが張られている。デフォールト設定の困ったところは、「コメント投稿ページ」へのリンクを見つけられない読者は、コメントを投稿できないこと。ひどい時は「コメントはどうやってするんですか?」というメールが送られてくるなんて都市伝説もある。

設定方法

この機能は Blogger in Draft から利用可能になる。設定方法は以下の通り。

  1. Blogger in draft にアクセス
  2. 「設定 > コメント」を開く
  3. 「プレースメントからのコメント」で「下記の投稿を埋め込みました」にチェックを入れる

以上。

設定画面の日本語がひどいのは見ない方向で。

ちなみに、英語だと「プレースメントからのコメント」は「Comment Form Placement」、「下記の投稿を埋め込みました」は「Embedded below post」。前者は「Comment Form」を「Comment From」と間違えて訳したのかしらん? ちとおそまつすぎる。ぼくだったら「コメント・フォームの設置場所」「記事/エントリーの下」と訳すかな。

メールでのコメント追跡機能

2008-09-23、メールでのコメント追跡機能が inline comment に追加された。これは、記事にコメントがあるとメールでお知らせしてくれる機能。この機能を使うとコメントの返事があった時に、メールでお知らせしてくれるので便利。古いコメント形式だと昔からあったけど、inline comment 機能では使えなくなっていた。

使い方は簡単で、コメント投稿フォームの横にある「Subscribe」というリンクをクリックするだけ。すると、以降そのエントリーにコメントが入る度にお知らせメールが飛ぶ。

あとがき

2008 年 6 月の終わり。inline comment 機能が Blogger in Draft に追加された。

インライン・コメント機能をオンにすると、メールでのコメント追跡機能が使えなくなったので、ぼくはこの機能を見送っていた。

ようやく最近、この不具合も改善されたので、clmemo@aka もインライン・コメント機能をオンにした。clmemo@aka ではインライン・コメント機能に言及してなかったので、ついでにエントリーにしてみた次第。

2008-09-26

Shibuya.lisp -- Lisp ユーザーのコミュニティ

Shibuya.lisp なる Lisp ユーザー (開発者?) 向けのコミュニティーが起ち上がった。

Lisp とその派生言語の楽しさと素晴らしさを伝えるために

Shibuya.lisp より引用

対象は Lisp をベースとした言語。すなわち、Common Lisp と Scheme。そして、Arc, Clojure, Emacs Lisp, etc...。

コミュニティー・メンバーになった

ぼくは Emacs Lisp でプログラムの道に入った。C や Ruby や JavaScript をいじりつつも、自分は (Emacs)Lisper だと思っている。

でも、生粋の Lisper とは名乗れない。名乗りたいと思って、何度も Scheme や Common Lisp に手を出した。そのたびに挫折した。教科書程度のプログラミングから先に進めていない。

気がつくと、Emacs Lisp も最近あまりいじってない。

一念発起。一つ上を目指すために、Shibuya.lisp のメンバー登録をした。

メンバー登録

Shibuya.lisp のメンバーになる方法は簡単。

こちらの Google グループに参加するだけ :p

あとがき

10/13 には、第一回のテクニカル・トークが開かれる。第一回は既に満員ということだけど、少しずつこの手のイベントにも参加して真の Lisper に近づきたい。

ref

2008-09-25

Blogger in draft の Export 機能のバグが修正された

Blogger in draft の Import/Export 機能のバグが 2 つ修正された。

  1. Import で予約投稿記事にもかかわらず、すぐに公開してしまうバグを修正した
  2. Export でコメントが欠けてしまうバグを修正した

特に Export 側のバグについては、当ブログにもコメントを寄せてもらっていて悩ましく思っていた。

うちでは何度試しても尻切れトンボ(ローカルに保存したファイルの尻の方が途中で切れてタグも閉じてない)で諦めました。

clmemo@aka: Blogger in Draft の Import/Export 機能 より引用

おそらく、このバグ修正で尻切れはなくなるんじゃないかと思う。

ちなみに、ぼくが試したところ、9/19 の時に発生していた尻切れ状態は改善されていた。9/19 の export 分は 6.3 MB で、9/25 (修正後) の export 分は 9.6 MB だった。ただ、9.6 MB となるとエディターで開いても激重。まともに export されたテキストを読めていない。ちと自信なし。

ref

Apple 超コンパクト USB 電源アダプタ交換プログラム

iPhone で使ってる USB 電源アダプターにリコールのお知らせが出た (2008-09-20 頃?)。エントリーにするのが遅れたけれど、人事じゃないのであえて書く。

不具合の詳細は、公式ページから引用しませう:

アップルでは、特定の状況下において Apple 超コンパクト USB 電源アダプタのプラグ部分(金属製の差し込み部分)が外れて電源コンセント内に残り、それによって感電の原因となる可能性があることを確認いたしました。販売済み製品のごく一部にこの問題が発生したとの報告がありましたが、それによって人体に危害がおよんだという報告は現時点では入っておりません。

Apple 超コンパクト USB 電源アダプタ交換プログラム より引用

交換は無料。対象国は、日本を含め米国、カナダ、メキシコ、中南米諸国とのこと。USB 電源アダプタは利用を控えることが推奨されている。

交換方法

交換方法は二つ用意されている。

  1. ウェブから申し込み。10/10 以降に交換品を発送。
  2. 10/10 以降に直営店へ持ち込み。

ぼくは直営店に持ち込もうと思ってる。何だかんだで、ここ一年、Apple Store には行っていないから。

2008 東京 インターナショナル・オーディオショウに行きます

2008-10-03 (金) に、有給取ってインターナショナル・オーディオショウに行って来る。

目的は、今年の冬に購入予定の CD プレーヤーの情報を手に入れること。今のところ、スウェーデンの Bladelius (代理店:ノア) やノルウェーの Hegel (代理店:エレクトリ)、日本の CEC と Soulnote に興味がある。ここら辺の情報を仕入れつつ、未知の good な CD プレーヤーと出会えることを期待。あとは純粋に色んなメーカーの音を楽しむつもり。

インターナショナル・オーディオショウは一年に一回、有楽町で開かれている。入場は無料なので、よければ皆さんも足を運んでみてはいかがでせう。

2008-09-24

Emacs で Rej ファイルを処理する人への 10 ステップ

Patch を当てたら、Reject ファイルが出来てしまった。プログラミングではよくある光景。プログラマーは、人力で Reject (拒絶された) 部分を修正する必要がある。この時の作業を楽にする Tips を、Emacs 使い向けにまとめてみた。

とりあえず、次のやうなシチュエーションを想定している。

Situation

ある日、実験用のコードを書きたくなった A 氏は、rev1 の時点のソース・コードをコピーして開発を行なった。実験コードは完成したけれど、その間にもオリジナルの開発は進んでいた。そこで A 氏は experimental コードの最新版と rev1 のコードの差分を取って開発チームに送り付けた。開発チームは送られたパッチを適用して、ほとんどの変更分は反映されたものの、いくつか競合 (Conflict) が発生した。開発チームは、Rej ファイルをもとに競合を解消する必要がある。

絵にすると、こんな感じ:

(experimental)      o--o--o
                   /       \
(original) -o--o--O--o--o---X
                (rev1)     (Conflict!)

A 氏は patch を取る際、次のコマンドを使ったとする:

$ diff -uNr rev1 experimental > a.patch

開発チームは、次のコマンドでパッチを適用した:

$ cd original
$ patch -p1 < ../a.patch

diff

Rej ファイルのサンプル

例えば下記の hello.c ファイルに

#include <stdio.h>

int main(void)
{
  printf("Hello, world\n");
  return 0;
}

次の patch をあてると...

diff -uNr rev1/hello.c experimental/hello.c
--- rev1/hello.c 2008-09-21 17:56:48.000000000 +0900
+++ experimental/hello.c 2008-09-21 17:57:20.000000000 +0900
@@ -2,6 +2,6 @@
 
 int main(void)
 {
-  printf("Hello, world");
+  printf("Hello, world and you.");
   return 0;
 }

次の Rej ファイルが出来上がる。

***************
*** 2,7 ****
  
  int main(void)
  {
-   printf("Hello, world");
    return 0;
  }
--- 2,7 ----
  
  int main(void)
  {
+   printf("Hello, world and you.");
    return 0;
  }

目次 -- Rej ファイル対処の流れ

  1. Reject ファイルのリストを作る
  2. Rej ファイルを開く
  3. Rej ファイル専用のモード
  4. Rej ファイルとローカル・ファイルのカーソル位置を同期させる
  5. 行頭の + 記号を削る
  6. Rej ファイルとローカル・ファイルの比較
  7. この変数は使われているのか? と調べてみる
  8. タグ・ジャンプ
  9. 変更の巻き戻し
  10. 3 way Merge

Reject ファイルのリストを作る

まず、Conflict (競合) が起きたファイルのリストを作る。言い換えると、Rejct ファイルのリストを作る。

ここで、find コマンドを活用する。リストの一覧は rej-list.txt といふ名前で保存しませう。

$ cd original
$ find . -name "*.rej" -print > rej-list.txt

*.rej はダブル・クォーテーションで囲むこと。

Rej ファイルを開く

rej-list.txt を開くと、次のやうに Rej ファイルの一覧が出来ている。

./doc/html/index.html.rej
./src/ui/foo.c.rej
...

開きたいファイルの上にカーソルを持っていって、次のコマンドを実行する。

M-x ffap

すると、そのファイルを開くかどうか聞いてくる。RET キーを押すと Rej ファイルが開かれる。ちなみに ffap は、find-file-at-point の略。

長ったらしいパスを入力する必要がないので、手間も省けるし間違いも減る。

rej-list.txt Tips

ぼくが、rej-list.txt を使う時の Tips を紹介しませう。

  • ファイルの先頭から、一つずつ ffap で Rej ファイルを開く。
  • 修正を後回しにするファイルは、rej-list.txt の末尾に移動させる。
  • 修正を終えたファイルは、行頭にスペースを一つ加える。
  • 全く修正を加えなかった場合は、行頭に ! を付ける。
  • 修正分が大きくて、自分の修正に自信がない場合は、行頭に @ を付けるdu

Tips 適用の結果は次のやうになる。

 ./src/foo/bar/fixed.c.rej
 ./src/foo/bar/finished.c.rej
!./src/foo/hoge/no-change.c.rej
@./src/foo/huga/big-change.c.rej
 ./src/foo/huga/done.c.rej             < ここまで修正した
./src/foo/huga/undone.c.rej
./src/unfinished/foo.c.rej
...
./src/foo/bar/later.c.rej

Rej ファイルの数が 100 を越えたりしてくると、この Tips は便利。どの Rej ファイル分まで対処したかが一目で分かる。

Rej ファイル専用のモード

Rej ファイルを開くと、Emacs は Diff-mode というモードに入る。これは、Diff ファイル (パッチ/差分とも呼ぶ) 専用のモード。Rej ファイルの実体は、差分ファイルなので、Diff-mode は Rej ファイル用のモードとも言える。

Diff モードのコマンド

Diff モードで覚えておきたいコマンドを紹介しませう。

C-c C-c
ローカル・ファイルの対応部分を開く
C-c C-s
パッチを分割 (split) する
C-c C-a
パッチを適用する
M-n
次の Reject 部分へ
M-p
前の Reject 部分へ
C-c C-u
Reject ファイルを Unified diff 形式に変換する
C-c C-d
Reject ファイルを Context diff 形式 (デフォールト) に変換する

ffap で Rej ファイルを開いたら、C-c C-c でローカル・ファイルをオープン & 概当部分へジャンプするとスムーズに作業が進められる。

C-c C-s で conflict している部分とさうでない部分を分割し、conflict していない部分に対して C-c C-a すると、作業効率が上がる。

Context と Unified

Rej ファイルは Context diff 形式で出力される。C-c C-u で Unified diff 形式にすると幸せになる。

サンプルは以下の通り。まずは Context diff の出力。

***************
*** 2,7 ****
  
  int main(void)
  {
-   printf("Hello, world");
    return 0;
  }
--- 2,7 ----
  
  int main(void)
  {
+   printf("Hello, world and you.");
    return 0;
  }

そして、こちらが Unified diff 形式。

@@ -2,6 +2,6 @@
 
 int main(void)
 {
-  printf("Hello, world");
+  printf("Hello, world and you.");
   return 0;
 }

Rej ファイルとローカル・ファイルのカーソル位置を同期させる

更に Rej ファイル内 C-c C-f とする。すると、Rej ファイルのカーソル位置とローカル・ファイルのカーソル位置が同期するやうになる。C-c C-c で概当場所にジャンプするより、こちらの方が断然楽!

C-c C-f
next-error-follow-minor-mode をトグルする

ただし、Rej ファイルの行番号があさっての方向を指していると (変更点が多すぎると、時々さういふことがある)、ちゃんとカーソル位置が同期しない。この場合は、C-c C-f で next-error-follow-minor-mode をオフにして、C-c C-c と Emacs の Search を使う方がいい。

ケース・バイ・ケースで使い分けられたし。

行頭の + 記号を削る

Rej ファイルから、コードをコピーしたとする。すると、行頭の + 記号を削らないといけない。この作業には、短形削除コマンドが有効。

短形削除コマンドとは、範囲指定の始まりと終わりを「四角形の対角線」に見たてて、その四角形部分だけ削除するコマンド。

例えば、次のやうなコードがあった場合を考えてみやう。

hogehoge
+ foo
+ bar
+ null
+ ...
hugahuga

下のスクリーン・ショットのやうに範囲を指定する (範囲指定の始まりは「foo の 0 カラム目」で、終わりは「...」の 1 カラム目)。

Emacs - rectangle region

そして、C-x r k を実行。すると、行頭の + 記号が削除される。

C-x r k
kill-rectangle (短形削除コマンド) を実行する

Rej ファイルとローカル・ファイルの比較

Rej ファイルが出来るシチュエーションの一つに、experimental での変更分を original でも既に行なっていた、というものがある。この場合、既に変更してある所に同じ変更を加えやうとして、patch コマンドは混乱し Rej ファイルを作り出す。

プログラマーは、Rej ファイルの中身と original が同じことを確認したら、何も変更を加えず Rej ファイルを閉じればいい。

問題は確認する方法。もしかしたら、1 行だけ違うかもしれない。もしかしたら、マスク一箇所分だけ違うかもしれない。もしかしたら演算子 1 個分だけ... 目で確認するのは、愚直に過ぎる。

ediff-windows-linewise を使う

こんな感じに色付してくれると、変更場所が (あるなら) 分かって嬉しい。

Emacs - ediff-windows-linewise

スクリーン・ショットでは、rsvg の行が足りないことが見て取れる。

ediff-windows-linewise の使い方
  1. ウィンドウを分割して、片方に rej ファイル、もう片方にローカル・ファイルを表示させる。
  2. お互いのウィンドウが同じ部分を表示するようにする (ex. next-error-follow-minor-mode を使って同じ部分を表示し、更に比較したい行で C-u 0 C-l, C-x o, C-u 0 C-l を実行する)
  3. C-u M-x ediff-windows-linewise を実行する

この変数は使われているのか? と調べてみる

カレント・ディレクトリー以下のファイルに対して、grep をかけたい場合、次のコマンドが便利。

M-x grep-find
カレント・ディレクトリー以下のコマンドに grep をかける

このコマンドを実行すると、ミニバッファーが次のやうになる。

Run find (like this): find . -type f -print0 | xargs -0 -e grep -nH -e 

この行末に grep にかけたいキーワードを入力して RET を押すと、検索が実行される。

やっていることは、find + xargs + grep のワンライナーを呼び出しているだけ。ユーザーは、この長くて複雑なワンライナーを覚える (打ち込む) 必要がないのがメリット。

カレント・ディレクトリーじゃなくて、一つ上のディレクトリー以下の全てのファイルを検索したい場合は、find . の部分を find ../ に変えればいい。

パッチを当ててそっくりな名前の変数や関数が現れたら、変数名や関数名が変更されたのかもと疑ってみるといい。で、本当に変更されたかどうかを調べるのに、同じ変数名・関数名を使ってるソース部分を見る手がある。grep-find は、こんな時に役に立つ。

タグ・ジャンプ

上と同じことを、タグ・ジャンプを使って検索することもできる。ここでいうタグは、検索用のインデックスのこと。デメリットはタグ作成に時間がかかる点。メリットは検索時間が早い点。

タグ・ジャンプの詳細については、過去記事をどうぞ。

変更の巻き戻し

Rej ファイルの対処をしていたら、わけが分からなくなることがある。そんな時に備えて、対処を始める前のファイルのバックアップを取っておきませう。

もしも、バージョン管理システムを使っているなら、パッチを当てた時点で一度 checkin することをオススメする。さうしておけば、次のコマンド一つで Rej ファイル対処分をキャンセルすることができる。

C-x v u
Revert (変更の巻き戻し) を行なう。RCS, CVS, Subversion といったバージョン管理システムで使える

3 way Merge

Rej ファイルも複雑になると、どこをどう直せばよいか分からなくなる。もしも (好運なことに)、オリジナルのファイル (rev1) と実験用のファイル (experimental) が手元にあるなら、3 way merge を試してみるとよいかもしれない。

おさらい。今、rev1 から派生した experimental なコードをローカルの original にマージしやうとしている。

(experimental)      o--o--o
                   /       \
(original) -o--o--O--o--o---X
                (rev1)     (Conflict!)

この場合、3 way マージは次のコマンドで行なう。

  1. M-x ediff-merge-with-ancestor
  2. 「File A to merge」の入力を促されるので「original/hello.c」と入力
  3. 「File B to merge」の入力を促されるので「experimental/hello.c」と入力
  4. 「Ancestor file」の入力を促されるので「rev1/hello.c」と入力

すると、スクリーン・ショットのやうな画面が現れる。

Emacs - ediff-merge-with-ancestor

画面は三分割されている。上段左側が A ウィンドウ。original な hello.c が表示されている。上段右側が B ウィンドウ。experimental な hello.c が表示されている。下段は、マージ用のウィンドウ。diff3 の出力結果が出力されている。

「a」キーで A ウィンドウの内容が、「b」キーで B ウィンドウの内容がマージ用ウィンドウにコピペされる。(今回の例のやうに) 両方の変更を取り込みたい場合は、直接マージ用ウィンドウの概当部分を編集する。

あとがき

理想を言えば、ちゃんとしたバージョン管理を使って、3 way merge を実行して conflict を修正する。よく分からない点は、experimental なり original のリビジョン・ログを読んで、どういう趣旨の変更かを理解してマージする。ということが出来るといい (darcs などは、かなり進んだマージが出来ると聞く)。

残念なことに、パッチだけしか存在しないとか、パッチだけしか提供されないとか、パッチだけが送り付けられた、という不幸もある。そんな場合に限って、Rej ファイルの数が 100 を越えたり、越えなかったり。

この記事が、そんな不幸と出会った人達の一助になれば嬉しい。

2008-09-19

「Wire Free Gadgets Network」ブロガーミーティングに参加申込した

AMN のブロガー・ミーティング「Wire Free Gadgets Network」に参加申込をした。

概要は以下の通り。

  • 日時: 2008-09-29 19:30-21:30
  • 場所: 汐留ビルディング
  • 定員: 30 人
  • 協賛: NTT コミュニケーションズ

NTT コミュニケーションズの「未来のサービスを考える」プロジェクト・チケームが提供している「Wire Free Gadgets Network」に関するセミナー。

「Wire Free Gadgets Network」は、様々なコンテンツを、ネットワークに自然につながったモノ同士(たとえばカメラとフォトフレーム、カメラとTVなど)で簡単に受け渡しすることを目指している新しいプラットフォームのコンセプトモデルです。 今回のブロガーミーティングでは、この「Wire Free Gadgets Network」の目指すビジョンから、その特徴や技術的な背景、そして実際にこの仕組みを 活用したアプリケーション例等を紹介頂き、皆さんと一緒にモノとネットワークが連動する未来のコミュニケーションの形や可能性について考えてみたいと思います。

9月29日(月)「Wire Free Gadgets Network」ブロガーミーティングのお知らせ|ブログ|Agile Media Network より引用

この手のセミナーに参加するのはひさしぶり。一か月ぶりじゃないかしらん。

でも、定員 30 人で応募者が多いと抽選になるとのこと。まだセミナーに行けるかどうかは分からない。最近、この手の「抽選」のからんだセミナーには落選し続けているので、今回もダメかも。運が良ければ、会場でお会いしまょう。

Blogger in Draft の Import/Export 機能

Blogger in draft に、Blogger の Export/Import 機能が追加されている (追加されたのは 6 月末)。

特徴

Export 機能の特徴は以下の通り。

  • 出力形式は Atom (XML)
  • ファイル名は blog-MM-DD-YYYY.xml。例えば今日 Export したなら blog-09-18-2008.xml になる
  • 対象は全てのエントリーと全てのコメント
  • 画像の Export はサポートしていない

面白いのは、Export された xml ファイルの中に、ブログの記事は入っていないこと。ブログの記事本文はあくまで Blogger のサーバーの中にある。xml ファイルの中には、「何月何日に○○さんが書いたエントリーをこの順番で入れなさい」という情報がズラズラと書かれている。極端な話、Export されているのは「記事本文へのリンク集」といってもよいでせう。

そんなわけで、Blogger がデータを Import するというのは、元々 Blogger サーバーの中にある本文データに目次を与えるような作業になる。二つのブログを統合するというのも、目次部分を並べ替えて結合しているだけ。記事本文は何一つ移動もコピーもしていない。大量のデータを扱う Blogger (というか Google) らしいやり方だね。

こんな仕様だから、Blogger 以外で Export したブログ・データ (例えば MovableType) を Blogger に Import するのは難しさう。

Import/Export のやり方

Blogger in draft にアクセスして、「設定」から「基本」タブをクリック。一番上に「ブログをインポート (Import blog)」「ブログをエクスポート (Export blog)」というリンクがあるので、それをクリックする。それだけ。

写真付き解説はクリボウさんのエントリーをどうぞ。

あとがき

この機能が追加された時、Export と聞いて「ブログのバックアップが簡単に取れるのねぇ」と思ってた。で、忙がしくてエントリーにもしなかった。

昨日、clmemo@aka: Blogger のバックアップを取る方法にコメントが入って、Export 機能でバックアップ取る方法もあったのにエントリーにしなくて悪いことしたな... と反省。で、記事を書くために少し調べてみたら、何とバックアップには適さない、といふことが分かった。びっくり。

もし、この事を知ってたら 6 月の時点でエントリーにしていたでせうね :p

申し訳ないです。Export されたファイルの中には、記事本文も入っておりました。当ブログの Export ファイルは 6 MB になって、これをエディターで開いたところ、カーソル移動や検索が激重になりました。そのせいで、ファイルの末尾を見ようとしているのに先頭部分だけしか表示されていなかったようです。結果、6 MB の Export ファイルの中には本文が入っていないと勘違いしてしまいました。ご指摘して下さった、Hit さん。ありがとうございます。

Gmail Labs に添付忘れチェッカー (と Mark as read ボタン)

Gmail Labs に、二つの機能が追加された。一つは添付ファイルを付け忘れた時にその旨をお知らせしてくれる機能。もう一つは「Mark as read」ボタンを表示する機能 (「Mark as read」は本来「More Actions」プルダウン・メニューの中に収納されている)。

Forgotten Attachment Detector

メール本文中に「メールを添付したよ」系のテキストがあると、添付ファイルが付いていることを確認。メール送信時に添付ファイルが付いてなければ、添付し忘れとしてユーザーに警告してくれる。

「メールを添付したよ」系のテキストは、現在英語のみに対応。更に Google Operating System によると

The attachment detector couldn't recognize patterns like "I attached a file", "Check the attached file", but it worked when using: "I've attached..." and "I have attached".

(訳) 添付し忘れチェッカーは、「I attached a file」や「Check the attached file」といったパターンはチェックしてくれない。「I've attached...」や「I have attached」ならチェックしてくれた。

Gmail's Forgotten Attachment Detector より引用

とのこと。

また、IDEA*IDEA さんは

いろいろ試してみましたが「attached」「file」という単語が両方現れたときに警告してくれるようです。

とっても恥ずかしい「添付忘れ」を防止するGmailの新機能『Forgotten Attachment Detector』 | IDEA*IDEA より引用

と書いているけれど、「I attached a file」ではチェックしてくれなかった。おそらく「file」はチェック項目ではない。

代わりに「I have attached email」ではチェックしてくれた。(Google Operating System さんが言う通り) have attached でチェックしているんだと思う。ここら辺のパターン認識は (日本語サポートも含めて)、Google さんに頑張って欲しい。

Mark as read

「More Actions」プルダウン・メニューの中に入ってる「Mark as Read」を、ボタンにしてプルダウン・メニューの外に出してしまう機能。Mark という人が作ったらしい。小ジャレが利いてて面白いね。

個人的には、これを良い機会と思って「Mark as Read」のショートカットを覚えることをオススメする。だって、ボタンが一つ増えなければ、それだけ画面がスッキリするから。ショートカットは次の通り。

  • Shift + i: Mark as Read (既読にする)
  • Shift + u: Mark as Unread (未読にする)

ref