「暇ですか?」() | ◇ ◀ ▲ ▶ |
ここにたどりついてしまったあなたは、とっても暇な人と見受けられました。
これより前にはもうエントリーは存在していません。
日記を書く習慣がないので、そうそう内容はたまってないはずです。
はずかしいからあまりつつかないで下さい。
「暇ですか?」へのコメント コメントを書く
「暇ですか?」へのトラックバック
「ゴールデンウィーク」(行動記録/日記) | ◇ ◀ ▲ ▶ |
5月2日大山に登った。
08:00まえ | 中野出発 |
10:00まえ | 伊勢原 |
10:30ごろ | バスで追分へ |
11:00すぎ | 阿夫利神社下社 |
12:30ごろ | 山頂 |
13:00ごろ | 下山 |
15:00ごろ | 阿夫利神社下社 |
16:30ごろ | 男坂を下って追分 |
15:00すぎ | バスで伊勢原 |
17:00ごろ | 新宿 |
17:00すぎ | 帰宅 |
「ゴールデンウィーク」へのコメント コメントを書く
「ゴールデンウィーク」へのトラックバックTitle: http://www.mediaware.jp/blog/yuntanach/000004.html
Excerpt: 祈祷連歌 ― ソフトウェア祈祷師の寝言...
From: 祈祷連歌 ― ソフトウェア祈祷師の寝言
Date: 2004.05.04
「ファイルアップロードのテスト」へのコメント コメントを書くコメントのテスト
Posted by テスト at 2004年05月05日 12:31
「ファイルアップロードのテスト」へのトラックバック
「トラックバックのテスト」(MT導入と改造) | ◇ ◀ ▲ ▶ |
トラックバックping送信のテストをしてみる。
http://d.hatena.ne.jp/yuntanach/20040401trackback
「トラックバックのテスト」へのコメント コメントを書く
「トラックバックのテスト」へのトラックバック
「カテゴリーアーカイブ中にカテゴリーIDを記述する方法」(MT導入と改造) | ◇ ◀ ▲ ▶ |
カテゴリーアーカイブ中ではカテゴリーのIDを出すことが出来ない。 <$MTCategoryID$>などを記述するとリビルド中にエラーを起こしてしまう。
しかし、この記事によるとちょっとトリッキーなやり方ではあるがなんとかできるようになるようだ。
Acidcorporation.com アクセス解析導入とロリポップ
しょうがないから、カテゴリーのIDでページ名を付けようと考えたのですが、Category Archiveページに、そのカテゴリーのIDだけを表示させるのに苦労してしまったんです。 普通に<$MTCategoryID$>だけ書いたら、エラーでビルドできなくなるし、<MTEntryCategories>に入れただけだと、すべてのカテゴリIDを一列に表示してしまう。 かなり時間かかってイライラしたのですが、最終的に、 <MTEntries lastn="1"> <MTEntryCategorie> <$MTCategoryID$> </MTEntryCategories> </MTEntries> で、解決しました。正しいやり方なのかな?問題なくなったから別にこれで良いはずです。
結局、カテゴリーアーカイブ中でカテゴリーIDが必要になる部分では、ちょっと長いけど、
<MTEntries lastn="1"><MTEntryCategorie><$MTCategoryID$></MTEntryCategories></MTEntries>というタグを書くことですますことにした。
「カテゴリーアーカイブ中にカテゴリーIDを記述する方法」へのコメント コメントを書く
「カテゴリーアーカイブ中にカテゴリーIDを記述する方法」へのトラックバックTitle: エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。
Excerpt: 引用や箇条書を簡単に書けるようにしたい。 とりあえずは引用からやってみた。 行頭に「>>」があると、次ぎに行頭に「 リビルドするときにこのブロックをとで囲む。 データベースには...
From: 祈祷連歌 ― ソフトウェア祈祷師の寝言
Date: 2004.05.06
「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」(MT導入と改造) | ◇ ◀ ▲ ▶ |
引用や箇条書を簡単に書けるようにしたい。 とりあえずは引用からやってみた。 行頭に「>>」があると、次ぎに行頭に「<<」があるまでは引用とした。 MTはリビルドするときにこのブロックを<blockquote class=quote>と</blockquote>で囲む。 データベースにはフォーマット前のデータが格納される。 また、<や>はいちいちエスケープするのがめんどうなので、自動で&lt;と&gt;になるようにした。 この機能はconvert linebreak時のみ有効にすべきなんだろうが、とりあえずは保留。 ただし例外があって、<a>と<img>、<b>、<u>、<i>, <br>はそのまま残すようにした。つまり、これらのタグに関しては普通のHTMLの表示になるということ。
いじったのは、lib\MT\Template\Context.pmで、<$MTEntryBody$>と<$MTEntryMore$>の 展開時にフォーマットが実行される。フォーマット処理の本体は、新たに作った lib\MT\Yun.pmモジュールで、ここにあるformatlikehatena関数が呼ばれると引数の 文字列がフォーマットの対象にになる。処理自体は非常にタコで安直なつくりなので、 いずれは改良されるべきだろう。
本来ならMT::add_text_filtersで実装すべきなのだとは思うが、よくわからなかった。
いずれははてなダイアリーやWikiWikiのようにしたい。Wikiならあるじゃないか、というのは、プログラミングの楽しみがなくなるので不問にする。
Wikiと連動。Wikiと同じようにキーワードを[ [と] ]で囲むとhttp://www.mediaware.jp/wiki/下の該当するWikiページに行く。 こんな具合い⇒[[MovableType]]。
追記その2: YukiWikiのtext_to_htmlを改造してテキストフィルターとして組み込んでみた。 よって上記の追記部分は無効。 改造した新しいフォーマットルールについてはWikiを参照のこと(フォーマットルール)。 上記の[ [ ] ]は[と]で囲んで、wiki:を前につけるように変更。 こんな具合い⇒フォーマッティングルール。 ただしこれには注意が必要で、囲んだフレーズがWikiNameだと、ハイパーリンクへの展開が二重に行われてしまうというバグがあってヘンな表示になってしまう。当面は日本語のみの対応ということになる。
「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」へのコメント コメントを書く
「エントリー書き込みでWikiやはてなダイアリーのような書式で書けるようにする。」へのトラックバック
「MTで任意のファイル名を生成する」(MT導入と改造) | ◇ ◀ ▲ ▶ |
MovableTypeのファイル名は基本的には番号でふってあるので、あまり分かり良いとは言えない。そこでエントリーとカテゴリーにURN(リソース名)という項目を追加して、リソース名があるときには、ファイル名を番号ではなくそのリソース名で作成するようにした。
内容としては大したことはしていない。変更も非常にすくなくてすんだ。まず、エントリーオブジェクトとカテゴリーオブジェクトにurnプロパティを追加した。これにより各オブジェクトは従来のidプロパティと並行してurnプロパティも持つようになる。違うのは、idプロパティがシステムに自動的に振られる番号であるのに対して、urnプロパティはユーザーによるオブジェクトの編集時に任意の文字列が保持されるところにある。従来のシステムと互換性を保つため、urnプロパティは空の状態が許されている。
次に、ファイル名の生成時には、もしurnプロパティに値が入っていたらそれを使ってファイル名を作り、そうでなければ従来の方法でファイル名を作るようにした。 もしユーザーがurnを指定している場合にはファイル名の生成にそれが使われ、そうでない場合には6桁の数値で表されるidプロパティの内容が使われる。
最後に、エントリーとカテゴリーの編集画面でurnプロパティが入力できるようにテンプレートにインプットフィールドが追加されている。ユーザーがurnフィールドに文字を入れておけばそれがファイル名になり、空のままにしておけば6桁の数値からなるファイル名になる。
ちなみに、このエントリーのurnはMTIS_URNAddedToMTに、カテゴリーのはMTIntroShakeupにしている。そのため、従来の無味乾草な数値だけのURLではなく、もうちょっと意味のある文字列による表現が可能になる。ただ、意味のあるといっても、URLに許された文字だけを使うことができるだけなので、全くの自由になるということにはならない。
以下、変更点をまとめた。
1.lib\MT\Entry.pm冒頭のパッケージにプロパティを設定しているところに次の赤字の行を追加する。
17 PACKAGE->install_properties({ 18 columns => [ 19 'id', 'blog_id', 'status', 'author_id', 'allow_comments', 20 'title', 'excerpt', 'text', 'text_more', 'convert_breaks', 21 'to_ping_urls', 'pinged_urls', 'allow_pings', 'keywords', 22 'tangent_cache', 23 ## Have to keep this around for use in mt-upgrade.cgi. 24 'category_id', #red# 25 'urn', Yun 20040508: support of urn 26 ],
2.lib\MT\Category.pmについても同様に次の赤字の行を追加する。
11 PACKAGE->install_properties({ 12 columns => [ 13 'id', 'blog_id', 'label', 'author_id', 'ping_urls', 'description', 14 'allow_pings', 15 'urn', ## Yun 20040508: support of urn 16 ],
3.lib\MT\Util.pmのarchive_file_for関数中、次の棒線で消してある行を赤字の行に変更する。
452 if ($at eq 'Individual') { 453 if ($file_tmpl) { 454 $ctx->stash('entry', $entry); 455 $ctx->{current_timestamp} = $entry->created_on; 456 } else {457 $file = sprintf("%06d", $entry‐>id);457 ## Yun 20040508: support of urn for individual archive 458 $file = defined $entry->urn ? sprintf("%s", $entry->urn) : sprintf("%06d", $entry->id); 459 } 487 } elsif ($at eq 'Category') { 488 my $this_cat = $cat ? $cat : $entry->category; 489 if ($file_tmpl) { 490 $ctx->stash('archive_category', $this_cat); 491 $ctx->{__stash}{category} = $this_cat; 492 } else { 493 my $label = ''; 494 if ($this_cat) { 495 $label = dirify($this_cat->label); 496 }497 $file = sprintf("cat_%s", $label);497 ## Yun 20040508: support of urn for category archive 498 $file = defined $this_cat->urn ? sprintf("%s", $this_cat->urn) : sprintf("cat_%s", $label);
4.tmpl\cms\edit_entry.tmplに次の赤字の部分を追加する。
363 <option value=""><MT_TRANS phrase="Add new category...">>/option> 364 </TMPL_IF> 365 </select></td> 366 <td valign="middle" width="151">>TMPL_UNLESS NAME=NEW_OBJECT>>a href="javascript:editPlacements( 367 </TMPL_IF> 368 </TMPL_IF> 369 </tr> 370 371 <-- yun: added for urn - -> 372 <tr> 373 <td valign="top" width="191"><font class="pagetitle"><MT_TRANS phrase="URN"></font><br/> 374 <input class="text-short" name="urn" value="<TMPL_VAR NAME=URN>"></td> 375 </tr>
5.tmpl\cms\edit_category.tmplに次の赤字の部分を追加する。
110 <tr> 111 <td><font class="pagetitle"><MT_TRANS phrase="Category Name:"> <TMPL_VAR NAME=LABEL></font></td> 112 </tr> 113 114 <!-- yun: added for urn - -> 115 <tr> 116 <td valign="top" width="191"><font class="pagetitle"><MT_TRANS phrase="URN"></font><br/> 117 <input class="text-short" name="urn" value="<TMPL_VAR NAME=URN>"></td> 118 </tr>
以上の追加変更で、エントリー編集ページとカテゴリー編集ページのタイトルのしたに「URN」という項目が追加され、そこにURLに許された文字(基本的にアルファベットと英数)でリソース名を入れておくと、それ以後にリビルドされた分からはページのURLが番号ではなくURNで指定された文字列に".html"が追加されたものになる。空欄にしておくと従来通りの名前付けになる。
また、次の6番の変更を施すと、<$MTEntryURN$>と<$MTCategoryURN$>がテンプレート中に使えるようになる。
6.lib\MT\template\context.pmに次の赤字の部分を追加する。
110 $ctx->register_handler(EntryID => \&_hdlr_entry_id); 111 $ctx->register_handler(EntryURN => \&_hdlr_entry_urn); ## Yun 20040508: support of urn 205 $ctx->register_handler(CategoryID => \&_hdlr_category_id); 206 $ctx->register_handler(CategoryURN => \&_hdlr_category_urn); ## Yun 20040508: support of urn 883 sub _hdlr_entry_id { 884 my $args = $_[1]; 885 my $e = $_[0]->stash('entry') 886 or return $_[0]->_no_entry_error('MTEntryID'); 887 $args && $args->{pad} ? (sprintf "%06d", $e->id) : $e->id; 888 } 889 sub _hdlr_entry_urn { 890 my $args = $_[1]; 891 my $e = $_[0]->stash('entry') 892 or return $_[0]->_no_entry_error('MTEntryURN'); 893 $e->urn ? e->urn : ($args && $args->{pad} ? (sprintf "%06d", $e->id) : $e->id); 894 } </font> 1706 sub _hdlr_category_id { 1707 my $cat = $_[0]->stash('category') 1708 or return $_[0]->error(MT->translate( 1709 "You used an [_1] tag outside of the proper context.", 1710 '<$MTCategoryID$>' )); 1711 $cat->id; 1712 } 1713 1714 sub _hdlr_category_urn { 1715 my $cat = $_[0]->stash('category') 1716 or return $_[0]->error(MT->translate( 1717 "You used an [_1] tag outside of the proper context.", 1718 '<$MTCategoryURN$>' )); 1719 defined $cat->urn ? $cat->urn : $cat->id; 1720 }
この「祈祷連歌」のブロブでは、カテゴリーアーカイブに、自分の書き込みだけのものと、コメントを展開したものの2種類のアーカイブを作成するようにしている。これはブロブの設定のカテゴリーアーカイブの設定でひとつのカテゴリーごとに2種類のファイルを作るようにしているからなのだが、ここでファイル名の設定に<$MTCategoryURN$>が使われている。アーカイブのファイル名は、urnそのままだとコメント表示なしで、urnの文字列の最後にLを付けたものはコメント展開版となっている。また、index.htmlも同様で、コメント展開版はindexlong.htmlとなっている。
最後に、次のようにextlib\MT\L10N\ja.pmにURNを「リソース名」などとしておくと良いかもしれない。
140 ## Global: Entry fields 141 'Title' => 'タイトル', 142 'Post Status' => 'Post Status', 143 'Primary Category' => 'Primary Category', 144 'URN' => 'リソース名',
とりあえず、これで使ってみているが、今のところ深刻な問題はでていない。しかし、MTは設定のバリエーションが多いので、設定によっては問題がでてくる可能性は十分にある。
「MTで任意のファイル名を生成する」へのコメント コメントを書く
「MTで任意のファイル名を生成する」へのトラックバック
「Wikiとの緩やかな連携」(MT導入と改造) | ◇ ◀ ▲ ▶ |
YukiWikiをベースに、フォーマットルールに若干の拡張を 施したWikiの テキストフィルターのMovableTypeプラグインを 作った。
require MT; MT->add_text_filter( wiki => { label => 'YunWiki', on_format => sub { use MT::Yun qw( format_text_to_html ); &MT::Yun::format_text_to_html($_[0], toc=>0); }, docs => '', } ); 1;
これだけで、エントリーの編集画面のテキストフォーマットの項目でYunWikiというテキストフィルターが使えるようになる。 カテゴリーの設定でこれをデフォルトにしたら、後はYunWikiでテキストを入力するだけ。
簡単。
「Wikiとの緩やかな連携」へのコメント コメントを書く自己レスのテストを兼ねて自分の記事にコメントしてみる。
最初に山カッコがあったらそのキーワードを覚えておいて、それ以後のテキストに出現するキーワードは自動的にハイパーリンク化というのはどうだろうか?
Posted by yuntanach at 2004年05月10日 11:25
「Wikiとの緩やかな連携」へのトラックバック
「トラックバック着信で自動リビルド」(MT導入と改造) | ◇ ◀ ▲ ▶ |
いろいろ見て回っているうちに、便利な記事を見つけた。 早速変更を加えてみた。オオカワ氏に感謝。
どうせならトラックバック受けたら自動で個別アーカイブの更新までしてくれれば、 個別アーカイブからわざわざCGI出力表示(mt-tb.cgi)で受けたトラックバック内容の確認とかしなくていいし、 個別アーカイブを見るだけでそのエントリーに投稿された コメント、トラックバックをまとめて閲覧できて、お便利! ってことで、トラックバック着弾モジュールを改造してみました。
「トラックバック着信で自動リビルド」へのコメント コメントを書くSalut
Posted by ming ho lee at 2004年12月19日 09:08test
Posted by test at 2004年12月19日 09:32
「トラックバック着信で自動リビルド」へのトラックバック
「文字化け対策」(MT導入と改造) | ◇ ◀ ▲ ▶ |
エントリーの編集画面でエントリーのリストのタイトルが文字化けしてしまう。 このバグを修正した。
このバグはtitle_short作成時にUTF8の文字列を文字境界を無視して切ってしまうところに原因がある。 問題の箇所はlib\MT\App\Cms.pmのlist_entries関数の次のtitle_shortを作成している部分である。
1564 unless ($row->{title_short}) { 1565 my $title = remove_html($obj->text); 1566 $row->{title_short} = substr(($title, 0, 22) . '...'; 1567 } 1568 $row->{title_short} = substr(($row->{title_short}, 0, 22) . '...' 1569 if length($row->{title_short}) > 25; 1570 $row->{title_short} = encode_html($row->{title_short}, 1);
このsubstr関数が悪者。
これを解決するのはそんなに難しくなく、utf8を理解するsubstr関数を用意すればいい。 ちょっと引用が長いが次のような関数を用意した。
1432 my $utf8charpatternx = q { 1433 [\x00-\x7F] # UCS-2 U+0000..U+007F 1434 |[\xC2-\xDF][\x80-\xBF] # UCS-2 U+0080..U+07FF 1435 |\xE0[\xA0-\xBF][\x80-\xBF] # UCS-2 U+0800..U+7FFF 1436 |[\xE1-\xEF][\x80-\xBF][\x80-\xBF] # UCS-2 U+1000..U+D7FF, U+E000..U+FFFF 1437 # |\xF0[\x90-\xBF][\x80-\xBF][\x80-\xBF] 1438 # |[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF] 1439 # |\xF4[\x80-\x8F][\x80-\xBF][\x80-\xBF] 1440 # |[\xF5-\xF7][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF] 1441 # |[\xF8-\xFD][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF][\x80-\xBF] 1442 }; 1443 sub substrutf8 { 1444 my ($str, $pos, $len) = @_; 1445 my @chars = $str =~ /$utf8charpatternx/gox; 1446 return "" if $#chars < $pos; 1447 my $endpos = $pos + $len - 1; 1448 $endpos = $#chars if $endpos > $#chars; 1449 join "", @chars[$pos .. $endpos]; 1450 } 1451 sub lengthutf8 { 1452 my ($str) = @_; 1453 my @chars = $str =~ /$utf8charpatternx/gox; 1454 return $#chars + 1; 1455 } 1456 sub charwidthutf8 { 1457 my ($str) = @_; 1458 my @chars = $str =~ /$utf8charpatternx/gox; 1459 my $w = 0; 1460 foreach my $ch (@chars) { 1461 $w += (length($ch) < 2 ? 1 : 2); # assume U+0800..U+FFFF as wide!!! 1462 } 1463 return $w; 1464 }
substrutf8関数は、まず、与えられた文字列を$utf8charpatternx正規表現で分解する。 その後に必要な範囲の配列を要素を一つの文字列につなげて返す。
lengthutf8は同様のことをしてその配列の長さを返す。
charwidthutf8はlengthutf8と似ているが全角半角をおおざっぱに見分けて文字列の幅を返す。 UnicodeのU+0800以降は全角であると強引に決めうちしてしまっている。 ただし、UTF-8では原理的に全角半角を単純なレンジで判断できないので、 この方法はあまり良い方法とはいえないだろうが、とりあえず簡単に実装してしまった。
上記のバグの該当箇所のsubstrとlengthをそれぞれsubstrutf8とcharwidthutf8で置き換えた。
1564 my $collimit = 15; 1565 unless ($row->{title_short}) { 1566 my $title = remove_html($obj->text); 1567 $row->{title_short} = substrutf8($title, 0, $collimit - 3) . '...'; 1568 } 1569 $row->{title_short} = substrutf8($row->{title_short}, 0, $collimit - 3) . '...' 1570 if charwidthutf8($row->{title_short}) > $collimit; 1571 $row->{title_short} = encode_html($row->{title_short}, 1);
それでもまだ25文字で区切っている部分で、タイトルを省略しても表示が折り返してしまう。 25の半分である12~13とlengthutf8を比較するようにしても良かったのだが、 実際には試行錯誤の末にcharwidthutf8と15を比較するようにした。
とりあえずこれで文字化けはなくなった。
「文字化け対策」へのコメント コメントを書く
「文字化け対策」へのトラックバック
「メール通知のテスト」(MT導入と改造) | ◇ ◀ ▲ ▶ |
MovableTypeのメール通知機能を有効にしてみた。
機能を有効にするには、mt.cfgでMailTransferを設定する。 sendmailは持っていないので、smtpにした。 そのために、perlのMail::Sendmailライブラリーをインストールする必要がでた。 あとはSMTPServerをセットしておしまい。
例にコメントをつけてみると、文字化けする。ウェブで調べてJcode.pmを使ってみたが何故かエラーになる。そこで通知メールはISO-2022-JPではなく、てっとり早くUTF-8でおくることにする。そのために、いろいろと紆余曲折の末に、lib\MT\Mail.pmのsend関数の最初に次のような追加をした。
require MIME::Base64; $hdrs->{'Content-Type'} = qq(text/plain; charset="utf-8"); $hdrs->{'Content-Transfer-Encoding'} = "base64"; my $tmpsubject = MIME::Base64::encode($hdrs->{Subject}, ""); $hdrs->{Subject} = "=?utf-8?B?$tmpsubject?="; $body = MIME::Base64::encode($body); use Config; use Mail::Sendmail; use MT; $hdrs->{'X-Mailer'} = "Mail-Sendmail $Mail::Sendmail::VERSION / Perl $Config{version} / MovableType $MT::VERSION";最後の4行は、エンコードのためではなく、ヘッダーにX-Mailerをつけるためのものである。
これでふつうのメーラーにはちゃんと日本語の通知が来るようになった。ただし、ニフティのウェブメールではUTF-8が解釈されないために、件名がクォートされたままだし、本文は添付ファイル扱いになってしまう。これはしょうがないか。
「メール通知のテスト」へのコメント コメントを書くテスト
Posted by yuntanach at 2004年05月12日 23:39もう一度テスト。 Jcode.pmが入っていなかった。 XSモジュール版を入れてみた。
Posted by yuntanach at 2004年05月13日 01:01もう一度テスト。 Jcode.pmが入っていなかった。 XSモジュール版を入れてみた。
Posted by yuntanach at 2004年05月13日 01:04もう一度テスト。 Jcode.pmが入っていなかった。 XSモジュール版は駄目みたい。 普通のやつを入れてみた。
Posted by yuntanach at 2004年05月13日 01:07もういっちょテスト。 JCode.pmは諦め。 utf-8でMIME::QuotedPrintにしてみる。
Posted by yuntanach at 2004年05月13日 01:21今日最後のテスト。 @niftyでは、ウェブからメールを見る限りは UTF-8はどっちにしろ化けるのか。
Posted by yuntanach at 2004年05月13日 01:33もういっちょテスト。
Posted by yuntanach at 2004年05月13日 01:53もういっちょテスト。
Posted by yuntanach at 2004年05月13日 01:54OK!! ニフティのウェブメールでみると、 SJISの画面に強引にUTF-8の本文があるのでバケて しまうが、普通のメーラーで見る限りでは大丈夫。
Posted by yuntanach at 2004年05月13日 01:58utf-8/8bitでなく、utf-8/base64でやってみる。
Posted by yuntanach at 2004年05月13日 02:45utf-8/base64でOK。 utf-8/8bitよりは、8bitが通らない分だけこっちのほうが良いのかな? ニフティでも添付ファイル扱いになるので、本文がその場 で読めないけど、化けるよりはましか。 タイトルは相変わらずbase64がそのまま表示される。 utf-8に限らずiso-2022-jp以外で日本語用でないやつは 軒並みだめなんだろうな。たまにそういうのがくる。 メーラーでは件名本文両方ともOK。 当分はこれでやってみよう。
Posted by yuntanach at 2004年05月13日 02:51テスト。 もう寝る。
Posted by yuntanach at 2004年05月13日 03:27ほんとのラスト。 X-Mailerをつけた。
Posted by yuntanach at 2004年05月13日 03:32もういっちょ。
Posted by yuntanach at 2004年05月13日 03:36
「メール通知のテスト」へのトラックバック
「結局はヤル気が重要?」(OO百韻) | ◇ ◀ ▲ ▶ |
結局挫折したはてなダイアリに書きかけた結局はヤル気が重要?の続き。 とりあえずはこっちに引越し。
こんなニュースがあった。
日本IBMは、企業活動全般を業務(プロジェクト)単位で細分化し、 収益性などを厳密に管理するソフトの販売を始めた。(中略)企業活動を プロジェクトの集合体と見なし、各事業の厳密な収益管理を通じて経営資源の 適切な配分を目指す「エンタープライズ・プロジェクト・マネジメント(EPM)」と 呼ぶ経営手法を支援する。 『日本IBM、プロジェクトの収益性などを管理するソフト』どのように実現しているのか興味があるところだ。恐らく、従業員に細かな「行動記録のデータベースへの入力」を強いるものなのではないだろうかと想像する。この想像があっていると前提しての考えだが、大きな会社でなければ導入するのは難しいのではないかとも思う。ITやその隣接業界ではなにか新しいモノを導入するのにあまり抵抗はない傾向にと思うが、それ以外の業界では下手すると強烈な抵抗をうけてしまうことが少なくない。
会社の経営をしている知人などから、たまに社内システムの導入にからんだ相談を受けることがたまにある。業種としては、出版、教育、映像、小売、税理、といったところで、コンピューターリテラシーのレベルは、言っちゃ悪いけど平均未満の業種ではないかと思う。そういうところには、昔ながらのやりかたでやっている人が多い。すると、別にITに限らず、とにかく「新しいものにはとにかく抵抗する」というスタンスの人が必ずいる。で、そういう人はえてして、その会社での実務面で中心的な役割を果たすような職場の実力者*1であったりするので、たちが悪い。
だから、日常業務で単にPCを利用していますというところから更に進んでみたいという話を聞くと「運用が決め手になりますよ。金を投入してハード(=システム)を導入しても、ソフト(=人)がうまく働かないとうまくいきません」という感じで答える。システム/人のところをハード/ソフトというのは、相手が都合よく誤解してくれるように、わざとそういういかにもソフト屋な言いまわしで表現をするようにしている。何故かというと、うっかり肯定的なこといって、じゃあやってよ、と言われると、その人的問題を理由にしてかなりたいへんな目にあう可能性が高いからである。かといってまるっきり否定するのもなんだし。触らぬ神にたたりなし。ちょっと違うか。
そういえば、つい最近友人と「行動記録をとるソフトが欲しい」という話があった。PSPなんぞを読んでなんか触発されてしまったりすると、自分の仕事の内容の統計をとる、というのをまずやってみた人は多いと思う。私の場合はあまり続かなかった。だって、めんどうなんだもん。
一応これでもソフト屋のはしくれではあるわけなので、こういう場合はまずはソフトを作ってみたわけだ。「タイムレコーダー」と名付けた。プログラミング覚えたての初心者が習作につくるようなもので、設定ファイルの内容に従ってちっちゃなウィンドウにボタンが並ぶというものだった。ボタンを押すとその時刻が記録されるというきわめて単純な作りだ。それを作るのにおそらく1~2時間もかかっていなかったと思う。
数日後、スクリーンセイバーが動きだすとそれも記録するように改良した。うっかり操作しわすれると「1日に18時間仕事をしてました」とかなってしまう欠点があったからだ。この改良により仕事から睡眠にシームレスに移行しても、より正確な記録になるはずだ。当時の私は仕事も生活もまったくごっちゃになっていて*2、どこからが仕事でどこからが遊びなのかが非常にあいまいであった*3。食事もキーボードの手前でとっていたし、寝床の横がパソコンの操作環境だったので、いつのまにか無意識のうちちゃんと横になって寝ていて、そして身体を起こしたらすぐパソコンという生活が日常的だった。そんなヒキこもりプログラマーが生産性を計りたいと思ったならば、うってつけのソフトであっただろう。
1週間はもたなかった。
結局のところ何かやるまえに、あるいは、別のことをやりはじめるまえにいちいちその行動記録アプリを操作しなければならないというのが一番のネックだったのだ。私の場合は仕事柄簡単にアプリを作ってつくってしまったわけだが、これは紙などによる記録であっても同じであっただろう。
これはどこに問題があったのだろうか? とりあえず一番最初にでる答は「私がものぐさだから」である。これは間違いない。でも、はたしてそれだけだろうか。他のことでは、なにか新しいことをやりはじめて、それがちゃんと習慣化したようなことは、数えればいくらでもある。と、思う。
習慣化できた場合とできなかった場合。両者の違いはモチベーションの有無、もしくは、そのモチベーションの程度にあるのではないだろうか。いわゆる、ヤル気の問題だというわけである。だれもが当たりまえに行なうことができる事ならば、自分がその事についてなにか決定的なトラブルを抱えているということでなければ、ヤル気の有無がその成否を左右するといっても過言ではない。「『やればできるがやらない』というのは、できないのと同じ」というのは、本質的にはヤル気の問題なわけだ。まぁ、当たりまえといえば当たりまえの話だが。
それでは、行動記録ソフトを運用しつづけるには、どのようなモチベーション、ヤル気が必要になるのだろうか? あるいは、発想を変えて、モチベーションを維持できない状況にあっても運用しつづけるようにするには、どういった要素が必要とされるのだろうか? 何かご褒美があれば良かった?
(後日に続く、もしくは途中)
「結局はヤル気が重要?」へのコメント コメントを書くEst-ce que tu connais un ming ho?
Posted by Amiture at 2004年12月08日 10:49Je ne sais pas.
Parlez-vous de mon ami qui a étudié avec moi dans UTM?
Je connais une personne avec le nom semblable.
Posted by yuntanach at 2004年12月08日 11:59
「結局はヤル気が重要?」へのトラックバック
「日光鬼怒川旅行」(行動記録/日記) | ◇ ◀ ▲ ▶ |
5/22から一泊で日光鬼怒川へ行った。 一日目は日光東照宮。二日目は鬼怒川でライン下り。
「日光鬼怒川旅行」へのコメント コメントを書く
「日光鬼怒川旅行」へのトラックバック
「宴会『日本酒の会』」(OO百韻) | ◇ ◀ ▲ ▶ |
これで2回目(リハーサルを入れると3回目?)のOOEnkai。 今回はちょっと忙しくて行けそうにないとMLで書いたら中止になってしまった。 できれば顔をだそうと思って、ぎりぎりまでスケジュール調整を試みるも、結局ダメ。 参加表明を催促されて、2日前になってやっと返事をしたら、結局人数が集まらないとかで中止もしくは延期。 自分の発言が引金になってしまったので、ちょっと罪悪感がある。 次回は参加すべし。
「宴会『日本酒の会』」へのコメント コメントを書く
「宴会『日本酒の会』」へのトラックバック