2007年11月アーカイブ

ブロガーがブログを更新しなくなって、そんでもって「ブログ限界説(?)」とか、そんなことになってたんだ!? 何だって!?

えっと、今月に入って更新頻度が落ちました。えぇ、確実に更新出来なくなった。

実は今年の早い時期に決めたことがあって、「ブログを毎日書いてみよう」と思ってやってみたわけです。そこらへんの心境は以下のエントリーに書いたりした。

ところが、毎日ブログを書くことで(もちろん内容によるのだろうが)色んな変化があって、なにしろ「リアル」の方が異様に忙しくなってしまった。

例えば今月、新規に引き合いがあって伺ったお客さんの多くが「きっかけはこのブログ」だとおっしゃる(主にMT絡みで困った時に検索して見つけるのだそうだ)。イベントに呼んでもらったり色々と新しい出会いとか、ブログがきっかけで変化が生まれている。

ブログをきっかけとした出会いがなかったらおそらくこいつをリリースすることもなかっただろう。

実は書きたいことはたくさんあって、「スプログ」が鬱陶しいってのはないわけじゃないけれど、そんなことは些末な問題である。TechnoratiやGoogleのブログ検索結果のフィードをRSSリーダーに登録して、言及された発言とかを追っていたけど、最近その質が落ちたっていうかスパムブログの検索結果が多くひっかかるようになった。でもそれはRSSを読まなくなる動機にはなるけどブログを書かなくなる理由にはならない。

つまり、ブログを書き続けて、それが読まれるようになると「リアル」の方に影響が出て来て忙しさが尋常じゃなくなって、「リアル」の世界に面白いことが増えてしまって結果としてブログが更新されなくなってしまう、ってのが今月の僕です。

だから、「ブログを更新できないのは、多分ブログのせいだ。」と、思う。

かなり出遅れたけど、忙しかったんだよ、いやほんまに。

今の時代、無料で利用できるサービスが一番クオリティが高いというのは偶然じゃない。

まさか!

「Google」でも「Microsoft (無料じゃないが)」でも「ニコ動」でも「はてな」でも「mixi」でもいいけど、例えば自分の心臓を動かしてくれるソフトウェア(極端な例だけど、命に関わるシチュエーションでの医療の現場とか) だったり自分の全財産とか命(生活)賭けた商売のインフラたるソフトウェア(金融系のシステム)とかに求められるものを捨てることによって好きなことを追求出来る(イノベーションの追求と言うのか?)立場と、SIerが必要とされる仕事を同列に論じるあたりが何だか、ではないかい?

例えば。1年365日のうち99%稼働して99%正しい結果を返すインフラやシステムを構築するコスト、そこから0.1%ずつ数字を高めて行くコストを考えると後者の0.1%にはすんごいコストと責任がついて回るってことは気づいてるよね。でも敢えてそこは捨てて、もっと言えば儲からなかったら撤退しちゃえ、バグがあってもリリースして反応見ながら改良していけばいいし、あ、それも駄目だったら撤退しちゃえ、っていうあたりがWeb2.0の一面でもある。もちろんそれは別に悪いことではない。

トランザクションとかのこともそうだけど、例えばGoogleにして「すべてのサーバーの検索結果が常に同期していなければならないシステム」ではなくて、各サーバーの検索結果が違っていたらそれをGoogle Danceとか言ってくれる(今はどうか知らないけど)とか、「はてな」「mixi」が重くて接続出来ない時があったとして、怒られることもないし(ユーザーが不満を言う程度のことはある。でもそのユーザーの多くはそれを「無料」で使っているのだ)。

敢えてそこを捨てることによって新しいサービスを産み出す時間とかリソースとかを産み出して新しいことをやってるサービスと(もちろん分かってやっているのだ)、最初に予算と責任と対象範囲があってそれをクリアするためのシステムをつくるビジネスを同列には語れない。

あなたの症状を入力してくれたら適切な処方箋を検索結果から自動判断してあなたに自動的に投薬します、とか、自社で構築した安価なハードウェアの上で、当社のWeb2.0エンジニアがAjaxを駆使して革新的なUIを実現したウェブアプリがあなたの身体に埋め込まれたペースメーカーをコントロールしますってな世の中はまだどこにもない(極端な例だけどね)。

Web2.0の側だってそのあたりは当然分かってやっている筈で、だからこそ「ユーザーが増加し、収益もある程度安定してきた」段階で「インフラに投資しよう」という判断がなされることもある(もちろん悪い意味で言っているんじゃない)。

もちろん「速く」「落ちない」サービスが理想だけど、場合によっては「速い」が「落ちない」よりもプライオリティが高くなる場合もあるということは覚えておいた方が良い。そしてその方が喜ばれるシチュエーションだってあるのだ。そのような現場では「新しくて革新的なもの」が他のものに優先されることが、ままある。

逆に、金融システムとか医療関係のシステムとかでもそうだけど、確実に不具合なく動くこと(もちろん絶対ってなものはないんだけれど)を求められる現場では、「こう書いた方がスマートですよ」「新しいこの技術を使えばこんなことが実現出来ますよ」ということが「今これでちゃんと動いているんだから新しいものを導入する必要なんてどこにもない」という言葉に勝てないことも多いだろう(想像だけど)。

もちろんSIerさんの仕事の全てがすべてこのようなクリティカルなサービスばかりではないのだが、一つの「文化」としてそういうこともあるのではないかと(自分は経験がないので外野の勝手な発言だけど)。そんな風に感じたりもする。

少なくとも僕は『自社で「なるべく安く」構築したインフラ』で構築・提供されたサービスを楽しく利用することはできるが、そのシステムに自分の命や財産を預けたくはないし、検索結果から機械的に判断した処方箋を元に調合された薬を飲みたいとも思わない(それが技術的にどれだけ凄いものだとしても)。

将来があるかどうかとかそれが面白いかどうかは別にして、「枯れたアーキテクチャの上で動いていて安定していて安心して使える」「顧客オーダーのソフトウェア」を我々はまだ必要としていて、そこを支えているのがSIerさんであり受託開発系のIT企業であり、そこに属するプログラマたちである、と言うことはできないだろうか。それをベースに業界論を展開するべきだろうし、そこに例えば「Google」を持ち出すのは「飛び道具」使ってるような感覚になるのだよ。

月別アーカイブのリスト(年を表示させる) MTでサイト構築している際に、色々現場(主にテンプレートタグ/マークアップ担当)から要望が出てくるんだが、まぁウチの会社の場合「できなきゃプラグイン書いちゃえ」なわけで要望あげてくるのも分かるんだけどテンプレートタグでできることはテンプレートタグでやろうよ、ということで。

画像のような感じで、月別アーカイブのリストに年度を表示させるパターン。これは既にプラグインとかあるのかな? いやなくてもMT4ならプラグインいらずで実装できますよね。

要するにMTSetVarBlock と MTIf を使って、年が変わっていた時だけ出力する、ということです。MTSetVarBlockでセットした値はループの中で初期化されるわけでもないようなので、こんな風に変数に値を入れておいて比較、っていうプログラムチックなことが簡単に出来るよね。

ところがところが、やっぱり出来ない! って泣きが入ったんですよ。何が? って、年の表示をさせる箇所を年度の先頭にしたい...というのだよ。

単純に「年」なら以下テンプレートタグだけで実装できます。



<MTArchiveList archive_type="Monthly">
    <MTArchiveListHeader>
        <$MTArchiveDate format="%Y"$>年
        <ul class="module-list">
    </MTArchiveListHeader>
    <MTSetVarBlock name="CurrentYear"><$MTArchiveDate format="%Y"$></MTSetVarBlock>
    <MTIf name="CompareYear" ne="$CurrentYear">
        </ul>
        <$MTArchiveDate format="%Y"$>年<ul class="module-list">
    </MTIf>
    <MTSetVarBlock name="CompareYear"><$MTArchiveDate format="%Y"$></MTSetVarBlock>
            <li class="module-list-item"><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a></li>
    <MTArchiveListFooter>
        </ul>
    </MTArchiveListFooter>
</MTArchiveList>

月別アーカイブのリスト(年度を表示させる) 何がややこしいって、4月〜翌3月が年度だとして、単純に「3月だったら」では駄目で(3月にエントリーが一件もないと出力されないし)、しかも4〜12月はいいものの、1〜3月だったら「年度」の数字を-1しないといけないのね。2007年3月は2006年度、ということになるので。

とはいえ、リストアップからすべてプラグインで書くのは悔しいので、数字を-1するところだけプラグイン書いた(所要時間1分)。-1する専用ってのもなんなので、値と属性値を足し算するCalculationプラグインってのにしたのであげておくね。

テンプレートタグの実装の例は以下のような感じで。他に良い方法があるかもしれんけど、とにかくこれで動いている。



<MTArchiveList archive_type="Monthly">

<mt:unless name="Year">
    <mt:setvarblock name="startMonth"><$MTArchiveDate format="%m"$></mt:setvarblock>
    <mt:if name="startMonth" lt="4">
        <$MTArchiveDate format="%Y" calculation="-1"$>年度
        <ul class="module-list"><mt:else>
        <$MTArchiveDate format="%Y"$>年度
        <ul class="module-list"></mt:else>
        </mt:if>
        <mt:setvar name="printYear" value="1"> <!--←訂正/追記-->
</mt:unless>

<mt:setvarblock name="CompareYear"><$MTArchiveDate format="%Y"$></mt:setvarblock>

<mt:if name="Year" ne="$CompareYear"><mt:if name="printYear"><mt:setvar name="printYear" value="0"><mt:else>
        </ul><mt:var name="CompareYear">年度
        <ul class="module-list"></mt:else></mt:if></mt:if>

<mt:setvarblock name="Year"><$MTArchiveDate format="%Y"$></mt:setvarblock>
<mt:setvarblock name="YYYYMM"><$MTArchiveDate format="%Y"$><$MTArchiveDate format="%m"$></mt:setvarblock>
<mt:setvarblock name="FiscalYear"><$MTArchiveDate format="%Y"$>04</mt:setvarblock>

<mt:if name="FiscalYear" gt="$YYYYMM">
    <mt:unless name="printYear">
        </ul><$MTArchiveDate format="%Y" calculation="-1"$>年度
        <ul class="module-list"><mt:setvar name="printYear" value="1">
    </mt:unless>
</mt:if>
            <li class="module-list-item"><a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a></li>
    <MTArchiveListFooter>
        </ul>
    </MTArchiveListFooter>
</MTArchiveList>

というような制作の現場で欲しいものを作ってきた中から出来たのがこいつ(PowerCMS for MT1.0)です。

ということで、どうぞよろしくお願いします。

KOFで話して来た...のはいいんだけど帰ってみるとMacBookのACアダプタが無いことに気づく。事務局に確認するにしてもとたんに月曜日困るからなぁ...凹む。

ってかバレーの選手たちが頑張ってるのに凹んでる場合じゃないですぜ、旦那(笑)。

思い当たったのが、カテゴリでの絞り込みをした際の個別エントリーページの表示。この時、前のエントリーと次のエントリーへリンクを張るわけですが、ここのロジックがかなり地道な作業を行っており、一つエントリーを拾ってきてカテゴリを照会し、異なれば次のエントリーを拾って、ということをやっているんですね。で、コレで何がどうなるのかというと、膨大なエントリーがあるブログで、例えばとあるカテゴリーに1件しかエントリーがない場合、あるはずのない同一カテゴリーに所属するエントリーを求めて、端から端までなめる訳です。

もしもブログ内の各エントリーの authored_on (created_on) がユニークだと決めうちしちゃえるなら以下のような感じで。決めうちできないなら authored_on から数字を(足す|引く)してから数件取得すればいいと思います。でも僕だったらカテゴリーのエントリーをリストアップした時に前後のエントリーIDを引数にくっつけちゃいますけどね。...&next=131&prev=98 とか。


my $next = neighbor_entry($entry, $category->id, 'next');
my $prev = neighbor_entry($entry, $category->id, 'prev');

sub neighbor_entry {
    my ($entry, $category_id, $prev_or_next) = @_;
    my $direction = 'ascend';
    if ($prev_or_next eq 'prev') {
        $direction = 'descend';
    }
    return MT::Entry->load({ blog_id => $entry->blog_id,
                             status => 2 },
                           { sort => "authored_on",
                             start_val => $entry->authored_on,
                             direction => $direction,
                             limit => 1,
                             'join' => [ 'MT::Placement', 'entry_id',
                                       { blog_id => $entry->blog_id,
                                         category_id => $category_id },
                                       { unique => 1 } ],
                           } );
}

MTOSの姿はまだ見えませんが...そろそろ直前になってきましたので、内容について触れておきます。

日時:11月10日土曜日 16:00〜 (50分) [会場: 南港ATC ITM棟 9F-H6]

内容について

これまでは割とWeb屋さん向けの場所で話すことが多かったのですが、今回はOSS関係のイベントなので、これまでしゃべって来たことやこのブログに書いて来たものも含めて、方向性としては「Webアプリの開発にMTが便利!」という面を中心に話そうと思います。

  • Inside MT (MTの構成)
  • MT Perl APIの基礎
  • データベースアクセスとMT::Objectのサブクラス作成
  • MTのテンプレートエンジン
  • Perlプラグインによる拡張
  • Bootstrap.pmを利用したアプリ開発
  • PHPによるダイナミックパブリッシング
  • オープンソースならではの活用方法を考えよう

*内容は変更になる可能性があります。

特に、テンプレートエンジンについては、MT4になってMTにCMSテンプレートがMTのテンプレートエンジンを使うようになっていることもあり(3.3まではHTML::Template)、管理画面の拡張やWebアプリ開発でも多いに活用できることから、今回はその辺も強調してみたいと思います。

関西で行われる数少ないOSS系のイベントですから、他のセッションもチェックしていただいて、面白そうなものがあれば是非覗いてみてください。

それでは当日、会場でお会いしましょう。

何だか話題になっているようですが。

  • じゃぁ、どこの業界にはポジティブなイメージを持っているの?
  • 何故あなたたちは、この業界に進もうと思っている(思っていた)の?
  • 何故あなたたちはこのイベントに参加したの?

ってとこから話を広げて欲しかったな。

特に一つ目、「どこの業界にはポジティブなイメージを持っているの?」ってことから考えると、どの業界が良い(もちろん今だけじゃなくて将来に渡ってという視点で考えて)とか簡単に言えないんじゃないか。

だいたい人気なんてものは5年10年経てば変わっちまう水物だし。

イベントの趣旨がそうなんだろうが、そもそも業界単位で見る必要がどんだけ〜あるのだろう。例えば自動車業界、例えば家電業界、例えば小売り業界。勝ち組とかどうでもいいけど、どこの業績が良くてどこが良くないかとか、情報もそれなりにあるし分かりやすいといえば分かりやすい。

自動車業界を志望している人はそれなりに理由があるだろうが、業界云々が決まっていたら次は「どの会社」となるだろう。

「きつい」とか「帰れない | 帰らない」というのは業界の問題ではなくて会社/職場の問題であり、ある程度のキャリアを積んだ人であればその会社/職場を構成するその人自身の問題である。会社/職場を構成しているのは「帰らない | 帰れない」その人自身でもあるのだ。

だいたい今時「就職」「転職」と言っているあたり何だかなぁ、である。特に転職って言葉の方。何故「転社」ではなく「転職」なのか?

業界の人気なんか気にする必要ない。「就職活動」より「就社活動」。「転職活動」より「職場 & 自分改善活動」。

「業界のせい」にしたがる人は会社/職場に呑まれてしまいやすいんじゃないか、と。もちろん学生がそうであっても良いと思うが、現役バリバリのエンジニアさんとかが「そうは言ってもよぉ」とか言ってるのであればそれは違うのではないだろうか。

でも何と言っても重鎮さんたちの発言。業界の人とはいえN社とかT社とかの人であるならば、

「N社は全然そんなことないですね。T社さんは分かりませんけど。」

とか

「T社さんではあるかもしれませんねぇ。でも当社をはじめ私の知る限り...」

とか言い合ったら面白かったのに。

「IT産業は学生から人気がない」のであればそれはチャンス! ウチだけ人気度アップさせちゃえ、ってなもんで。

無理か。大人だから。

でも、業界でなくて自分の会社とか自分たちが作り上げて来た環境自慢合戦とか出るくらいじゃないと、というか全力でそう語らないことが何だか命賭けてない感じ。絶望したのは学生じゃなくて、下で働く人たちかも。

「3Kの“帰れない”は、帰りたくない人が帰れないだけ。スケジュール管理の問題だ。私は40年間近くIT業界で仕事しているが、何が一番幸せかというと退屈している暇がないことだ。技術が進歩するにつれわれわれの仕事も複雑化してくるが、一生懸命追いかけていくだけでも退屈しない。いい仕事を選んだと思う」

即座にこれが出て来たってのは、まず「帰れないこと」は認めていて「スケジュール管理がまずくて帰れない」現場を見たことがあるか体験したことがあって、それを「退屈している暇がない」ことに転嫁しているように聞こえちゃう。

『「“帰れない”」じゃなくて、帰る暇が惜しい程楽しい仕事なんです。』

『誰が帰れないの? 僕が見て来た現場、っていうかウチの会社はみんな普通に帰ってますよ』

って即座に言えたら格好良かったのに。

とにかく、どんなに良いと思っていた業界や入ったとしてもうまくいかないこととか納得出来ないことはやってくるし、うまくやれている現場もあればそうでない現場もある。業界のせいにしても得することは何もないから、まずは「仕事」見て業界絞ったら、会社/職場、人を見て進む会社を選び、でも理想と違ったら近づけるべき努力したり他の道を考えたり...ってあまりに普通のことか、そうだよな。

Facebook

Twitter

このアーカイブについて

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

前のアーカイブは2007年10月です。

次のアーカイブは2007年12月です。

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

Powered by Movable Type 6.2.6