2008年12月24日水曜日

研修生と〜お疲れ様〜プレゼン大会。。。そしてここがGCR忘年会の会場です

研修生のお二人が一ヶ月の研修の最後の日なので、彼らが作ったWebアプリケーションをお披露目していただきました。
そして、先日お話の中で、「今自分たちでGrailsを使ってWebアプリケーションを作ってますが、実際どこまでいけるものなんだろう」「どういうものができるんだろう」という疑問を上げてもらったので、社内で開発、運用しているWebアプリケーションなどをプレゼンすることにしました。

1.ファイル管理システム(研修生)
座学では、DreameWeaverを使って、HTMLにCSSを付加して静的なサイト構築を学習していましたが、GrailsによるWebアプリケーション開発に取り組んでもらいました。
このシステムは、画像、PDFなどのデータをアップロードし、カテゴリを付与して管理するシステムです。ユーザ認証などはまだ付いてませんが、CSSもそれなりにいじってなかなかの出来だったと思います。

2.PDFドキュメント作成・管理システム
複数ページを持つPDFをアップロードし、ページを組み合わせたり、その中に文字や画像を貼ったりしてオリジナルページを作る、というようなシステムです。

3.タウン情報誌制作支援システム
PA^nをベースに、XSLFormatterをレンダリングエンジンにしたWEB入稿、自動組版システムです。ページ割り付けが終わると、それぞれのアイテムのPDFをInDesignに引っ張ってきて、最終ページアップをするという仕組みです。名前出して良いとお客様から許可いただいているので公表すると「Milkl」です。熊本など九州地区で出版されている「Nasse」も同じ仕組みです。
InDesignで作成したデザインをシステムにパターンとして登録できるようになっています。

4.新聞紙面制作支援システム
これもPA^nベースの仕組み。EdicolorやEdianWingを自動組版エンジンとして使っていて、他システムとも連携したりと、大変細かく、そして大きなな仕組みです。

5.会報誌制作支援システム
「2」をベースに作ったもので、オンデマンド印刷に、配送先の住所、名前などはもちろんのこと、プラスアルファとしてオリジナリティ(自分で作ったページを差し込む)を加えることができる仕組みです。

6.掲示板システム(見習い君)
まだ2ヶ月ぐらいの見習い生ですが、制作の仕事をしながらちょっとずつやってます。
自分がどう使いたいかというところが分かっている分、実装は軽いけど、最低限として的を得ているかなと思いました。

7.制作物管理、制作工程管理システム
これも公表してよいはずだったので、言いますと「小川君」という名前が付いたシステムで、制作案件ごとに、そのやりとりを管理しよう、というシンプルなシステムです。無くてはならないシステムとして運用されています。

と言った具合です。

ちなみに会場は、こちらです↓


研修生は、パワポで説明用の資料を作ってました。
人に伝えるっていうのは難しい作業ですが、要点がまとまってて良かったです。
今まで作ってきたものを改めて見ると、「あと一歩だよな…」と思います。良い意味で。そういう気持ちの方が盛り上がる。でも、ちゃんと、相手に伝わるようにまとめて、再利用して売っていかないと飯が食えんからね。どうも僕らは「売る」というのが苦手だな。出来上がったモノは他では出来ないモノであることは間違いないんだけど。最終の完成品を要求されるとうまくいかないことがしばしば。使いながら拡張する手法だととてもうまくいく。これはまた明らかな事実。いつも試行錯誤です。

とにかくお疲れ様でした。

風邪引いた。。。

MacOSX(Leopard)のシェルをzshにする

ターミナルで、
>bash
と打てばbashに
>zsh
ならzshになる。
でも
>echo $SHELL
すると、
zshにしたのに
/bin/bash
とかなるので、
sudo dscl . -create /Users/***** UserShell /bin/zsh
※*****はユーザ名
にすると、ユーザシェルをちゃんと変えてくれる。
ターミナルを再度開き直すと適用されているのが確認できる。

2008年12月22日月曜日

Ustream.tv〜今さら試す

テストで我が家のクリスマスパーティを録画してみました。
MacBookでちょいと引き気味で、ちょっぴりだけど。
簡単だね〜〜〜

2008年12月21日日曜日

オンラインストレージ〜とりあえず無料

http://www.livedrive.com/

Windowsはストレージをドライブとして見てくれるツールが準備されている。
Mac版は「ちょっと待ってね」らしい。

とりあえず登録してみた。
ファイルを選択しておけばアップし続けてくれる。今のところ通常スピードでボンボン上がってく感じ。
共有できるっぽいのでやってみようと思ったら、「500」のエラー。また今度試してみる。
ちょっと使ってみようと思う。

2008年12月11日木曜日

おばあちゃんの孫として思うこと

熊本の出張から戻って、なんだかんだバタバタしつつ、帰り際になって聞いたのですが、
S君のお婆さまがお亡くなりになられたとのこと。なんと100歳の大往生だそうです。
心からご冥福をお祈りいたします。

僕のおばあちゃん(母方)は、鹿児島にいたのですが、同じように熊本に出張のときでした。
熊本からレンタカーでそのまま鹿児島に入ったのですが、もうそのときには、鹿児島、宮崎の親戚がたっくさん集まっておりました。

そんな中、玄関を上がってその光景を見たときに、すごく不思議な感じがしたのを今でもはっきり覚えています。
おばあちゃんは7人の息子、娘を持つ人で、そこに2,3人の子がいるので、いとこだけでもかなりの数になります。そしてひ孫たちもいますので、お嫁さんや、婿殿を除いたとしてもかなりの人数が一堂に会す場となってごった返していました。

人間の全体数から言ったら少ないのは当たり前ですが、おばあちゃんがいなければここに誰も存在すらしていないんだな、と思うと、偉大さとかを通り超した不思議な感じがしたのでした。

「お葬式初めてなんですよ」というS君
「おばあちゃんがそういう機会を与えてくれたんだなと思います。」と言ってました。
そうだよな、、、何かしらの人生のイベント(言葉悪いかもしれませんが)は、自分にとって何かを得る、変わる機会なので、そういうピュアな気持ち、受け入れる気持ちは大切ですね。

と、そんな彼もブログを再開。
昔のもリンク貼ってね。

2008年12月10日水曜日

研修生による課題アプリちょっと変更。でもできてますねえ。

ショッピングカートとかなんとかだったんですが、変更して簡易的なデータの管理に、ファイルアップロードとか検索とか付けてみるものにしました。

2日かかりましたが、二週間ぐらい前までなんの知識もない人たちが、周りのちょっとした手伝いがあったとしてもここまではできるんだと確信できたのが、僕にとって一番の収穫。

うむ、素晴らしい。

本人たちはまだしっかりと教えられた内容を把握できていないところに不安があって、自信なさげですが、
まずは、やろうと決めて、それをちゃんと出来たことが素晴らしい!!

多分詳細は、本人たちのブログにあがると思われます。右下のNCブログからどうぞぅ。

以上

移転先事務所になんとなくいろいろ並べてみた

ああ、大丈夫、広い。まだ広い。よかった。
パーテが立ったり、人が入ったりすると、狭くなる感があっても、まあ大丈夫だろう。
でも、引っ越しって高いんだなぁ。やっぱり。前の時もそうだったから覚悟してたけど。
頑張ろうね。

2008年12月3日水曜日

旅のしおりを作るサイトをちょっと調べてみる

offbeatguides
かなりのコンテンツ量がある海外のサイト。
行き先、いつからいつ、どこから、などを入力していくと、
その近くの食べ物屋とか、施設の場所とかをざっと出してくれる。
そこから、いるものをチェックして自分の旅のしおりを作る。
というかガイドブックですが。
価格は、印刷したもの、PDFダウンロードで差が付いている。
10〜25$ぐらいの幅。ページ数関係ないのかな。試しに作ったら100ページぐらいになったけど。
こういう既存のコンテンツを有効活用するってステキですね。
ガイドブックを作るというところより、コンテンツをWEBサービス対応にしてくれないかしら。

MapFanの旅のしおり
またたびの旅のしおり
両方とも操作性というところでは同じ感じのようですね。

ただ、ここまでしっかり操作してユーザが作れるのか、またリピートとして使えるかどうか、というところは、まだ実験段階なのかな。リクルートとかもやってそうだし。。。

「旅行」系の話で、DB化とかパンフレットや、しおり自動作成というような案件は、たまに持ち上がったりしますが、どうも使う側のユーザ主体で考えると、もっと簡便なものでないと、いけない気がしてなりません。
入れる項目が多いんだよなあ。もっと連携すれば楽にできそうなのに。
組版は、帳票系でやってしまうと、デザイン性が引き出せないので、InDesignとかXSLFormatterとかがいいんだろうな。
だいぶ前に、旅のしおりをFOでやってた人がいた気がするけど。ものすごく近いところに。

今ならPA^nとかInDesign連携もかなり出来てきてるので、なんなく行けそうだなあ。
既存のWEBサービスとかとも連携出来たらステキだなあ。
何か案件があったら相談してみてください。考えてみますので。

自分たちのミスで起こした事故からの復旧対応で考えること

言い訳できない状態で…もうくたくたデス

まず第一報からの状況把握で、「まさか、それはないでしょ」という内容のところまで確認できていなかったのが、失敗。その後の対応を遅らせたと思います。
お客さんは、なんとアナログな手法(目検)で、データの整合性をチェックしてくれていたことで、かなりその後の時間を稼げた。本当に感謝です。

人間は疲れてくると、恐ろしく思考が低下する、ということを今までの経験上よく分かっているので、まず状況把握。復旧までの段取りをよく考える。
ここでもちゃんとお客さんと途中経過でも話しをする。

トラブルになると、自社でとりあえず解決したい、怒られたくないという思いから、あとで電話しようとか思うが、心配なのはお客さんも同じ。そして、そうやって途中で話すことで、別のアイディアが出たりもする。ここで隠したりすると、もっといけないことになる。だからお互いに緊急事態を認識して、状況を正確に把握できる状態にすることが大事。そういうときは専門、プロである自分たちが引っ張っていくしかない。そこでつまずいて、お客さんに主導権を握らせてしまうと、自社のスタッフの動きが鈍くなり、復旧にも時間がかかる。

そうなってしまうと、「お客さんがそういうんですよ」とか言う人が出てくる。もうこれではダメです。かなりまずい状態なので、「私が責任をとりますので、こちらの指示に従ってください」ぐらい言えるようにならないといけない。それがプロであると思います。
こういうときに、そこが計られるものだと思います。

今回のような事態は起こさないことが最も重要ですが、起きてしまったとき、ちゃんとお客さんのことを考えて対応できるか、自らプロとして逃げずに動けるか。。。

まだ予断は許さないですが、頑張ります。

2008年12月1日月曜日

研修生なブログが公開されています

11月27日から研修生が2名来ておりますので、そのブログでございます。
1ヶ月しかないですが、見ていくと、いろいろ面白いかもしれません。

http://sateliteworks.blog57.fc2.com/

http://rs.180r.com/humanite/

実は、この試みには、いろんな意味(願い)があります。

・業界の宣伝〜印刷・制作業界、その仕事がどんなものかをより多くの人に知ってもらうたい、という願い
 最近は、DTP、印刷となると、給料が安い、残業が多い…などなど、あまり良い印象はないようです。面白いのに…。

・「作っている」という感覚と、「作り出す」という感覚の違いを分かって欲しいという願い
物作りには何でも共通することだと思いますが、僕はいつもこう思っています。
作っている人とは、言われたこと、自分が知っている範囲内で「物作りをこなす」人であって、世に出している人ではない。誰かの手によって、例えば営業さんの手によって、お客さんに出されているものである。
作り出す人とは、受け取ったときから、「作り出す」工程はもう始まっていて、出来上がった物に自信を持っていて、それが営業さんの手によってお客さんに渡されたとしても、そこに自分のインパクトを出すことができる。
お客さんの目は決して節穴なんかじゃありません。結構ちょっとした気遣い、違いに敏感です。
「作っている」人は、言葉は悪いですが、「いいなり」になってしまっています。
「いわれたからそうした、言われたとおりにした」=「いいなり」ということです。
これでは、いつまでたってもそこから抜け出せないです。そして、効率化なんぞ、空想で終わります。

「作り出す」人は、どうしているかをちょと考えてみました。。。

仕事に使うツールをまず熟知している人。ツールとはソフトウェアだけではありません。仕事に使う使わない関係なくです。他にいいツールがあれば試してみます。だからアンテナを張ることはとても重要です。

そして、自分の環境をいつも最善の状態に整備します。環境とはマシン、ソフトウェアのことだけではありません。人の気持ち、自分の気持ちも同じです。

また、自分が効率よくできると自信のある型を持っています。そして、それをいつも磨いています。そこで、何か仕事が来ると、その型にはめるのです。でも、三角形の型に、四角形は入りません。そこで、まずどうするか?
その四角形が、次の仕事、自分の型に入れるべきだと思ったら、仕事を始める前(もしくは途中でも早い段階で)に、四角形の型の作成に入ります。
それは、チャレンジです。うまくいかないかもしれない。
でも、三角形の型を持っているのに、それを破棄して四角形を作ることは、とても屈辱的です。だったら、今度は五角形にも六角形にもなるものを作って待っててやるぜと思います。

もっともいけないのは、三角形だと思ってやったら、後で四角形であることに気付くとか、なんとかなるかなと思いつつやってみたら結局だめで、最初からやり直しになる、とか。

でも、僕はめんどくさがりなので、三角形の型にはめた方が早くできるので、はみ出た一辺について、相談します。「これっていらないですよね?バランス悪くなりますもんね」と言います。運良く「ああ、いらないですね」となったら、即忘却。「いや、これいるんですよ」となったら、理由を聞いてみる。自分の辞書に入れるべきかどうかを判断しなければいけませんので。お客さんは大抵同じような要望、要求をしてきます。だから、自分が切り返せるようになるために、そういう意図はどんどん吸収します。そして、自分の型を拡張するかもしれない。これはいいこと聞いちゃったと。
お客さんが発注先に対してしてほしいことの根本に、「これやって」「了解です」で、ちゃんとしたものが出てきてほしいと願っています。そのためには、お客さんの好みを知るのも必要です。ただ、それ以上に必要なのは、「自分ならどうする」という感覚です。お客さんの好みに合わせていくようにみせかけて、実は自分が良いと思う方向(品質、速度、将来性)へ持って行く、ということです。もっと言うなら「やりやすい方向」です。

ただ手を抜くということではありません。
物作りをする過程で、お互いにリスクを少なく、良い物を仕上げるにはどうすればいいか、を真剣に考えた末のことを、きちんと分かるように説明してあげることです。これこそプロだと思います。
時間を掛けて遅くまで、休日まで使って仕上げることが最善ではない、プロではない、ということです。
いかに日常の作業を短く済ませるかを常に考えていれば自然と流れが良い方に変わっていきます。
ただし、そこで早くできた分、もっと自分の技術に磨きをかけなければいけません。
それこそがプロがプロとして生き残っていくために最も必要なことです。

・「やる気」というモチベーションは、自分で上げるしかない、ということに気付いて欲しいという願い

「うわ、これやらんといかん…」と思ってやる仕事と、「おし、これやっとこ」と思う仕事では全くやる気が違う。やる気が違うということはスピードも、理解力も違う。
あれもこれもやっとかないかん、と思ってしまうと、何にも楽しくない。そのときにはもう「やりたくないこと」になってしまっているからです。それでは仕事は続かない。
仕事でやらされていると思う、もしくはそれさえも感じずにやっているのであれば、ひとつひとつ任されたことから、自分から、「この仕事でこれを身につけよう」「次に同じことをやるときに備えて、今からやることの作業ログをとって、あとで検証して、次はあの人より早くやってやろう」というように考えれば、全部面白い仕事に変わる。

・「教える」「教えられる」ということの大切さ、大変さ、楽しさを理解して欲しいという願い
技術というのは、常に変わっていきます。
既存の技術に追加されたり、修正されたり、無くなったり、全く新しいものになったりと。
今持っている自分の技術を伝えていく、ということが組織作りに必要です。組織も人間と同じ生き物です。ただの「箱である」ということではないのです。そこにいれば雨風しのげるというものではないのです。自分たちで土台を作り、屋根を作り、時には修理したりと、していかなければなりません。そうやって築き上げていく努力を常にしてこそ、組織が成り立つわけです。

新しい人がきたら、自分の持っているものを惜しみなく教える。そして、自分はもっと上を目指す。そこで、教えるときには、どう伝えればいいのか、どうまとめておくのがいいのか、他にどんな技術があるのか、それは本当に正しいのか、ということを真剣にやらないと、企業の中で教えるという行為には当たりません。それは「できそうなことだけやってもらう」ということになると思います。僕もそうでした。でも、それではダメなんですね。そうやってれば、いつか興味が湧いて、そのうち自分から踏み込んでくれるだろうと思っていました。「覚えられないなら、まあ、最悪自分でやるか」みたいな感じだったと思います。今はっきり言えるのは、それではダメだったということです。なので、教えるなら相当の気合いで教える。教えられる方も、分からない、違うのでは?、というように、そこでも真剣勝負する。それは企業にとって命とも言える技術の継承だからです。それを中途半端にしてしまっては、何も形として残らない、と思います。

なのですが、堅苦しくこういうことをやってもダメなので、今いるスタッフがそれぞれ持っている技術をセミナー形式で、それぞれの枠を作って研修生に教える、という試みをしてみることにしました。
さてさて、どうなりますかねえ、乞うご期待。

2008年11月24日月曜日

第13.8回Grailsコードリーディング(その4) Grails本気の入門~2時間でいけるところまでライブコーディング!?をまとめてみました



でもって、この辺で「製造元の情報は表示はするけど、編集とか新規登録は一定の人間にしか触らせない」ということを実現するために、認証機能を付けてみます。


25.Acegiプラグインを入れる。
Acegiについては、第5回GCRの山本ざっくりメモを参照してください。
当日は、ver.0.3でやりました。
・Acegiのインストール

$ grails install-plugin /ダウンロードしたディレクトリ/grails-acegi-0.3.zip

・下記二つ実行

$ grails create-auth-domains
$ grails generate-manager

そうすると、grails-appの中に、いろいろ出来てきます。
でも今回は一切触りません。あるユーザ権限を持つユーザのみが??を操作できるというような感じにします。



この辺で、いちいちrun-appの度にデータがクリアされるのが面倒なのでDataSource.groovyをちょっとだけ書き換えて、登録したデータが残るようにします。

development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop','update' //create-dropからupdateに変更
url = "jdbc:hsqldb:file:devDB;shutdown=true"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:hsqldb:file:prodDb;shutdown=true"
}
}


Acegi-pluginを入れたところからは、Grailsインストール+簡単な認証付きアプリをサックリ作成して動作確認。を参考にしてください。

今回の場合、Companyを触れるユーザと触れないユーザを分けたいので、
roleを「admin」「user」と2つ作って、適当な2人のユーザを作って、それぞれに割り当てます。最後にRequestmapで、/company/**をadminだけにすると、userのroleしか持ってないユーザは、そのページに行こうとしても「権限ないよ」と言われます。

で、適当なプロジェクトですけど、Morphに上げますので、そこで動作を見てください。



この辺で、TagLibをちょっと。というか、scaffoldしたときの日付表示が英語っぽいので、表示を逆にしたTagLibが社内にあったので、こっそり流用。山本師曰く、順番逆にしただけ、らしいです。
どこかにソースを上げておくと思うで、興味がある人はそこで見てみてください。
item.groovyの中のreleaseがDateなので、これを日本人が見てわかりやすいようにしてみます。
で、ここで、GSPがないと書き換えられないので、generate-allして、views/itemの下に、create.gsp
list.gsp
show.gsp
edit.gsp
を書き出します。


grails generate-all item



create.gspとedit.gspの下記をちょりっと修正します。

<!-- <g:datePicker
name="release"
value="${item?.release}" ></g:datePicker> -->
<ex:datePicker name="release"
precision="day"
years="${2000..2050}"
value="${item?.release}">
</ex:datePicker><br/>



こんな感じです。


もうひとつ、表示している方のshow.gspもちょりっと直します。

<!-- <td valign="top"
class="value">${fieldValue(bean:item, field:'release')}</td>
-->
<td valign="top" class="value">
<g:formatDate date="${item.release}"
format="yyyy/MM/dd" /></td>




これで、なんとなく違和感があったところが修正されました。

これぐらいで、一回Morphにアップしようと思います。
http://mkawa.morphexchange.com/
ここだと、URLにgcroneがつけられない?ので、HOMEとかクリックすると、出ません。適当にURLを変えてみてください。一通りできます。
ユーザも制限かけてないので作れます。

第13.8回Grailsコードリーディング(その3) Grails本気の入門~2時間でいけるところまでライブコーディング!?をまとめてみました



と、こんな感じでふとお客さんを見ると、多分「?」です。自分の仕事にはまだ合致していない模様です。
だいたい、「Company:1」って、まずそこで違和感ありますよね。なので、ドメインクラスにちょっと細工します。多分、これは最初からやっておいた方がいいと思います。

22.ID表記されているところを見やすくしてみます。
それぞれのドメインクラスに下記のように追記します。
Item.groovy

class Item {

static belongsTo = [company:Company]

String name
String spec
Long price
Date release

static constraints = {
name(blank:false)
spec(maxSize:4000)
price(max:10000L)
company()
release()
}
String toString(){ //ここから追記
return name
}
}

Company.groovy

class Company {

static hasMany = [items:Item]

String name
String note

static constraints = {
name(blank:false)
note(maxSize:4000)
}

String toString(){ //ここから追記
return name
}
}

toString()を使って、そのままnameを返す、ということをしています。
こうすると、下記のように、ちゃんと名前を返してくれるようになります。returnのところには、Groovyで色々かけるので、計算させたりとかもOKです。ドメインクラスとして持たせておいた方がよいものは、ここでやってしまうのも手です。
・商品を登録するところ(セレクタに「ニューキャスト」と出ている)


・商品情報を表示したところ(companyのところに…)


・製造元情報を表示したところ(Add Itemのところに「南天のどあめ」と出ている)




これでなんとなく「へー」から「なるほどね」と、ちょっとお客さんとプログラマが近づいた感が出るかもしれません。
ここで、もう一発、ぐっと近づけるために、フィールド名を日本語で表記させてみます。

23.i18n-templatesを使って、日本語表記にしてみる。
ですが、ここはなんとGCR当日に偶然にも上原さんが書いていたので、そっちを参考にしてください。
■[Grails]好きなGrailsプラグインシリーズその1 i18n-templates
★ちなみに、僕のは今Grails自体が1.0.3なので、grails install-plugin i18n-templateをしたときに、1.0.4を拾ってきてしまいます。そうすると、例えばcreateを開くと、create.jpsとか無いよ、って言われましたので、前に拾っていた1.0.3のPluginを入れると正常に動作しました。途中でPluginを入れ替えたけど特に問題ないのはなぜ?
ちなみに、今回の表記を変更したものはこんな感じです。
grails generate-i18n-messages item及びcompanyで吐きだしてくれたもの

home=Home
create=Create
edit=Edit
update=Update
delete=Delete
delete.confirm=Are you sure?

# Item messages
item.create=Create Item
item.edit=Edit Item
item.list=Item List
item.new=New Item
item.show=Show Item
item.created=Item {0} created
item.updated=Item {0} updated
item.deleted=Item {0} deleted
item.not.found=Item not found with id {0}
item.id=Id
item.name=Name
item.name.blank.error=Property [Name] of class [Item] cannot be blank
item.name.nullable.error=Property [Name] of class [Item] cannot be null
item.spec=Spec
item.spec.maxSize.error=Property [Spec] of class [Item] with value [{2}] exceeds the maximum size of [{3}]
item.spec.nullable.error=Property [Spec] of class [Item] cannot be null
item.price=Price
item.price.max.error=Property [Price] of class [Item] with value [{2}] exceeds maximum value [{3}]
item.price.nullable.error=Property [Price] of class [Item] cannot be null
item.company=Company
item.company.nullable.error=Property [Company] of class [Item] cannot be null
item.release=Release
item.release.nullable.error=Property [Release] of class [Item] cannot be null

# Company messages
company.create=Create Company
company.edit=Edit Company
company.list=Company List
company.new=New Company
company.show=Show Company
company.created=Company {0} created
company.updated=Company {0} updated
company.deleted=Company {0} deleted
company.not.found=Company not found with id {0}
company.id=Id
company.name=Name
company.name.blank.error=Property [Name] of class [Company] cannot be blank
company.name.nullable.error=Property [Name] of class [Company] cannot be null
company.note=Note
company.note.maxSize.error=Property [Note] of class [Company] with value [{2}] exceeds the maximum size of [{3}]
company.note.nullable.error=Property [Note] of class [Company] cannot be null
company.items=Items
company.items.nullable.error=Property [Items] of class [Company] cannot be null

書き換えたもの

home=Home
create=追加
edit=編集
update=更新
delete=削除
delete.confirm=本当に消しちゃうの?

# Item messages
item.create=商品の新規登録
item.edit=商品情報の編集
item.list=商品リスト
item.new=新規登録
item.show=商品情報の表示
item.created=商品 {0} を新規登録しました!
item.updated=商品 {0} を更新しました!
item.deleted=商品 {0} を削除しました…
item.not.found=商品ID {0} は見つからないぞもし
item.id=Id
item.name=商品名
item.name.blank.error=商品名は入れてくれないと登録できませんよ。
item.name.nullable.error=商品名は入れてくれないと登録できませんよ。
item.spec=詳細情報
item.spec.maxSize.error=ゴメン…詳細情報は、4000バイト以上は入れられないんだ…
item.spec.nullable.error=詳細情報入れてよ
item.price=価格
item.price.max.error=価格は、10001円以上は、入れちゃダメなんだ…
item.price.nullable.error=価格はいれなきゃダメなんだよ。
item.company=製造元
item.company.nullable.error=製造元はどこですか?無いわけ無いでしょ!
item.release=発売日
item.release.nullable.error=発売日はちゃんと入れてよね…もう…聞いてんの!
# Company messages
company.create=製造元の新規登録
company.edit=製造元情報の編集
company.list=製造元リスト
company.new=製造元の新規登録
company.show=製造元情報の表示
company.created=製造元 {0} を新規登録しました!
company.updated=製造元 {0} を更新しました!
company.deleted=製造元 {0} を削除しました…知らないよ…
company.not.found=製造元ID {0}?しらねえな…
company.id=Id
company.name=会社名
company.name.blank.error=会社名なしは、あり得ん!
company.name.nullable.error=会社名なしは、あり得ん!
company.note=備考
company.note.maxSize.error=ゴメン…言ってなかったかな。詳細情報は4000バイト以上は入らないんだよ…
company.note.nullable.error=詳細情報は入れてよね。
company.items=製造商品
company.items.nullable.error=商品がないけどいいの?よくないでしょ…

そうすると、下記のように日本語になってくれます。
上原さんも書かれてますが、僕はプロトタイピングのところで、お客さんのイメージできるものを作りたいので、とても重宝しています。そしてgenerate-allとかでViewを吐いた後も、使い続ければ、用語統一がしやすいです。
そうすると、こんな感じです。とりあえず商品登録で、バリデーションエラーを発生させてみました。

出来る限り柔らかくメッセージを書いたつもりでしたが、数行に渡って連発で怒られると、ちょっとヘコみます。気をつけましょう。



と、やっと、この辺でぐっと、また距離が近づくかもですね。

24.「あ、今更だけど、型番入れないといかんわ、ゴメン」
そうですね、そういうのにも対応してあげましょう。
じゃないと、ライブコーディングの意味ないですよね。
型番は大事なので、必須にしておきます。
Item.groovy

class Item {

static belongsTo = [company:Company]

String name
String modelNumber //追加
String spec
Long price
Date release

static constraints = {
name(blank:false)
modelNumber(blank:false) //追加
spec(maxSize:4000)
price(max:10000L)
company()
release()
}
String toString(){
return name + "(${modelNumber})" //ちょっと変更。商品名(型番)で表記されるように。
}
}




追加変更も簡単にできるんだ、と思わせつつ、本当は、この辺がGCRでも盛り上がりましたが、RoRのようなmigrateの機能がないというところ。ずーっと使い続けるには、上記のようにフィールドの変更があり得るので、そういったバージョンアップのときに、migrationして整合性を調整しつつ、永続的に使用できるようになってるといいのに、という話がありました。確かにそうなんだけどなあ、でも、大将山田さんも山本君もやろうと思えばできるでしょうね、って言ってたので、できるんだろうな。前のGroovyコンファレンスの後でもそういう話あったんだよなあ。実際どうなんだろうな。確かにインデックスの再構築とかいろいろあるんでしょうね。

と、一応こんな感じで、表示されます。ちょっと分かりやすいですね。


modelNumderというフィールドを追加したので、手動でi18n-templateのファイルに書き込んでもいいですが、もう一回、grails generate-i18n-messages itemをして、差分だけコピペして入れてもいいと思います。

その4へ続く

第13.8回Grailsコードリーディング(その2) Grails本気の入門~2時間でいけるところまでライブコーディング!?をまとめてみました

7.Grailsロゴの下に、ItemControllerというリンクがあるので、クリックするとItemListページが表示されます。


8.新規登録してみます。
メニューバーのNew Itemをクリックすると、新規登録ページが開きます。


適当に入れてCreateボタンをクリックすれば登録完了のページが表示されます。

※priceは入れないと、nullは許してないよ、っていわれますのでそれは後述参照で。


9.登録データの表示画面でEditをクリックすれば、再編集ページになります。
ここで編集してupdateボタンをクリックすれば、データは更新されます。deleteをクリックすればデータは削除されます。メニューバーのItemListをクリックすれば、登録したデータがリスト表示されます。デフォルトでは11件以上のデータを登録すると次ページに飛べるようなページネイトが表示されます。


ちなみにリストの各ヘッダをクリックすると、昇順降順がソートされます。
下記は、priceをソートしたところ。

ここまでで商品データの登録、確認、再編集、更新、削除、リスト表示が確認できます。



で、大抵この辺までで、最速なら5分ぐらいでいけるはず。
お客さんの反応は、まだ「へー」ぐらい。ここで乗ってくるのは、プログラムに興味がある人ぐらい。
「あのさ、エクセルのとき、名前は入力してないといけないとか、やってたな。
あと、1万円以上の商品は無いんだよね、まえ間違えちゃって怒られたよ業者にさ。
ああ、でも決まってないときもあるなあ。。。
それとこのSpecってのは、もっとたくさん文字はいるよ、こんなんじゃ収まらないねえ。」

10.次にバリデーション(フィールドの制約)を付けてみます。
nameは、商品名なので必須にします。
ドメインクラスのItem.groovyを開いて、constraintsを追加します。

class Item {

String name
String spec
Long price
Date release

static constraints = {
name(blank:false) //必須入力
spec(maxSize:4000) //textareaになる
price(max:10000L,nullable:true) //10001以上はだめだよ,nullでもいいよ
release()
}
}

ちなみに、このconstraintsに書いたフィールドの順番で、scafflodされたViewの中の表示・入力の順番が変わります。何も書いていないと、フィールド名のアルファベット順(name→price→release→spec)になります。
priceは、Integerにしてあると、10000だけで良いようです。Longだと10000Lと、明示してあげないといけないようです。



「この日付のとこさ、年月とか逆になってるよ。」
「それ後でやりまーす。その前に、商品って自社もあるけど、業者さんのもありますよね」
「ああ、そうそう。100社あるかないかぐらいだね。そうだよ、そこがパスワードかかってて変えられないんだよ、失礼なこった。」

11.製造元をComanyとしてドメインクラスを作ります。

$ grails create-domain-class company


12.会社名と、備考欄ぐらいの簡単なフィールドと、商品(Item)との関連付けを定義します。
折角なので、会社名は必須に、備考はテキストエリアにしてみます。

class Company {

static hasMany = [items:Item]

String name
String note

static constraints = {
name(blank:false)
note(maxSize:4000)
}
}

hasMany = [items:Item]とすることで、Companyには、itemsとして、Itemがいくつかぶら下がってますよ、ということになります。

13.商品(Item)にも、その関連付けを定義します。
Item.groovyに2行追加します。

class Item {

static belongsTo = [company:Company] //追加

String name
String spec
Long price
Date release

static constraints = {
name(blank:false)
spec(maxSize:4000)
price(max:10000L)
company() //追加
release()
}
}

同じ商品を、違う業者が製造していることはないので、1対多になります。



おっしゃ、ちょっとここまでで3分ぐらい経過しているかもしれないので、お客さんは「?」になります。そうならないように、「しゃべり」をこの辺で入れるのも大事です。
これで製造元の登録を見せよう、と思っても、ちょっとまった。
多分後ろから須江さんが「…Controllerが無いよ」とささやいてくれますので、落ち着いて次の行動に。

14.Companyコントローラーを作成し、Itemのときと同じようにscaffoldを定義します。

$ grails create-cotroller company


class CompanyController {
def scaffold = true
}


15.今まで作ったItemとCompanyがどんな感じになっているか、ここまでの動作を確認してみます。
もう一回run-appして、ブラウザを確認すると、新しいコントローラー(CompanyController)が出来ています。


16.製造元の会社を登録してみます。
CompanyControllerをクリックして、New Companyをクリックすると、新規登録画面が表示されます。


17.Createボタンで登録され、Show画面(登録した内容の表示画面)に切り替わります。


18.Editボタンをクリックしてください。編集画面が表示されますが、その中のItemsのところに、「Add Item」というリンクボタンが表示されています。


19.Add Itemをクリックすると、Itemの新規登録ページに切り替わります。


20.Createボタンをクリックして登録すると、Show画面になります。


21.ここにある「Company:1」をクリックすると、CompanyのID:1のShow画面になります。
ここで、「Company:1」に、「Item:1」がちゃんとぶら下がりました。
下は、Editボタンをクリックしたところです。


その3へ続く。。。

2008年11月20日木曜日

これは思わず見やすい

GCRの概略を書いておこうと思いつつ、コード載せるのが面倒でしかも見にくいなというところで、鰯のテクニカルノートさんのところを参照にしてみました。

これは見やすい!



class Company {
static mapping = {
table "T_COMPANY"
id generator:'sequence', params:[sequence:'company_id_seq']
}

String name
String description

String createdUser
String updatedUser

Date dateCreated
Date lastUpdated

static constraints = {
name(nullable:false)
description(nullable:false)
createdUser(nullable:true)
updatedUser(nullable:true)
}
String toString(){
return name
}
}


2008年11月19日水曜日

第13.8回Grailsコードリーディング(その1) Grails本気の入門~2時間でいけるところまでライブコーディング!?をまとめてみました

はぁ〜、終わりました。ってかもう三日たっちゃった。。。
書き出したら長くなってしまったのです。

Javaとか、Webアプリケーション開発の根本的な知識がない、よく分かってない人のために、よく分かってない人がライブコーディングをするというおかしなGCRをやって参りました。

Grails初心者でも簡単なWebアプリケーションをその場で本当に作れるのか、ということで、よく分かっている人がやっても意味がないとので、よく分かってない?私目がやらさせていただくことに。。。おいおい。。。

題材
商品管理っぽいものでやってみました。
商品には、製造メーカーが関連付いているイメージです。

僕なりのポリシー
お客さんのところで開発できるぐらいのレベルで考えているので、細かいところは抜きにして、ある程度形として目に見える、動かせるものを目指します。
なので、scaffoldオンリーでコントローラーには手をいれない方針でいきます。

Pluginを使う
せっかくなので、Grailsで公式リリースされているPluginを入れてみようということで、お客さんのイメージを視覚的に盛り上げるi18n-templates-plugin(表記を日本語にしてみるだけですが)と、管理者と一般権限でユーザに機能制限を与える等のユーザ認証機能を持たせてくれるAcegi-pluginを入れてみました。

TagLibを使う
日付表記がいっつも違和感があるので、社内で使ってるのを使ってみます。別にたいしたことはしてないそうです。日本人向けに表記順番を変えただけだそうです。

実際のGCRのときのPDFはほとんど「僕はプログラマではなくて、どっちか言うと営業っぽい感じですよ、何もできませんよ、でも1年ぐらいはやってますよ」っていう内容ですので、みてもしょうがないかもです。
ただ、ライブコーディングなので、これはやっぱりコミュニケーション、お互いの理解が必要だと思って前段で、まずたっぷり言い訳しておきました。

実際は、簡単なWebアプリケーションを作ってみただけなのですが、そのまま書いても普通のQuickStartと一緒になっちゃうので、ちょっと僕なりの脚色を加えてまとめてみました。

Grailsを使った簡単Webアプリケーション構築のターゲットのお客さんを想定してみる。
男性 40台前半 商品を卸している会社の課長ぐらい?
この男性は東京在住20年目だが、実は名古屋出身で、たまに名古屋弁が出てしまう、ちょっと乱暴な物言いだけど根はいい人で、付き合って2年ぐらい、という感じ。実在しません、あしからず。。。


エクセルでうちの商品の管理してんだけどさあ。A君がVBマクロっての?なんかよーわからんことしとって、そのままやめちゃったんだよねえ。

この前去年の探そうと思ったら一苦労したよ。どこにあるかわからねえから、電話しちゃったよ、A君に。ああ、教えてくれたよ。面倒くさそうに「あそこにあるんじゃないですかぁ」だってよ。今までどんだけ世話してやったかっての。虚しいねえ。。。

そんでもってパスワードかかってるのもあるし、開かねえときたもんだ。。。
ついでに「あくせす」だっけ?なんかデータベースっぽいのにしたらって、事務のねえちゃんが言うんだよ。前の会社はそうしてましたって。知るかってんだ、なあ。

でも、これがねえとさ、困ることもあるんだよねえ。いや、たまにだけどね。もともとちゃんと使ってねえしさ、だって何か触ってエラいことになったら、困るし。なんか良い方法ないかねえ。

あ、お金ならかけらんねえよ。だって、おまえこの不況だぞ。おお、そうだ、上司に愚痴ったらよ、なんとかシステムって会社のわけわかんねえ兄ちゃんを連れてきてさ、要件を教えてくださいってさ。なんだよ、こっちが聞きてえよ、何しに来たんだよってなあ。んでオレも真面目だからさ、一生懸命話した訳よ。したらおめえ、見積もりが来て腰抜けちゃったよ、1000万だと。最初に言えっつんだよなあ。まあせめて100万ぐらいとかさ、だいたい10人もいねえ会社で1000万円ったら1月分売上だぞ。社長に言ったら飛び降りちまうぞ。だからA君クビにしちゃダメだって言ったのに。それみたことか、だよなあ。

んなことしてばっかりだから、いつまでたっても忙しいばっかでさ、先がねえよ。
ホント、オレもケツまくるかなあ。。。

でもさ、いい商品もってんだよね。また新商品考えてみたんだよ、これこれ見て、すげーだろ、コレがなんと9,800円!ほら、欲しいでしょ、キタ?お友達価格で今ならなんと…


売られそうになるので一旦停止して、診断内容をまとめると、
・エクセルで商品を管理していた
・VBマクロを使って計算する部分を作った人がいなくなった
・ファイル管理ができてない
・パスワードを使って、触れる人を制限して安全に扱うべきデータもある
・操作に若干の拒絶反応あり
・システム屋に、やりたいことを全部いったら、見積もりが高すぎて無理
・全社員10人ぐらい、多分使う人は限られている。

こういうタイプのお客さんには、難しいことや金額的な話をしても意味がないので、
「イメージに合うかどうか分かんないけど、ちょっと今から作ってみますわ」と、ライブコーディングを始めてみる、という流れでいきませんか。いや、いきましょう。
多分この課長さんも1時間ぐらいは時間とれるだろうし、相談に乗って想像で話しするより、何か作った方が早くないですか、的なノリです。
でもって、このお客さんが「もしかしたら自分でもできるかも?」と思ってくれたら素晴らしいですね。

※アプリケーション名は、当日「Gcr One」と上原さんが命名してくれました。

1.gcroneというGrailsプロジェクトを作成します。

$ grails create-app gcrone

その後、cd gcroneで移動します。ちなみによく移動を忘れます。今回も。。。
※インストール、QuickStartとかはこっちをみてください。

2.商品データとして、Itemというドメインクラスを作成します。

$ grails create-domain-class item

実行すると、/gcrone/grails-app/domainにItem.groovyが作成されます。



で、お客さんに聞いてみる。「商品って、名前とその詳細と価格と、あと何が必要です?」
「ああ、発売日がないといかんね、商品名だけでわからんから」

3.商品データのドメインクラスにフィールドを定義します
エディタでItem.groovy開いて、商品名、スペック、価格、発売日のフィールドをそれぞれの型で作成します。

class Item {

String name
String spec
Long price
Date release

}

※priceはIntegerでもいいと思いますが、あえて失敗したいので。

4.とりあえずScaffoldしたいので
データ登録、編集、削除、リスト表示を確認してみます。
なので、まずその機能を与えるためのコントローラを作成します。

$ grails create-controller item

実行すると、/grails/grails-app/contollersにItemController.groovyが作成されます。

5.Itemコントローラーにscaffoldを定義します。
今作ったコントローラーItemController.groovyを開いて、
def index...のところを下記に置き換えます。

class ItemController {
def scaffold = true
}

※trueのところはItemでもいいですが、どうも挙動がそれぞれで異なるようです。詳細はまだ調べてなかったです。はい。

6.一回ブラウザでみてみます。
まずは何も考えずにgrails run-appでWebアプリケーションを動作させてみます。
立ち上がったら、http://localhost:8080/gcroneをブラウザで開きます。

$ grails run-app

正常に起動すれば、ターミナルにだらりと起動メッセージが出た後、最後に下記が出てきます。

Server running. Browse to http://localhost:8080/gcrone

成功すると、多分下記のような画面が表示されます。


その2へ続く。。。

2008年11月17日月曜日

JAGATセミナーしてまいりました

「オリジナルスクリプトを使った自動組版」というタイトルでJAGATさんでセミナーをさせていただきました。
WakuScriptについて言えば、初めての一般公開なので、分かりにくかったと思いますが、本来分かりにくいというか、ここまでの歴史を知らないと、なんでWakuScriptなのか分からないと思うので、そういうつもりでお話させてもらいました。

資料は、NCの本サイト(近日Ploneからコンフルエンスに差し替えます)に一応載っけてあります。ご参考に。

前の枠で、(株)フィットの藤原さん(お久しぶりでした)から自動組版についていろいろお話していただいたので、だいぶ省けました。ありがとうございます。マニュアルとか昔からやっていて、うわぁがんばってんなぁと圧倒されつつ、我々(tyama氏も同席)の方は、いつものように幾分まったりと…いやいや真面目に話ししてきました。

セミナーでもお話しましたが、我々は組版エンジンのメーカーではありません。作りたいですが、そんな時間と資本がありません。我々ができることは、Web開発の技術と、組版技術をどうつなげるか、つまりデータをどう扱うか、というところがテーマです。Web開発の技術といっても、WWWの世界だけの話ではなくて、企業内でもWeb技術を使ったイントラシステムとかあるわけで、全く違う世界の話ではありません。という我々も印刷・出版業界の中ですから。このWeb技術は、ユーザとユーザを繋ぐ、ユーザとシステムを繋ぐ、という点では、なんら敬遠する理由のない技術です。そして、とても面白い
こういう技術を使って、堅苦しく、そして大がかりなシステム構築をするのではなくて、楽しみながら、効率化やコスト削減などにチャレンジしてみてはどうかな、というのが言いたかったことです。

明日は、Grailsコードリーディングで、自分の番なので、今日失敗した?(してないよ)ライブコーディングをまたやって来ます。興味のある人は、月1回やってますので、http://groups.google.com/group/grails-jaに情報がありますので参考にしてください。

2008年11月12日水曜日

DTP作業効率の向上努力と品質の関係

うちだけなんでしょうか。。。

新人君が作成した図版が校正を通らずにそのままお客さんのところに行ってしまって、初校戻りのゲラが真っ赤っかで戻ってきました。
本人も落ち込んでいるわけですが、問題はどこにあるんでしょうか、ちょっと考えてみました。

この話が持ち上がったときに出た言葉は、だいたい次のようでした。
1.まず、「これでいいですか」と聞かなかった図版作成者が悪い
2.図版作成者に頼むときに、ちゃんと指示しなかった作成依頼者が悪い。
3.仕上がった図版データをちゃんと見ずに貼り付けた組版オペレータが悪い
4.内校を飛ばして、納品してしまった営業が悪い

僕が思うのは、これは、印刷事故に匹敵する制作業務における重大な過失であります。
印刷事故をここでは印刷された後に発覚する間違いとします。これはこれであってはいけないことですが、印刷物として残りますので、「注意して作業します。。。」という反省文も付いて事故報告書として扱われると思います。
しかし、制作を生業の中心としているうちにとっては、制作作業中におけるこういった問題の方が重要度は高いです。なので敢えて過失と言っています。

誰が悪いとかいう問題ではなく、会社全体の問題です。

この問題が引き起こしたものは時間的損失信頼低下です。
制作業務は、作業工賃でご飯を食べさせてもらっているわけで、作業時間を如何に削るか、つまり如何に効率よく作業するかが重要です。
ページ単価の中には、一定水準の品質を保つための料金が含まれているわけで、その単価に見合う時間でやる努力をしなければいけないわけです。とんでもない品質を通常品質にするための修正時間、校正時間など含まれているわけがありません。むしろ通常品質からさらに品質を上げる努力をしなければいけません。

そこで、「うん、分かりました。効率よく作業をしなきゃ!」と考えたときに、「作業を分担すりゃいいじゃん」ということがアタマに浮かびます。

「あんたはこれやって」「オレこれやるからさ」

この言葉だけで、高い品質が保てるのは、
・かなりの経験と上級の技術を持っているオペレータ同士
・組版センス、デザインセンスを持っているオペレータ同士
・普段お互いの作業の仕方、仕上がり具合を熟知し合っているオペレータ同士
だけです。

こういう中でやっと、「効率化」というのが生まれるわけです。
効率化とは、マニュアルを作り、それ通りにすることが全てではありません。
作業がマニュアル化されたところで、それは基本線であって、効率化の大前提とする部分ですから、その上にある「品質を守る、向上する努力」を忘れてしまっては、何も意味がない、効率化なんて出来るわけがない、ということです。

「出来るオペレータ」の中では、何を作るときでも「高品質」が当たり前であり、そのためには、何が必要か、何をしてはいけないか、ということを今ままでの痛い経験や新旧の技術から知っています
効率よくやることが、品質を上げる、ということを知っているわけです。
もうちょっと違う言い方にすると、
品質を上げるためには、どうやって効率よくやるのがいいのか、ということを常に日頃考えている、ということです。

前述したように、制作作業は、作業工賃をいただく仕事です。すごい時間をかければ、ちゃんとできるかもしれません。でもそんな「すごい時間」にお金を払ってくれるお客さんはいません。だって、出来ない人、出来る人に、頼んだときに、お客さんは最終の仕上がりが同じであればいいわけです。出来る人が1時間でやった仕事を、できない人が5時間かかった、というとき、じゃあ出来ない人が多く工賃もらえますか、っていうと「そんなんありえへん」ですよね

よく言うんですが、制作作業というのは、「効率よく」やることが前提の仕事なんです。
でも、この「効率よく」が何のためかというと、「品質を上げる」ことなのです。

そうはいっても、社内では、技術の差、経験の差は必ず存在します。
市販の教則本だけでできるようになる仕事ではありませんし、ある部分だけをちょこちょこやって「おいらはDTPオペレータだぃ」と言うのもありえません。
教える側もそうです、基礎を教えたところで「よしもう一人前だな」なんてこともありません。

先ほどの仕事を始めるときのやりとりが、この差があるオペレータ同士でなされた時、どんなことが起こるでしょうか。

・頼んだ人のイメージと、仕上がりのイメージが「なんか」違う
・頼んだ方は、分かっていることを前提に渡したのに、「意外と」分かっていないかった
・「想像以上に」時間がかかっている

多分、こんな感じだと思います。
こういう状態では、効率化も図れないし、品質も上がることはありませんし、かえって品質の低下、時間超過などの問題を引き起こします。

じゃあ、仕事を頼むとき、頼まれるときにするべきやりとりの内容をマニュアル化して、実行しよう、というのもちょっと違います。そういう話し合いも必要だとは思いますが、それをやってしまうと、マニュアルが中心であり、この問題の解決が「マニュアルを作ること」に意識がいってしまい、「マニュアルが完成したらこの問題は解決だ」と、勘違いをしてしまいます。問題が発生する根本的な原因は、もっと違うところにあるはずです。

全く一緒の作業で出来る仕事であれば、そういったマニュアルの徹底によって、何も問題ないんですが、制作作業はそうではありません。

日々の仕事において、様々なタイプの作業が流れてきます。日々流れている仕事の中で、どのようにすればよいのでしょうか?

それは、常に、お互いが品質を上げる事を目的として、

・お互いの経験と技術を理解する
・お互いの組版センス、デザインセンスを理解する
・お互いの作業の仕方、仕上がり具合を理解する

ことができれば、制作作業という現場の中でコミュニケーションしながらお互いに成長を目指せる。これがDTP制作の仕事の中で最も重要なことであり、品質の向上、効率化が達成できるのでははいでしょうか。

つまり、品質を守る、向上するという、仕事をもらって作業するにあたって一番最初に考えないといけないことの上に、効率化があり、そしてそれを作り出すのは、それぞれの作業者が周りとの理解を深め、相乗的に技術の向上を図ることではないでしょうか。

そして、こういうことがあるからこそ、制作作業は、面白い仕事になるんじゃないでしょうか。

2008年11月10日月曜日

ヘルパー2級のセミナー修了証授与式

6月中旬から約4ヶ月ぐらいですか、16名の方が受講されて、11月10日無事修了証授与の運びとなりました。

それぞれの方々が一言ずつ感想を言う場面があったのですが、いろいろな境遇の中、それぞれの動機があって始められたわけですが、印象に残ったのは、「●●さんがいたから続けられた」というような言葉が多かったことです。
座学と、実習の両方をぎゅっと凝縮して行うわけで、それぞれの生活の中で、それを最後まで乗り切るのは大変だっただろうなと、本当に思います。朝早くから、夜遅くまで。そして体力も知力も使いながら。

みなさんそれぞれ、もう諦めようかな、本当にできるのかな、と思ったそうですが、他の人の頑張りが励みになり、なんとか全員で修了までいくんだという気持ち、それぞれがそれぞれを思う気持ちが合ったからだろうなと思います。

介護事業部では、またやりたいそうですが、体力が持つかどうか、というところらしいです。
もう、これは本体側の僕たちも全面協力します、というか、やらせて欲しい、と心に誓ってきました。

JAGATで11月17日にWakuScriptの話してきます

マニュアル・フリーペーパー制作の自動化で、正式に出てますが、ひょんなことから依頼を受けましたので、快諾させてもらいました。

テキスト&グラフィックス研究会のセミナー枠の中です。
2008年11月17日 15:00-16:00 「オリジナルスクリプトを活用した自動組版」というタイトルです。WakuScriptの産みの親のtyama氏も同行します

フィットさんも前枠でお話されるんですよね、そっちも興味あり。ひっさしぶり、覚えてるのかな。

主な内容は、どうなるか分かりませんが(まだ資料作ってないので)、だいたい以下かなと。
1.なんでWakuScriptが生まれたのか
2.これからの自動組版システムはどうあるべきなのか

といった、ところが中心になるかと。

簡単に宣伝だけしておくと、WakuScirpt形式のデータで投げると、出力させたい組版エンジン用に変換されて組版ができる、というもので、この業界待望の中間言語という扱いになります。ホントかどうかは見に来てください。
すでに2,3社で動いてたりしますので、現実的な話も踏まえてできるかなと思います。

製品というわけでもなく、概念的な意味合いが強い仕組みですね。はい。

GlassfishでGrailsアプリを動かしてみる

なんも無いとこから5分でGrailsをGlassFish v3 Preludeに・・を試してみたメモを参考に試して見ました。ホントに5分でできるんかい。

まず、Glassfishってなんぞや、の人は、
Sun,Javaアプリ・サーバー「GlassFish」新版でJava EE 6の機能を先取りを見てください。

「GlassFishはモジュラー・アーキテクチャを採用する軽量なアプリケーション・サーバー」だそうです。
うちの案件でも2件ぐらい納品されてるんじゃないかな。。。
自動ビルドとかHudsonでやって、こっちに連携とかさせてるんだよねえ、確か。。。
Hudsonを使ったアジャイルな開発入門を後で見てみよう。っていうかyossyがやってたな。。。試してみよう。

手順は、上述通りですが、確かに5分でできますね。

2008年11月2日日曜日

「組版」と「DTP」の違いについて考えてみる

最近研修生も来ていることだし、社内で飛び交う「組版」という言葉と、やっぱり「DTP」という言葉が、「組版」とイコールかと言われると、ちょっと違う気がするので、その違いについて考えてみようと思います。

「組版」という言葉の説明については、ウィキペディア先生に 任せるとしますが、この記事を書かれた方は、TeXユーザなのかな。DTP化によって、組版の基礎知識のない人間でもできてしまうことが、全体的な質の低 下に繋がっているというようなコメントが書いてありました。それもそうだと思うのですが、基礎知識ってなんだ、と考えてみると、基礎学習のためのマニュア ルのようなものを想像してしまうのですが、それを覚えればいいのか、というとそうでもない気がします。

僕たちの制作の仕事は、どちらかというと、いわゆるページ物が多いです。
チラシっぽいのも昔はやっていたのですが、どんなものでも仕上がりや、技術的なところに拘りを感じていたので、難しい、手間のかかるものは、うちに頼む、みたいな感じで依頼されることが多くなりました。その結果が今いただいている仕事です。
なんでかなあと考えてみると、もともと情報処理の発想から入っている点が挙げられると思います。

先生の言うとおり、「文字や図版などの要素を配置し、紙面を構成する」ですから、いわゆる手動写植機で、いろんな数値的な調整を行って「組まれた版の部品」を印画紙に焼いて、版下に貼り付けて紙面作りをしていました。
今考えてみると、すごい話ですよね。
当時いろんな企業さんの社内報を作ったりしていたのですが、縦4段組とか、そんな手法で普通に作ってたんですよね。

ここでの最大の効率化は、まずページには1行何文字で何段で何行入るのか、というような基本体裁を決めることで、その中に作るというルールが適用されていました。

そして、最大の効率化の立役者は、お客さんです。書く原稿が、きちんと原稿用紙のマス目に収められていました。ワープロもまだ普及していない時代の話ですが、ほんの16、7年前です。
この御陰で、まずそうそう大きな違いもなく、お客さんのイメージする仕上がりを初校段階から出すことができました。

だいたいこの時代では、三校責了ぐらいまでやれば、相当気を遣った校正が必要なものか、もしくは間違いが多いとか考えられますが、後者はまずなかったと思います。写植オペレータがそんなことをしていては、飯が食えないのをよく知っていたからです。

版下作業も同じで、新規でも在版で一部差し替えするときも、版下上に印刷されない薄緑の線で、版面が分かるようになっているところに、棒打ちした印画紙を定規を使って丁寧に切って、糊を付けて貼ってました。

ということは、手動写植機の作業が「組版」であり、版下の作業が「DTP」なのかな。
DTPって、デスクトップパブリッシングですよね。確か、少し傾いた「机」の「上」で、版下作業をしてました。

そして、電算写植の時代になり、版下の体裁を作って、そこに文字を流したり、作業をデータで保管できるようになりました。

こ れはまた凄い話ですよね。暗室に行かなくても、出力センターにフロッピーディスクを持って行くと、だーっと印画紙を出してくれるわけです。そして、初校の 段階は普通紙で出力しておいて、校正戻りの修正を版下を切り貼りするでもなく、データを直せばよくなったのです。これで版下作業は大助かりですよね。出た 物をがっつり貼り替えればいいのです。

ここで、組版と版下の作業が1台のコンピュータで、一緒にできるようになったということです。た だ、チラシとか、パンフレットとかなんかは、まだまだブロックごとに作って、版下作業で、ばりばり貼ってたと思います。だから、すべてを網羅するものでは なかった。いわゆる端物と呼ばれるものたちです。

そのぐらいからだと思うのですが、Mac登場です。先にデザインの分野や、画像処理の分 野で使用されていたと思いますが、ドロー系のソフトが出現したあたりです。そして、「書院」などのワープロもだいたい認知されたところで、今度は、PC上 で動くワープロソフトも出てきて、こいつぁ原稿書くのに便利だねえということで、企業内での文書作りのスタンダードになりました。多分もともとは企業さん よりも、学術系の方がその流れが早かったと思います。多分このころには、TeXは、印刷会社に頼まなくてもいいような仕上がりにできるぐらいの実力を、も う持っていた時代だと思います。
10年ぐらい前って、一人一台パソコンを持っている企業も少なかったはずです。ホントに早いですねえ。

そして、絵やイラストを描くとか、図表を作る、写真の加工などの分野で、積極的にMacを使うようになってきて、チラシなどの端物は、もうそっちの方が早いよねと。文字も打てるしさ、と。ただ、写研の文字は使えないけどねえ、みたいな。
この時点で今までとの違いは、体裁の設定など数値ありきで、置かれたときを想像する「組版」から、置いてから考える「DTP」との差が出てきたところです。
この方法は、端物なんかはイイかもしれないが、端物以外では、効率化を下げる一つの要因です。

そ うこうするうちに、QuarkやPageMakerなる英語圏の方々によって作られたページレイアウトソフトが来日しました。一番の違いは、写研を代表す る日本の組版機メーカーが出していたそれぞれの専用機の価格との差があったところにあると思います。安いけど、結構できるやん、と。

こ こまでのいろんな時代背景から、組版作業というものが、ある一定のルールによって始められるものではなく、とりあえずこんな形?みたいなノリで始められる ようになってしまったと思います。間違っても直せるんだ、いつでも変更が効くんだ、という大きな逃げ道を作ってしまいました。これが作る側の保険としてな ら良かったんですが、お客さんも、そして作り手側もそれによって、元原稿というか何を載せるのかという情報についての緊張感も薄くなり、初校を出してから 原稿作りを開始する、というような流れになってしまいました。

それは、それでいいと思う。でも、制作効率はかなり落ちます。回を重ねるごとにどんどん増えます。総合的に校正回数が、4、5校当たり前になっていると思います。
できるだけ早く、正確に、効率的に印刷物を作る仕組みを考えてきた「組版」という技術は、影が薄くなってしまって、なんだが早く、安くできそうだし、変更効くし(写植屋に怒られることもない)という、「DTP」という分野が日の目をみるようになった、と。

ということは、この制作方法をとるのであれば、時間がかかりますので、代金は総合的に上がるはずです。なので、機器にかかる費用が減った分、善し悪しあっても作業時間は増えるので、実はそこで制作代金はイコールになるべきじゃなかったかなと。
今 回は、制作代金について議論するところではないので、掘り下げませんが、もともと日本語組版は、日本人が大好きな効率よく仕事をしよう、という考えのもと で技術として確立しつつあったと思います。ところが、コンピュータ化によって、それがまったく違う方向へ向いてしまった、というのは、今日、日本が先進諸 国の中で、生産性が低い国であるという結果からも明確です。

だいぶ前に、Quarkが日本に入ってきたとき、ある人が「そんなもので組版をしたら、日本の印刷はダメになる」と言い放ったというのを聞いたことがあるんですが、もしかしたらそういう意味だったのかもしれません。
そして写研さんがあの素晴らしいフォントたちを開放しないのも、こういうところも含めた拘りであるとすると、それはそれで凄いなと思います。考えすぎかもしれないけれど。
写研さんの考え方としては、フォントに対する思いもそうだけど、組版するときのことをどこよりも考えていたと思いますので。

まとめに入りますが、「組版」と「DTP」の違いは、いろんな意味の効率を考えて最初から計算によって出た数値を使って組むのか、まずは置いてみて、そこから始めるのか、という、感覚、見た目をメインに考えるのか、ということなのかなと思えてきました。
前者は、情報処理の分野であって、後者はデザインの分野ですね。

ここまで書いて、だんだんどうでも良くなってきたんですが、
自動組版という言葉はしっくりくるけど、自動DTPというのは何かしっくりこない
というのは、ここなのかなと。

だ から、デザイン的な発想でDTPを効率化しよう、といっても、結局、今存在するアプリケーションがそういう発想で作られてはいないってことですね。もとも との発想、ルールによる組版ということに立ち返る、そしてお客さんの情報をちゃんと固定化させるお手伝いをする、というところを再認識した上で、制作プロ セスを構築していく、ということが自動組版にしろ、手動組版にしろとても重要です。

と、最近入った人たち向けの、ざっくりとした歴史でございました。
いろんな意見があると思いますので、一つの参考として。

2008年10月14日火曜日

DTPの「情報をデータ化する」プロセスの重要性を考えてみる

印刷物、価値、というところでググっても何も出てこないので、人に頼らず自分で考えてみることにする。

最終的な結論は、
印刷物の価値は「編集ボタン」と「削除ボタン」が無いこと
じゃないかと。

印刷物の価値は、「紙」としてみると、それ自体が普遍の価値のように考えられてきてたけれども、時代の流れと共に変わるべきものであって、そこにずっと留まっていることが、業界のよくない方向、閉塞感に繋がっているのではないかと思う。

「紙」が情報源となっていた時代から、ネットの、サーバの、ハードディスクの中に情報があり、それをいとも簡単に世の中に出せるような時代になっているわけで、それは素晴らしいことなんだけど、情報の価値、という側面から考えると、この状態は、量的価値であり、質的価値ではないと言える。

蓄積された情報からブラウザに再現された情報は、一旦公開されてからも、編集され、削除されながら、質的価値は常に変異する。よって、鮮度としてみると当然高い。
一方、「紙」の場合は、蓄積された情報から「校了」という瞬間をもって、情報がそこに固定化されるので、再現された情報の質的価値は、その瞬間は正確であっても、時間と共に鮮度は下がる。

ただ、情報の質的価値は、「鮮度」だけではない。その情報の「正確性」も重要な要素だ。

ネットから、できたてほやほやの情報を取ることはできる。
でも、その情報は常に更新される一過性のものであって、どの時点が正しいか、という議論は、まず闇に葬り去られる。そこに誰も期待しない。期待させる時間を与えないぐらいの情報が次々にやってくる。
だから、それを使う、見る人たちにとってみると、リンクボタンを押したとき、ページを開いたときに出ている情報が、自分がその時点で望んだものである、という情報を引き出した責任をそこに負うことになる。

そこで「紙」の中の情報について「正確性」という側面から情報の質的価値を考えると、その時点では、もっとも鮮度が高く、正確性が高いという情報の質的価値の極みを「校了」という名の下に、その瞬間に作り上げる。

現実的に考えて、スーパーのチラシ、カタログの商品名、価格を間違えたら、てぇへんなことになる。数々体験した。印刷屋、写植屋は、そこにプライドを持っている。
これほどまでに激しく動く情報化社会の中で、その瞬間、時間を止めて、情報を固定化するという力業をやってのけるプライドだ。

情報は変わる。
最後の最後まで、下版の時間が来るまで、他店の価格の情報を待ちながら、自店の価格を決定する。
最後の最後まで、自分が書いた文章が、他の人に伝わるかを、考え続ける。
最後の最後まで、間違った情報ではないか、確認する。
そうしてできた「紙」には、情報を伝える側の思いと責任が、固定化した紙面の中で、限られたスペースに凝縮されて、文字、写真、図、表を使って再現される。

インターネット、イントラネットで公開しているデータベースの入力を少し間違えて、
表示がおかしくなっていた、とすると、
それは、「てへっ」とか言って、「こっそり」直すことができる。

しかし、「紙」になってしまったら、直せないのである。
「編集ボタン」も「削除ボタン」も無いのである。
どんな権限を持った人でも直せないのである。
「てへっ、間違えました。。。直しといたんで大丈夫っすよ!今最新の情報になってますんで」なんて、軽いノリはあり得ないのである。
1文字の間違いが重大な印刷事故として、扱われるのである。
間違った情報を編集し直して正しい情報にしたいなら、刷り直しとなる。印刷、製本までして、納品待ちのパレットに積まれた印刷物は、ゴミになるのである。
訂正のシール貼りをしたり、お詫びの広告をしたり、お客さんに謝罪したり、事故報告、対策会議が開かれたり、罰金の話とか、本当に大変なことなのである。

自分たちのミスで、情報を間違えたら、お客さんに対しても、その先のお客さんに対しても、そして社会に対しても責任がある、ということを、長い歴史から刷り込まれている。
情報に対しての責任という面では、もしかしたら、お客さんよりも考えているのではないか、と思える程のプライドを持っている。(と、思いたい、、、で、なかったら、何で何回も校正とか内校する?)

すでに、情報を作り、蓄積する手段が、お客さんの中にある。
そこから、共同作業で、固定化した情報を作り上げるのは、大変な作業であり、
お客さんからも、自分たちの情報の整理を求められるのではないかと思う。
お客さんの目的は、情報を蓄積することであり、それを対外的な公開を目的として引き出すには、相応の人材がいなければ無理だろう。

それが分かるのは、DTPデータを自分のところのDBに戻して欲しい、というときだ。
間違いなく、この瞬間、お客さんのところに蓄積される情報よりも、印刷物の情報が正しい、ということが言える。

なぜ、そうなるのか?
蓄積されている情報は、粒であって、その整合性は、放っておけば、保たれることもなく、そこに存在するだけになる。
入力間違いをしたなら、入力した人の責任だ。
そういう状態の日々の中で、「ちょっとシステム止めて、全体が間違ってないか調べて、調整するから待って」というのはあり得ない。情報は常に変化していて、止められないからだ。
しかし、そのお客さんの外、社会に対して出て行くときには、その責任は会社の責任となるので、まとめ上げをしなければいけない。
便利になったようで、便利になっていないと思うところは、この欲求が満たされないことにある。
結局のところ、人間は、物体として目に見える状態にならなければ、本気を出さないのだと思う。

正確な情報を作り出すというプライドによって、印刷屋たる存在意義によって、そこは、我々が、自信を持って主導するべきところなのではないかと思う。

だから、付加価値とか考える前に、本来の価値をもう一度見直さないといけませんね。。。
うーむ、伝わるのかな。。。

2008年9月20日土曜日

アジャイルプラクティスとGettingReal

Getting Realは、37signalsの人たちによって書かれています。
37signalsは、BackPackとか、BaseCampとかのWEBアプリケーションを開発し、サービスとして提供してる会社です。(だよね?)

アジャイルプラクティスは、その後に書かれた本です。
どちらもアジャイル開発についての手引きみたいな感じの内容ですが、ともに英語の翻訳なので、翻訳のされ方で若干、読者に伝わるニュアンスが違うのではないかと思います。

僕が読んだ感想で言えば、アジャイルプラクティスは、より現場サイドでの出来事を想定しているのに対して、Getting Realは、より哲学的な印象が濃い。

両方を読んで感じるのは、現場ってどこも大変だよなと。うまくいく開発なんて存在しないんじゃないかと思うぐらいです。うまくいっているように見えて中身が大変なことになっていたりすると思いますし。

結論になるかどうか分からないけれど、自分たちが携わっている開発は、情報社会の上に成り立つものであって、その情報社会がめまぐるしく変わる状況の中では、お客さんがそのとき良いと思ったもの、僕たちがそのとき、これだと思ったモノは、次の瞬間まったく意味をなさなくなることもある。だから、発注する側も受注する側も常に変わり続けることを前提としなければ上手くいかない。
工業製品として車を作ります、というシステムであれば、その最終の形が見えているわけで、それを出せばよい。でも、最終の形が見えていない、見えないものを作り出すシステムというのは、世の中の情勢とともに進化し続けるシステムとして成立させていくしかないんじゃないかと思います。

なので、作る側として、どんな小さな案件でも、小さなモジュールでも、より真剣にならないといけないし、お客さんと一緒に、さらにその先をしっかり見続けることが必要だなと思います。

GrailsでBDDとTDDの比較

Pluginを作ってみようと思って調べてたら、antを使ったサンプルがあったので、試してみようと。
[Java][Groovy] Grails プラグインの作り方 - シンプルな easyb 実行プラグインを作成

で、easybってなんぞやと、Javaのビヘイビア駆動開発をやさしく実現する"easyb"を試すを見て、へえー
、知らなかった。easybとはビヘイビア駆動開発(BDD)ですと。

テスト駆動開発(TDD)との違いも書かれているのですが、どっちがいいんだろうな〜。
お客さんから聞いた内容を、検査仕様としてまとめていきやすいのはBDDかなと。BDDはDSLで書くみたいだから、文章(ドキュメント)にはしやすい気がします。
無いものと言えば、TDDとしてのWEBTestのプラグインはHTMLとかファイルが出てくるけど、easyBのプラグインでは出てこない。出せるようにすれば良いんだけど。
面白いなと思うのは、Pendingという内容が書かれていない検査項目の数が出てくるところかな。

「こういう状況で(given)、こういう条件を満たしたとき(when)、このように振る舞う(then)」
だそうです。

でもって、初回、バージョンアップリリース直前とか、そういうときには、TDDで作ったテストを回した方がいいのかな。使い分けるべきか、使い分けられるものなのか、きっと山本氏が答えてくれるんじゃないかと。

2008年9月18日木曜日

GrailsアプリをMorph AppSpaceで動かしてみる

●morphでデプロイするPluginがあった....
参考はここです。
ゲンゾウさん作成のGrailsプラグインをインストールすれば、
grails deploy-morph
で終了です。

●DataSource.groovyの中に書くProductionのDataSourceについて
ここを参考にしました。
上記Pluginからデプロイさせればgrails install-templatesをしてweb.xmlを触る必要ないです。
自分は、これではまった後、Pluginを見つけました。
ちなみに下記のように書き換えました。(サンプルはMySQLだったのでPostgresに変えました)
production {
dataSource {
  dialect = org.hibernate.dialect.PostgreSQLDialect.class
  driverClassName = "org.postgresql.Driver"
  username = "Username" //dashbord→database→show detail→username
  password = "Password" //dashbord→database→show detail→password
  dbCreate = "update"
  url = "jdbc:postgresql://*Host*:5432/*Name*?CharSet=UTF-8"
}
}

●補足
morph_deploy.propertiesをMorphAppSpaceのControllePanelから落としてきて、Grailsアプリの直下に置きます。

morph.usernameと、morph.passwordを追記するapplication.propertiesファイルは、Grailsアプリ直下です。既存の内容の下に追記すればよいです。書いてないと、grails deploy-morphの後に、UsernameとPasswordを聞かれます。

●Grailsアプリ
http://mkawa.morphexchange.com/に置いてあります。
Bookのドメインクラスを作って、コントローラには、scffoldを書いただけのものです。

●動かしてみた感想
もっさり感がちょっと。認証付きの状態のアプリなら全公開でもいいけど、途中の段階で、全世界にお披露目するのは、どうなのかなと自分のSubscription自体に認証かけられるといいんだけどなぁ。いちいちテストサーバ立てるのもめんどいし(もしくは空いてないし)、っていう面では重宝しそう。ただ、お客へのプレゼンツールとしては無理ですねえ。とすると、検証用のテストアプリとかそういうのを確認用として置くのはいいかもしれないな。Jettyみたいだし。何か作ったりした後、説明だけだと本当に動いてるか分からないし。これするとエラーでるんだぜっていうのを出したりとか?あと完成して、多少もっさりしててもいいからっていう場合?

●関係ないけど
domainClassに付加させたいものを、ゲンゾウさんのPluginにあるsrc/templates/artifacts/DomainClass.groovyを見て、いつも山本氏の言っているartifactsを使って「規約によるコーディング」をするんだい、というのが、そういうことなんだなと、なんとなく分かった気がする。意味違ったらごめんね。

2008年9月17日水曜日

CMSを探してみる

自分に合うか、合わないかで勝手に比較してみる。

●もともとCMSなツール
  • Xoops
  • Zope/Plone
  • Confluence
  • GoogleSites

●ブログツールをCMSとして使う
  • MovableType
  • WordPress
●手軽さ(設置までの楽さ)
だいたいどれも似ているが、全般的にブログツールの方が楽だと思う。
ドキュメントも多いし。

●デザインのカスタマイズの楽さ
これもブログツールの方が楽。自分はPloneのデザインカスタムで挫折したことがある。

●ユーザ認証(SNSっぽさを出す)
CMSツールの方がよい。MTでもWPでもプラグインで出来るらしい。あとBASIC認証すればよいとか。

●運用・管理
手軽さからいけばブログツール。ユーザ、コンテンツに細かい権限を与えるとか、するのであれば、それ自体がCMSの要求なので、頑張ってCMSを使いこなす。

●コスト
導入コストは、MovableTypeが商用ライセンス版ならかかる。あと、Confluenceもかかる。
あとはフリーだが、知識を必要とするから、それなりの人に頼むとか、自分で勉強するとか、考えると、結局はコストがかかる。立ち上げにどれだけ時間を割くかで考えた方がよい。あと運用面でも、サーバをレンタルするか、自前にするかでも変わってくる。

●GoogleSitesについて
簡単にSNS作ってみるかと思いつつ、触ってみたけど、手軽さと機能、使い勝手、という面でバランスが悪くて、中止。一番気になったのが、エクスポートが無いこと。やっぱり書き出せないのはつらいと思う。

まとめ
ブログツールは、CMSよりになり、CMSはブログよりになってきているのかなと。
見た目にあまり拘らず、コンテンツをがんがん貯めていくのであれば、WikiであるConfluenceが一番。ただし、お金がかかる。
見た目もちょっとカスタムできて、なんとなく見栄えよく、それなりに、ならMTとかWPでいいのかなと。あんまり複雑にすると、メンテが大変になるので、バランスよくするのが大事。
それから、何にせよ、気合いは必要。

2008年9月9日火曜日

写植の「収める」技術

どなたか合理的なDTPの仕事を下さいを読んでたら、いろいろと思い出した。

まだ会社が5人ぐらいだった頃、某組版ソフトメーカー大手の故Mさんが言っていた。
写植がプロフェッショナルな仕事だと言える理由は、「限られたスペースにバランスよく文字を収めることができる」ということだと言われたことを思い出した。
やっぱりセンスが問われる領域の職種だと思う。
今ならDTPアプリ上で編集者がちょちょいとやると思いますが、
昔は、ラフレイアウトとそこにかかれたQ数、書体、文字間、行間で指定されたものを発注主が納得いくようなセンスで、写植(版下も含む)をこなしていたと思うのです。
その方がよっぽど効率がよかった。
大先生のデザイナーさんの指示だったとしても、この方がいい、って言えるぐらい写植屋は強かったんじゃないかな。それぐらい組版というところに執着していた気がする。

だからやっぱりソフトの操作に執着してはいけないのです。
こうしたいという結果にたどり着く為の、あくまでもツールであるということです。
そして価格(工賃)は、落とすべきではなかった。
機械によるところではなく、人によるところだから。
製版とか印刷の類は、完全なオートメーション化や、明らかな工程の削減があったかもしれないが、写植で言えば、逆に手数が増えている。

アナログ→デジタル移行期に、業界としてこの劇的な変化に対応すべく、ちゃんとした協議が必要だったのだろうと思う。

今頃言っても仕方ないですが、どうも業界全体で足掻いているようで仕方がない。

モノを作り出すのは人であって、そういった人たちに合理化のフィルタをかけてしまっては、いいモノを作り出す環境はできるはずがない。もっとプロフェッショナルを育てて、業界全体が活気づくようなことをしないといけないと思う。今のままでは、理不尽さにやられてるだけで、モノを作り出す意欲さえなくなってしまう。
価格を絞るのは不景気だし、仕方がないかもしれない。でも、理不尽はいかんよね。
そして日本の本を外人に作らせるって、ホントにいいのかな。
本作りとか、チラシ作りも含めてクリエイティブさを取り戻さないといけないですね。

※故Mさんは、賛否両論で、敵も多かったですが、僕らは彼に支えられました。彼なくして今の会社はありえません。僕が印象に残っている言葉は、「そら、痛快やな!」。本人の出自はそれほどよくなかったと記憶しています。だから、僕らみたいなちっぽけな会社が少しずつ大きな仕事に取りかかれるようになっていくことを、とても喜んでくれました。

うーん、明日のプレゼン資料は、飛行機の中で書くしかないな。。。

2008年9月4日木曜日

X-DEV2008@目黒に行ってきました

目黒で2008年9月4・5日開催されているX-DEV2008に行ってきました。
といっても、見に行ったセッションは、2つです。
1.リクルートの川崎さんによる「マッシュアップ × エンタープライズ開発」
2.アンテナハウス村上さんによるCSSスタイルシートによるページ組版の可能性

1は途中からだったのですが、リクルートさんが公開しているWEBサービス用のAPIを使ったマッシュアップの話。
コマーシャライザーというWEB上でムービーとして流すCMを作れますよ、というサービスの紹介。こちらはネット環境の不具合で作るところは見えなかったけど、会社に帰ったら見てみようと思います。静止画であるJPEGと、テキストを合わせてムービーにする感じです。
携帯百景のノリで、ある画像と文字を合わせて、連続したムービーになってます。
どうなんでしょうか。。。自分は理解できてないかもしれない。それをブログに貼れますよ、というところ?まあ、とにかく後でみてみよう。
川崎さん個人プロジェクトのくるくるあいの方が面白かったかなと。
確かに、母国以外のニュースとかを自分の母国語で見るのは面白いかも。

2は、アンテナハウスさんのXSLFormatter改めアンテナハウスFormtterV5です。
CSS3で書かれたスタイルを取り込んで組版してしまうというものです。
従来のFOの書式では、やはりとっつきにくいところがありますが、CSSで書けるとなると、その敷居はかなり低くなります。
これがどういうことを意味するか?
印刷・出版業界からみると、顧客となる企業内でもコンテンツ管理が進んでいて、紙の需要(印刷するという行為)が減っています。多分紙よりもデータとして蓄積されていることの方が多いと思います。(重要文書は違いますが)ですが、今までは、それらのデータをさすがに紙にするとなると、ちょっと体裁整えてとか、用紙サイズとかマージンとか画像解像度とかあって、加工も含めて印刷会社に頼んでいたとします。(顧客にもオンデマンドプリンタが存在することが当たり前になってきているので、顧客としてはPDFだけでももらえれば、みたいな感じに思うかもしれません。)
また、データを加工するわけですから、校正もしっかりとやらなければならない。(Wordデータ入稿から校正なし、というのは今のところあり得ない)
そういった中で、例えばデータ配信がHTMLが先行するとなると、こういったCSSで書ける組版エンジンがあれば、WEB担当がそこまでできる可能性があります。
その方が、顧客にとっては、データが流用できるわけなので、良いことづくしです。
そうするとどうなるか、、、
制作会社は仕事がなくなり、印刷会社は、本当に刷るだけ、ということになります。
企画提案によって顧客獲得をしなければ、価格競争のみでは今日もう戦えない状態のなか、
企画提案する場所も与えられなくなる、ということになります。(極端に考えればですが)
これは、WEB関連を含むシステム業界が気付かないうちに、早急に手を打たないといけないですね。そう簡単に、入ってこれないと思っていたけれど、これはかなり早い段階で流れが変わる可能性がある、という危機感と、素直に、これはすごいなと思わせる、地味だったのにかなり後を引くプレゼンでした。

2008年8月26日火曜日

DTP効率化のためのシステムとは?(草稿)

最近、自分で文字を書いていて、ふと思った。
「自動組版」と「自動作成」って違うよなと。

どっちかというと、完全に印刷用データ(今ならPDF)を作ってしまうのを「自動作成」、DTPアプリに依存度を残すことができるものを「自動組版」と言った方がいいんじゃないかな。
ま、自分のことなので、どうでも良いかもしれないですが。

えー、本題。まだ草稿です。ご意見いただきたいな。
毎回言いますが、ヤワな生き物なので、優しくお願いします。

「はじめに」
DTPの効率化を、「コスト削減」という入り口から入ってきた場合、要は、かかる時間を削減する、ということなので、じゃあ、組版するところを、自動でやればいいじゃん!なんてところがゴールだと考える。入稿(In)も出稿(Out)もパターンが一定ならOKです。言われれば100%完全自動「作成」システム作ります。入力してボタン押したら、PDFが数秒で出てくるの作れます。でも、今までかかってる「コスト」ってそこじゃない。そんなところなら、みんなが真剣に考えて、統一してしまえば終わりです。
※InOut理論はTyamaリスペクトです。

「つまり要求はない、ってことになる。」
でも、みんなが望んでいることは、そうじゃないのが現実。
入稿もいろいろ、出稿もいろいろ。InもOutもバラバラということです。
つまり、Inするものがバラバラである限り、Outもバラバラです。
「コスト」がどこにかかっているかというと、この「バラバラ」部分です。
この部分を、解決することを考えなければ、「コスト」はいつまでたっても削減できません。
そしてもうひとつの重大な過失「使い回しができない、つぶしの効かない(将来性のないという意味で)データにしかならない」ことです。
そうそう、こういうシステム構築で、要件定義をまともにやろうと思うのは、そもそも間違いです。システム開発の世界で、要件がその時点の要求でしかないことで、意味がないことであることもさることながら、どんなものをInするか、どんなものをOutするかさえ、使ってみないと決まらないということだからです。ここを追求すると、ガチガチなシステム構築か、全部手動か、というゴールにしかたどり着きません。

「InとOutを統一しなきゃコスト削減のための自動化って無理ってこと?」
んー、そうなんだけどちょっと違う。
DTPの効率化は、基盤となる環境の整備、作業ルールの整備、技術の整備を確立して、実行できれば必ず実現できる。
そこを補完するのがシステムなんじゃないかなと。
ここでいうシステムってのは仕組みであって、大仰な物ではない。
普段使っているテキストエディタだって、十分な力を持っている。
ただ、それが、自分のものだけになっていては意味がない。
入稿、出稿、校正、印刷などをスムーズに流すには、使い方が統一されていなければならない。

「でも、人がカムと事故が起きる…」
そう思うなら、システム化する。ただし、人を排除するということは、人の感覚による命令ってできなくなる。例えば、「したい(希望)」というニュアンスは無理。「する(命令)」でなければならない。「する」と言った時点で、他は排除されるということになる。(この中に分岐を書くのはアリだが)ここを「割り切れます」というハンコが無い限り、システム化は失敗する。

「じゃあやっぱり制約がありすぎて、使えない」
キタ!これがこの業界で必要な仕組みなのに導入されない理由。
かみ砕いて言うと、「いろんな物を投げるから、ちゃんと組版してね」ということです。
どうどう巡り開始です。コスト削減とかデータベース化とかしたいのに、したくない、と言っていることになります。

「DTPの効率化でコスト削減できないのは、システム化以前の問題」
コスト削減命令によるDTP効率化のためのシステム化は、前述から無理なこと、ということが分かるでしょうか。要は、したいのに、したくない、っていってる事になるということです。
で、その解決がどこに落ち着くかというと、ま、オペレータが頑張ればいいんじゃね?ですか。

「困るのは誰?」
そんな「適当さ」が目立つ業界ですが、そもそも不景気なんて言うとる前に、そこをちゃんと解決することが、今後に繋がるんじゃないですか。価格競争は、資本主義社会として仕方ないかもしれないけど、その制作作業、現場の問題・課題を置き去りにして、価格を下げたところで、モノがなければ印刷できないのでは?あぁ、海外でやりますか。勝手にやってくれ。物作りにおける重要なポイントを放棄するなら、ホントにこの業界終わりです。いか〜ん、盛り上がってきた。落ち着こう。この話になるといつもムキになる。分かるんですよ、僕も現場だから。そう簡単にはいかんぜよと。でも、そこをハナッから「できん!」じゃなくて、解決を導くために「やってみる!」と、敢えて挑戦すべきじゃないでしょうか。多分そう思う人の考えは正しいのです。でも正しい道を阻む何かが潜んでいるんです。それは人を殺してしまうような宇宙から来た未確認生物なのでしょうか?せいぜいビフィズス菌でやっつけられる悪玉菌じゃないかと。(結構手強いか)
うんまあいいや。そう。つまり困るのは自分だゼ、ということです。

「DTPからクリエイティブ的な要素は外せない」
ここでいうクリエイティブは、モノを作るときの基本である「センス」という要素が大きい。
モノを作るには、「センス」が必要です。
そして、そのセンスは、レイアウト、デザインのセンスもさることながら、めんどくさいことをしたくない、と思えるかどうか、そのポイントを発掘してアピールして解決できるかどうかのセンスだと思う。
システム開発で言われている「Don't Repeat Yourself!(DRY)」と同じ。
だから、システム開発だって、クリエイティブだと思う。プログラマはエンターテイナーであるべきだ。これは長くなるのでまた今度にします。
クリエイティブとコスト削減は、相反しているようで、実は、クリエイティブの先にコスト削減がある、とも言える。そして、コスト削減の先に、クリエイティブはない。

「コスト削減という入り口がウマくない」
つまり、DTPの効率化を考えたときの最初の入り口が「コスト削減」というのがよくないということだ。「めんどくせぇ」を時にはエレガントに、エンターテイメントに、クリエイティブにこなした先に、コスト削減がある。ここでそうじゃないと思ったら、もう一回上述を読んで欲しいです。つまり、DTPにまつわる仕組み作りで、クリエイティブさを外したら、何も成り立たんということです。「効率化」は、「コスト削減」のためのものではなく、「DRY」になるためのもんだと思うわけです。ここで目指すクリエイティブさは、無駄なく結果を出せる技術ということです。じゃなきゃずっとイラッとしっぱなしです。

「でも解決しなきゃいけない、解決してやるゼ、という気合いはどこに持って行けば。。。」
作業している人で、真剣にやっている人であれば、こんなくだらんことを何度もやりたくない、と思ってる人だけが、この行にたどり着いてるんじゃないかと。勝手に想像しつつ。。。
すでに世の中には、数多くのソフトウェアやシステムが販売されていますが、「お、なんだか、これでできそうだ!」と思ったとしても、実際上手く使えなかったりします。
ここまで言って、そんな都合のよい仕組みはないので、手作業でお願いします、というと殺されそうなので、下記あくまで指針です。
では、何を解決できるシステムならいいのか。。。
前述の「いろんな物を投げるから、ちゃんと組版してね」という要求に応えられるシステムが必要ということですね。

「システムに頼りたい部分をちょっとまとめてみる」
・登録した人は誰なのか?
・登録した日はいつなのか?
・更新出来る人、した人はだれなのか?
・削除出来る人、した人はだれなのか?
・ステータスによって状態を変えたい。例えばロックするとか。
・データの閲覧・編集に人の制限をつけたい。
・テンプレートを共有したい。
・WEB(ブラウザ)から入稿させたい。
・入稿されたものは、指定されたテンプレートでPDFを自動作成したい。
 または、入稿されたデータをダウンロードしたい。(CSV,XMLとかTextとか)
・入稿フォームを登録、編集したい。
・テンプレートを登録、編集したい。
・画像をアップロードしたい。
・データを検索したい。
・過去のデータを複製して使いたい。
これ以外あるのかな?

「ちょっと欲張りになってみる。」
・アップロードされた画像を管理したい。
・権限や制限を編集したい。
・校正紙を出したい。
・データをページに配置してページアップしたい。
・別マスタデータを用意して関連付けたい。(企業マスタから住所を抜くとか)

「そして人はもっと欲張りになる。」
・テンプレートを簡単に作成したい。
・入稿フォームを簡単に作成したい。
・画像のトリミングをしたい。
・入力する文字に字数制限をつけたい。
・WEBサイトのコンテンツと連携したい。

「このへんで思うこと」
あれ?こんだけだっけ?まだある気がするが。。。
上記がすべて網羅されたら満足、解決できるのか?
そうじゃない気がしませんか?
要は、本当の満足、解決というのは、システム化によって、「いろんな物を投げるから、ちゃんと組版してね」という「、」の間に、「いろんな物を投げるから、あとは設定されているシステムのルールにのっとって、ちゃんと組版してね」の「システムの設定部分」だと思う。ここを思うように設定できればよいということだ。しかも、制約なしに。だから柔軟な仕組みが必要だということで、そして、その仕組みは、変わり続ける要求に対応していけるものである必要がある、ということです。

「ということでPA^nが出来たと」
WPSは今もお客さんから絶大なる人気を誇ってますが、なぜ使い続けられているかということを考えると、ユーザもうちもモノを作ると言う点において、真剣だということです。最初からコスト削減しか頭に無いなら、モノを作らなければ良いと思う。その方がよっぽどエコだ。
でも、WPSは、いわゆる決め打ちシステム。変更は加えられるとしても、こちらの手がいる。それは完全に、安全に出版されないといけないからです。とは言っても、これには、お互いにストレスが溜まる。変更するには、人の手がいる。そこにはコストが発生する。これは仕方ないことです。うちも「ぐへへ」ってよだれを垂らして待ってるわけではないのです。そこを排除しようとしたのが、「PA^n」。これは、仕組みを準備するので、後は使う人で決めて作ってというもの。
勘違いしてはいけないのは、「WPS」で、こちらが決めた仕様を、自分たちで作れるということだが、その裏には、自分たちでルールを確立しなければいけない、ということです。そのリスクを背負えるところには、オススメします。
決して「あんまりうるさいから勝手にやってや」ではないです。クリエイティブさを必要とするDTPのシステムでは、ここに行き着くしかない、という頂上(今のところ)なのです。

「PA^nの開発コンセプトは、何でも入れられて、何でも出せること」
つまり「バラバラ」を許容した上で成り立っている仕組みということです。入稿フォームも自由に作れる、テンプレートも自由に登録できる。組版エンジンも自由に選べる。簡単に使うこともできるし、スクリプトを覚えれば、もっとやりたいことができる。やりたいと思うことは、やりたいと思った人が試して、実現させるべきだと思うんです。いちいち仕様がどうのこうのってやりとりはイヤですよね。ただ、リスクを背負うことを忘れないように。

「まだ途中ですけど、土台はほぼできた感」
PA^nになって失敗もあったけど、稼働2社目、ともにタウン情報誌です。不可能を可能にするウチならでは。モノを作るシステムを作ることも、モノ作りです。そして、結局は人が作り、人が使うわけなので、そこには将来に描く方向性を見失わない、課題を常に解決へ導ける強いチームが必要です。
従来のシステムは、仕様ありきだから、限界が先に見えてきます(比較的早い段階で)が、ウチのシステムは、限界を見るよりは将来を見るシステム。だって色々と変わるから。そういうコンセプトを理解してもらうには、時間がかかるのが課題。でもそれはどれだけ信頼してもらえるか、信頼してもらえるような対応や結果を出すか、だと思ってます。
半年運用で調整に調整を重ねて、軌道に乗りました。次のステップに入るところです。

「来年2009年2月に行われるPAGE2009でババンと」
行こうかなと。
ただ、従来のようなシステムですよ、アプリですよ、ではないアプローチで。

賛同する方募集中です。

ふぅ〜疲れた。。。PAGEまでにはまとめていこう。

2008年8月22日金曜日

Groovyコンファレンス2008 すんごいおもろかった

IBMのセミナーとして行われたGroovyコンファレンス2008に、山本が参加しました。
わたくしは、ただの付き人ですが。

2時間で発表が「15」コマなので、1コマ11分という短さ
これが、なんとまあ、こりゃいわゆる「ライブパフォーマンス」ですよ。

この日のために用意してきた新曲とかリミックスした曲、過去の名曲を、その場で演奏するよな、そしてそれをドキドキしながら聴く。まさにライブを見に来たような感じです。

こういうのすごく「アリ」だと思う。Groovyって名前が良かったのかな。rubyだとこれまた違うんだろうか。ま、いいや。

とにかく、技術云々も大事ですが、ノリセンス、これがこれから必要とされる要素だと思いました。

もともと、GCRで、「そろそろGrailsデモ大会でもやりますか」みたいな安易なノリで企画してたのが、いつのまにか大がかりな感じになってしまった今回のセミナー。
とりあえず感想など述べてみたいと思います。
自分自身よく分かってない部分もあるので、解釈が間違ってたらごめんなさいです。
違うなと思ったら、優しく突っ込んでください。ヤワな生き物なので。

1.Opening 根本さん

さすがプレゼン慣れしてるよなぁ。どちらかというとそこにすごく惹かれました。
SOAを推進するIBMとしてのGroovyとかGrailsの位置付けの説明や、Javaソースコードが、Groovyソースコードになると、ほらこんなに簡単、シンプルなんですよ、と、すごく分かりやすかったです。やっぱりSOA(とりあえずエンタープライズなアーキテクチャと理解した場合)とRubyOnRailsを対極と考えると、中間的な位置にいるのがGroovy/Grailsであるとそういう感じでした。

2.Groovy でつくるお手軽RIA IBM須江さん
一度、GrailCodeReadingで「WebFlow」について発表されてたのを聞いてたのですが、
そうだ、須江さんはIBMの人だった。なんか雰囲気ちょっと違うなあ。
やっぱり本(Groovy in Actionの共著者)を書くと、すでに知識を持ってるのに、さらにすごく知識が増えるんだろうな。なんだか、遠い存在に見えてしまう感じです。
でも、そんなことより「Groovy in Action日本語版」買います!
発表内容は、「Remember The Milk」のWebAPIの操作を例に、GroovyでBuilder書いてSwingでRIAしてみようぜ、という内容でした。
うちは、印刷出版系なので、RIAっていうと、どうしてもAdobe様に行ってしまう。
まさに今それ。GrailsとFlexとAdobe InDesign連携などです。そしてクライアントアプリは、Adobe AIRにしてしまおう、です。
といっても作ってるものは業務系アプリとなるわけで、今まではブラウザアプリケーションとしてしか提供していなかったけれども、もともとVBなんかでクラサバアプリと比較されてしまうと、速度的な課題とか、CSSの表現範囲(ブラウザの表現能力)までしか見た目を調整できない、というのをやっぱり諦めてもらうしかなかった。でも、RIAの経験も増えてくれば、またクラサバみたいなイメージに戻るかもしれないけど、開発はまたアジャイルにいける可能性を含んでいる、というところを模索しつつ進めてます。なんだ、おい、ウチの話かい。

2.AntからGantへ IBM宇野るいもさん
後で聞いたのですが、Strutsプログラミング講座の著者の方でした。ウチにもあります。
Antだとビルドルール書くのが大変になるときがあるけど、GantならGroovyでスクリプトがたたき込めるから、すごい楽だよ、という話でした。
堀り下がっていろいろ調べて、人に言えるまでのまとめに辿り着ける人ってすごいなあと。AntとGantの違いとか、すごくよく理解できました。後日サイトに資料がアップされるそうです。

3.Web サービスを使ったスカッフォールド拡張 CIJ笠原君
Grailsでプロトタイピングするときに、Scaffoldを使うわけだけれど(実際僕も、プロトタイピングではControllerには、scaffold = Domainclass以外を書かない。Generate-allもしないので、Viewも出さないでいこうと思っている)、そんなときScaffoldの結果は、当然DomainClassに書いた名称なので、英語になってしまうわけだが、それをGoogleTranslateで日本語(多言語化)にしてしまえ、という、面白い発想。i18n-template使えばいいのに、と思いつつ、それさえもめんどくさいと。素晴らしい。思いついてやってしまう辺りが素晴らしい。日本語が微妙に変換されるあたりが、ちょっぴりユルいあたりも笠原君らしい。

4.UML エディタを使った Grails アプリケーションのプロトタイピング CIJ杉浦さん
あ、二人続けて愛知県出身横浜在住ではないですか。他にもいるのかな。どうでもよいですね、はい。
タカハシメソッドライクなプレゼンをいつも作ってきて楽しませてくれる杉浦さんです。
JUDEでモデリングしたものをそのままScaffoldさせようという発表でした。
DomainClass.Groovyに書けば、それでいいんじゃないかなとも思いますが、最初の段階でウォーターフォールっぽいことを要求されたり、こういうやり方の方がなじみやすい人もいるんだろうなと。確かにHasManyとかBelongsToとか慣れてこないとよく分からなくなったりするから。
これも上と同じくPlugin化してました。

5.GrailsPlugin による印刷・出版業界向けWEBアプリケーション開発の事例 NCヤマモト君
前日「どうしよう…」という裏舞台を知っている自分としては、出版される「Grails徹底入門」の宣伝までしっかりとこなし、素晴らしいデキだったと思います。
AcegiPluginのコミッターとして活躍しておりますが、GroovyとかGrailsって、概念とか哲学とか、そういったことを最初に理解すべきなんじゃないかなと、彼の話を聞くとよく思います。技法がどうのこうのというより、結局は人が欲しいモノを人が作ってるわけで、開発、構築というところで、従来のウォーターフォール型の進め方よりも、もっとコミュニケーションを豊かに、人と人が作り上げていくモノというところを前面に押し出した、アジャイルの特性を活かした進め方ができるんじゃないかなと思います。第一その方が、楽しいし。

6.Grails 開発事例 -Java から Groovy へ ディライトテクノロジーズ綿貫さん
AJAXも使わない、とりあえずピュアなGrailsアプリ開発について、
「宇宙刑事タケポン」を例に紹介してもらいました。
「宇宙刑事タケポン」ですよ。しかもロゴが素晴らしい。
後で聞いたら、ロゴに2日ぐらいかけてるらしい(山本氏と一緒です。彼も「まず重要なのはロゴ!」ってよく言ってます。)です。どっかでひろってください。僕はいただく約束しました。
綿貫さんのを見て、この人「センス」あるな、と。そしてロゴとかメッセージの「ノリ」。
すごく重要だ。そしてアプリが簡潔している。このぐらいで十分だと思うんです。その方が、あとあといろいろやりやすい。ご本人も言ってましたが、要求をすぐに反映できる、そこが素晴らしいなと。
あとは、プリント用のページをCSS通して作ってたり。そうだよね、PDF作るときもFOもいらないときだってあるんだ。Acegiもログイン画面とかそのまま。よりシンプルに作ることの見本を見せてもらった気がしました。

7.携帯カメラでお手軽ミニブログ - 携帯百景(ケイタイヒャッケイ) フリーエンジニア キムゾーさん

有名な方ですよね。一度GCRでお見かけしました。技術ネタが薄い自分としては話すことができなくって残念な思いをした記憶があります。技術といよりは、独特な雰囲気があるので、どんなヒトなんだろうと、素朴な疑問だけなんですが。
キムゾーさんのユル〜い発表を見て思ったのは、まず、「あー、こんなん作りたいな」と、創造力と意欲をかき立ててくれること。その感覚に襲われたのは、昔音楽を聴いて、「あー、こんな曲書きたいな」と思ったのと似ている。なんか、創造(想像ではなく)させるというか、難しい説明ではなくって、こんなもの作ってみました〜、みたいなノリがすごく相手をワクワクさせるというような不思議な感じでした。あんまり凄くないですみたいな感じで話すのですが、いやいや、いろいろ知ってないと、あと検証とか経験とか実績とかないとできないっす、と自分は思うわけで。でもそんなのをさらりとやってしまう。かっこえーと思う人でした。懇親会で隣に座るときが一瞬あったので、写真とってもおうかなと思いましたが、あまりにミーハーなんでやめました。

8.sMash(ProjectZero)と「Reflex」で構築するお手軽営業支援システム Virtual-Tech 竹嵜さん
全然違う歴史もつ言語を連携させるには、という説明でした。こういう結構ガチなところを、効率的、効果的にやってやろうという気合いが垣間見られる内容でした。あとでsMashと「ぶいてく」で検索して見てみようと。実際動くところが見れなかったのが残念かなと。でもこういうハプニングも臨場感があって、ありですね。

9.Grails 開発事例 - Groovy/Grails で作るエンタープライズアプリケーション CIJ永井さん
 ここ私用により退席してしまって聞けなかった。残念・・・。でもウチに修行にきたK君が、冗談で言ってたんですが、ホントにとっても明るくなっているので、それだけでも良かったなと思いました。全然関係ないですけど。Grailsのセミナーされるらしいので、行ってみようかなと思う次第です。

10.Grails による社内システムの開発 NTTソフトウェア 上原さん 中野さん
 ここも退席ぎみで微妙に聞けなかった。言語オタクな上原さんたちなので、さぞ面白かったんだろうな。最後の方のまとめだけですが、Groovy/Grailsを使うことで、開発過程において「劇的に」変わったことがいくつかある、と、あと皆さん感じていることですが、その中でも変更を反映しやすいというのがすごく惹かれるところです。それから要求仕様言語として「ちなみに」を正式に認めるかどうか、また議論したいところです。

11.groovy/grails でのライヴコーディング 法規書籍印刷 渡辺君(通称だいちゃん)
前から分かってることですが、この人は「オカシナヒト」です。ライブコーディングっていうから、何やるのかなと思ってたんですが、カメラ通して自分の映像を流したり、ベクトルデータをがんがん回したり、、、それをブラウザ上でスクリプティングしながらやってしまうというパフォーマンス。しかもGroovyのおもしろさ、柔らかさを取り入れて、です。大丈夫かしら、と親心で見てたのですが、これこそGroovyなのかなと、彼なりの思いが伝わりました。一緒に仕事をしてて楽しいと思える数少ないヒトです。

12.WebSphere sMash でお手軽マッシュアップ IBM水野さん
sMashの話。前の席をみたら、さっそく山本氏が説明を読んでた。あー、YahooPipeだ。分かりやすいUIですよね。sMashをあまり知らないので、受け売りですが、サポートするスクリプト言語はPHPとGroovyと。Rubyはないんですね。あと既存コンテンツをRESTFulに使うということで、連携の話ってよくあるので、ちょっと調べてみようとおもいました。

13.Closing メタボリックス 山田さん
ようやく8月26日「Grails徹底入門」出版されますね。Groovyコンファレンス2008も無事終了。とりあえずお疲れ様でした。
山田さんと出会えなかったら(僕ではなく山本ですが)、僕らはここまで来れなかったわけで、すごく感謝してます。懇親会ではいつのまにか帰られてしまったのでご挨拶もできず・・・またGCRでお会いしましょう。

2008年8月5日火曜日

新連携/モノ作り〜東京国際フォーラムに行ってきました

新連携/モノ作り(東京国際フォーラム)が8月5、6日に行われています。
あまり知られていないですが、我が社も実は認定企業になってます。
ビイサイドプランニングさん(滋賀)がコア企業となって登録されてます。
「新連携」というのは、経産省の中小企業基盤整備機構が募集して認定する、別事業体が連携して新しいモノ作り、ビジネスを生み出すことを支援するものです。現在全国300社あったと思います。

僕たちは根っからの自動組版屋さん、今ではそれをひっくるめて、データをどう流して欲しい形を得るか、とういうことにシフトしていますが、その事業体と、広告会社であるビイサイドさんのサービス(今はとりあえず求人情報に特化)をくっつけた新連携です。

中小企業と言うことで、いつもの展示会のように大手メーカーが40小間占領するというような派手な演出もなく、でも地味じゃないところがステキでした。

いつもは現場で職人としてやってるんだろうな、という人たちが発する自信に満ちた受け答え、とてもマニアックな会話がとても心地よかったです。

展示会に参加していつも思い出すのは、「君たちが、自分たちがやりたいこと、やろうとしていることをきちんと形にして説明できるってのは素晴らしいことだね」という、ある巨匠のありがたい言葉です。
やりたいだけではダメだし、やろうとしているだけでもダメ。0を1にして、形にして説明する、ということの大変さと、すばらしさをこういうところにくると、再確認して、また頑張ろうと思えてきます。

また、今日久しぶりにお会いした方から、もう4年前にリリースして、今も全国各社で何百人という方たちが日々使っているシステムがあって、まだそこの会社さんは導入してないんですが、「やっぱりいいんですよね、結局ここに戻ってくるんだよね」と、言われました。

そうなんです。

モノの本質をシンプルに捉えてこそ、そして、いろんな気持ちをそこに注入し、それを提供する側として、「本来こうあるべきだ」というある意味わがままを貫き通すことも必要で、その真剣さが使う人にも伝われば絶対にいいモノになるんだということも再認識させてもらいました。

何が正しいのか、何が良いのかは誰にも分からない。
でも本当に正しいんだ、という自信と誇りを持たなければ、使っている人も不安になる。
当然お互いが知っていること、知らないことには違いがあり、お互いの思惑もある。
モノを作る側も使う側も一緒になって考えていく「協調」「共生」が今後のモノ作りのビジネスには絶対に必要だと思います。

2008年7月26日土曜日

Grails徹底入門は8月25日発売らしい

株式会社翔泳社さんより、Tyamaさんが書いたPlugin部分(一番濃いんじゃないかと)も含めて「Grails徹底入門」が発刊されます!2008年8月25日だそうです。
みなさん、買いに行ってGrailsを楽しみましょう!
Groovy in Actionの日本語翻訳版もそろそろでます(お疲れ様でした)ので、これでとりあえず日本で広まるためのネタが世に出始めますね。
いろんな技術がある中、何でもいいとは思うんですが、うわべだけじゃなく、その奥深いところまで足を踏み入れていくのって勇気もいるし、エネルギーもいると思うんですが、ましてやそれを出版物として世の中に出すという責任とか、どうやったら読んだ人に伝えられるか、とかいろいろ悩みながら書いておりました。
三回ぐらい校正を手伝ったのですが、Grailsだけあって普通の技術本とは違うんだよな、と思わせるところが多くって、GrailsとかGroovyとかは、いろいろ簡単にできますよ、っていうRails的な部分よりは、Webアプリケーションに必要なSpringとかHibernateとか、そういう基盤となる技術も自ずと見えてくるところがいいのかなと思います。
フレームワークにたよってしまう前に、やっぱり知らなくてもいいけど、知っておいた方がいいこともいっぱいあるんだなと、ただ、ここから先は、研究心とか探求心がないと、中途半端に終わってしまう。でも、そこを超えれば、今まで何度教えてもらっても分からなかったこととかが、「ああなんだそういうことなんだ」みたいに軽く受け入れられるかもしれない、という希望が見えるよなあと思います。
Tyamaさんの方が6ヶ月先に生まれているので、その分僕の理解は6ヶ月後なわけなのですが、何度も読むと、ちょっとずつ分かってきたりする自分が楽しい。そして、「コイツあほやな」と本気で思えてしまうほど、こだわり、神経質さが見えてくるところもおもしろい。これは、まさに技術本ではなく、見方を変えると、哲学書だなと思えます。まだ他の人が書いたところは読ませてもらってないので分からないですが、Grailsの魅力がいろんな人に伝わればいいなと
思ってます。

文芸書の評論集とかたまに読むんですが、世にあるシステムを哲学的に読み解く、っていうのもおもしろい気がするなとふと思いました。
どうしてこの技術を選んだのかとか、なぜこういう仕様にしたのかとか、そういうところに作者の生い立ち、経歴をキーにして、意図を読み解くみたいな、、、そうされてもいいぐらいの作品(粗くてもいいと思うけど)にこだわりを持って仕上げるっていう気持ちってこれからのSEやSI、プログラマーに必要なんじゃないかなと、よりアーティスティックな世界になればいいのにと思います。

今回は、労をねぎらってTyamaリスペクトになってしまった。。。

2008年7月15日火曜日

DTP作業手順書がないからでしょ

ああ、担当者間の電話を聞いている。
振った本人も作業手順を覚えていない。
作業した人もうる覚えで対応している。

「おいおいおいおい」

だから、DTP作業手順書がいるじゃないかと、いつも言っているのだよ。
その時間が無駄じゃん。

めんどくさい、と思うのかな?
そうなっちゃった時の方がもっとめんどくさいじゃない。。。

2008年7月13日日曜日

Grails Unit Testの中間まとめ

Domainに対して基本的なCreateやDelete、Copyなどが正常に動作するかどうかを、ControllerとかViewを作り始める前に、アプリケーションが肥大化する前に、最初から確認しておく(test-appで確認し続ける)ことは、データが中心であると考えた時に、とても重要なので、そこを集中してやってみようと思ってやり始めた。テストドリブンであり、ドメインドリブンを基本としたアジャイルな開発を目指したい。

ここまでの流れをまとめると、、、
1.この案件の中心的存在となるDomainを決めて、今まで聞き取った要件に合わせて、Domain同士がどう関連するかのイメージ図を、5回ぐらい書き直しながら作成した。
Domainの属性は、徐々にFixしていくものとして、最低限必要なものだけをピックアップした。
何が本当に必要なデータなのかを見極めるフェーズだ。

2.モデリングと照らし合わせて、業務フローを確認しながらまた数回書き直した。

3.grails create-appでアプリケーションを作成し、create-domain-classでDomainを作っていく。順番としては、一番重要なデータから見て、一番端にあるものからだ。

4.例えば、複数のDomainがHasMany、belongsToしている場合、各Domain単位でのTestを書いていると面倒なので、あとで分けることを想定して、DomainsTests.groovyと、そのテストデータをTestDataSet.groovyに作成する。(ともにtest/integrationの中)

5.DomainTests.groovyの中の先頭部分には、TestDatasの中のクラスを見に行けるように、下記を記述した。このClassLoaderを回さないと、testの中のクラスに辿り着けない模様。
class DomainsTests extends GroovyTestCase {
def gcl = new GroovyClassLoader()
def testDataClazz = gcl.parseClass(new File("test/integration/testDataSet.groovy")).newInstance()

void setUp(){
testDataClazz.testdataSetup()
}
}

6.TestDataSet.groovyには、、、
class TestDataSet {
def testdataSetup() {
def book = new Book()
book.name = "testBook"
}
}

7.と、しておけば、ここのSetupController.groovyとかで、このテストデータを使い回せる。

8.基本としてテストを書いたのは、
データ登録チェック、データ削除の際のHasMany、belongsToの違いによる挙動のチェック。

このようにやった結果、テストを書きながら、業務フローや画面遷移も想像しながら、Domain周りを固めていける。そして、後々細かい要件が出てくる際に、ここをベースにいけばよいので効き目があると思う。ただ、物事はシンプルさを貫き通さなければならない、ということを忘れないようにやらなければいけないと、もう一回心に誓うことも忘れないように。

9.あと、Controllerも作っておく。でも、Scaffoldに徹する。
class BookController {
def scaffold = Book
}

10.はじめてのrun-app
Scffoldなので微妙だけど、とりあえず動かして、データ登録の流れを確認。アプリケーションのイメージをふくらませる。

11.そして、Template-pluginをinstallしておく。generate-allすると、i18n用のタグをGSPに挟んでくれる。

12.そろそろ、generate-allで、controllerとviewを吐きだす。

また続き書きます。

2008年7月12日土曜日

Grails/GroovyとTextMate

面白いものを教えてもらったので。
TextMateにBundleの設定しないとだめですけど。


def sss="aaa"

sss.getClass().methods.each {
println it.name
}

を書いてみて、選択して、TextMateにgroovyを走らせると、↓な感じで、なんか出る!
APIリファレンスを見る前に確認できてよい。

InDesignにXMLをとりこんでみる

できるって分かってて実験したかどうかも忘れてしまったので、次こそ忘れないぞ、ということで書いておこうと思います。

とりあえず、単純なXMLを読み込んで、確認です。
参考URLはここです。
目標:
1.XMLのタグ内の文字列が、指定したテキストフレームに取り込まれること。
2.指定した段落スタイルが適用されること。
3.画像が取り込まれること。(上記参考URLを参考にしてくだし。file://で指定するだけです。)
4.複数の要素を1つの枠に入れられること。

InDesignのXML取り込みの概要は、以下の通り。
・InDesign上に、テキストフレームや画像フレームを置いて、InDesignドキュメントを準備する。
・XMLを準備する。
・「構造」を表示させて、XMLを取り込む。
・取り込んだXMLの要素を、InDesignのフレームにドラッグ&ドロップする。
以上

1回このマッピング(XML要素←→InDフレーム)ができてしまえば、別のXMLを取り込むと内容が入れ替わる。まぁべんり!
あとは、JSなどで、一気にXMLを回して取り込んじゃえばなおかっこよい。
下準備がめんどくさいって、言ったらだめですよ。この機能を使う意味ないですからね。
コンピュータは、人の頭の中を読んではくれないです。指示を与えないと動きません、です。

DTPって、やればできてしまうので、ゴリゴリやっちゃうんですが、
こういう下準備、段取り上手が仕事を速くするとホントに思う今日この頃。
いつまでもうだうだやってんじゃねえよ、と自分に喝を入れて取り組みましょう。

それでは開始…
1.InDesignドキュメントを準備します。
InDを立ち上げて、「ファイル」→「新規」→「ドキュメント」を選択して、
何も考えずに、Enterを2回押すと、まっしろいドキュメントできました!

2.ツールバーの「T(文字)」ツールをクリックして、適当に、テキストフレームを作成。
サンプルなので、これを仮に枠Aと枠Bとして、2つ作ってください。
↓こんな感じです。(適当です)


3.XMLを準備します。(適当です)
import.xmlとして保存しておきましょう。
<?xml version="1.0" encoding="UTF-8"?>
<import>
<a>Aタグ</a>
<b>
<c>Cタグ</c>
<d>Dタグ</d>
</b>
</import>

4.InDesignの「表示」メニュー→「構造」→「構造を表示」を選択します。
↓こんな感じです。


5.XML読み込みメニューを選択します。
↓メニューはちょっとわかりにくいところにあります。こんな感じです。(構造ビューの右↑です)


6.XMLを選択します。さっきのimport.xmlです。
設定とか、いろいろありますが、とりあえず無視して、デフォルトのままいきましょう。
あとでいろいろ触ってみてください。


7.またなんか設定ダイアログが表示されました。
とりあえず無視して、そのままEnterしましょう。


8.はい、そうすると、出ましたか?XMLのツリー構造が構造ビューに表示されます。


9.面白くなってきましたねえ。。。では、左の構造ビューの「a」のところから、ドキュメントの枠A(上の方です)に、ドラッグ&ドロップしてやってください。
これがマッピング操作です。
↓イメージわかりにくいです。(Macのプレビューでタイマーで撮ったんだけどなあ。。。)


10.今度は、2つの要素を1つの枠にぶっこみます。
この場合は、CとDの親要素であるBをドラッグ&ドロップで下の方の枠に入れます。


11.要素にそれぞれ段落スタイルが適用されるようにしてみましょう。
段落スタイル1,2,3を、基本をコピーして作成し、適当にフォント、フォントサイズを変更してください。
そのスタイルを、aとcとdにマッピングします。


すみません、時間がなくなってきたので、はしょりに入ります。

12.適用されるとこんな感じ。
要素ごとにスタイルが適用されました。


13.さぁ、XMLを使う醍醐味です。
XMLを入れ替えて内容を入れ替えましょう。
<?xml version="1.0" encoding="UTF-8"?>
<import>
<a>Aタグ入れ替え</a>
<b>
<c>Cタグ入れ替え</c>
<d>Dタグ入れ替え</d>
</b>
</import>

14.ほら、変わった!(一部溢れてますね。こういうのもInD側の設定次第で調整できるんじゃないかな)


以上です。
結構簡単にできますね。
どのレベルまで実現したいかを、じっくり機能を試しながらやってみて決めていくのがいいと思います。

2008年7月8日火曜日

Branddoozie ちょっと見てみる

ここにあるように、
"Technologies
BrandDoozie is powered by patent-pending proprietary technology as well as Adobe Flex and CS3 InDesign Server."
ということで、Adobe FlexとCS3 InDesign Serverを使っとりますとのこと。

もっさり感はあるものの、名古屋弁風に言うと「まぁ、そうだわな」といったところ。


上のスクリーンショットは、Step1〜3のうちの「さぁ〜んっ」のところ。
Step1、2で、自分の名前とか住所とか、デザイン、スタイル及びテンプレートの基本的な情報を入れていく。
Step3では、実際のドキュメントの中がブロック分けされているので、その部分の文字を編集する、という感じです。

試した感でいきます。
1.まんず日本語入らない。(まあ仕方ない)
2.編集結果の更新で、1P分で約5〜10秒
   InDesignでレンダリング→JPEGとかしてんだろうな。。。
3.PDFは、Betaにつき落ちてきまへん。
4.データ(情報)が連携している感を出している。

で、何?ということなんですが、第一印象では、Flexでやりすぎると、見た人の想像力を欠いてしまうんじゃないかと思ってしまう。これで完成していると思われるのは、ここの会社の意図ではないと。

要するに、FlexとCS3使うと、こんなことできまっせ、ということだろうと思います。
まあ、でもちょっとやりすぎじゃないかな。。。WEB Publishingが、インパクト優先でこっちの方向に行ってしまうのはよくないんじゃないかと個人的に思います。

XSLformatterの出力は黒をオーバープリントには今のところできない模様

2008年7月8日現在、実装検討中とのことです。
TrueFlow側というかRIP側の設定で吸収がデフォと考えれば、特に必要というわけでもないということなのかな。

WPSでOTFの異体字を適用する

WPSで外字を使いたい場合は、といった感じで、こちらからお知らせしている番号を入れていただきます。
このタグと番号を、DTPアプリが搭載している外字番号に関連付けて出力させています。

外字のエリアには、色々ありまして、
1.DTPアプリ側がもともと持っている外字エリア
2.このDTPアプリを使うユーザが登録するユーザ外字エリア
というものがあります。

さらに、外字を複数のフォントで使いたい場合には、それごとに持たせる必要があります。
DTPアプリによっては、ユーザ外字にあたるものを、フォントとして作成したりする場合もあります。
ちなみに、EdianWingの場合は、1外字にフォントの階層を持たせることができるので、使いたいフォント分の文字を1コードに収められます。書体を変えるだけで外字の見た目も変更されるということになります。
(MC-B2の場合は、また今度。)

一昔前までは、フォントメーカーが準備した文字が、なかなかなくって、結構なたくさん外字を登録していました。さらにシステム上決められた範囲のコードエリアしか使えないため、苦渋の策で、外字を入れ替えたりと、大変でした。
ですが、OTF(オープンタイプフォント)の登場によって、かなりの文字がカバーされることになり、ユーザ外字やユーザ外字フォントを準備する必要がなくなりました。
たとえば、印刷するときには、その外字フォントも同梱しなければらなない、など、印刷事故の原因の一つでしたが、その点がかなり改善されました。

アプリケーションによりますが、「吉」という字を入力した後、その異体字を選択項目から選択する、というような方法で、今まで出せなかった文字が出せるようになっています。

ですが、印刷のときに、出るかどうかというのは、また出力方法によりますので、注意が必要です。
WPS(現行運用バージョン)の場合は、ユーザ外字、異体字にかかわらず、リストから確認できる仕上がりの状態で、外字が適格に出力されていれば、印刷ではアウトライン化されていますので、不具合は出ることはありません。

ユーザに一覧表を渡したいですが、なかなかのボリュームなので、まだ渡していないです。
とりあえず、これに関わるお問い合わせ件数も少ないので、都度コード番号をお知らせしています。

PCで携帯のUserAgentを確認する方法

Safariです。環境設定→メニューバーに開発メニューを表示にチェック
http://kazumich.com/index.php?ID=4096

開発メニューから、ユーザーエージェントでどれかを選択
ない場合には、http://www.openspc2.org/userAgent/などで、
それぞれのUserAgentをコピーして、その他のところにペースト

Google DocsでOfficeいらずになれるか?

ま、Officeを共有ならそれでいいんですけどね。
Mac版Officeもそこそこなんですが、、、ちょっとGoogleDocsを使う頻度が高くなってきた。

Office製品は、もともとローカルファイル作業の概念のものなので、使う人の意識が、私目を筆頭に共有を意識していない。実に様々な派生とバージョンによって管理されているとは言えない。
GoogleDocsの利点・用途は、次のようなものだと勝手に推測する。
1.共同作業したい場合、その場所と機能を提供してくれる。
2.自分のPCやHD、自社のファイルサーバ、ネットワーク、セキュリティの信頼度がGoogle様より下回っている。

まず、エクセルシートのようなものを共同作業してみると、相手が触っているセルの色が変わって、編集してんだな、、、とわかる。
ワードらしきものは、文章をマージ、Diffしてくれる。
もちろんバージョン管理もしてくれる。
エクセル、ワード独特の高機能を使わないで、Wikiはちょっと、CMSはちょっと、というような、とりあえず共有して作業進めようぜ、的な場面にはもってこい。なんか楽しいしね。
ラベル付け、ディレクトリ(っぽい)のもいけてるし、公開範囲を決められたり、特に不自由さを感じない。ただ、正式に提出する資料までは無理だと思います。
あとは、ネットワーク無いとダメは諦める。Google様が音信不通になると、ドキドキする、といったところでしょうか。

2008年7月3日木曜日

組版エンジンの自動組版サーバ的な対応を(勝手に)比較

ご依頼ありまして、忘れてましたので、アップ。
うーん、最近ペースが悪い。

WEB入稿→自動組版→出力の流れに対応できる組版エンジンは、どんなものがあるか、
日進月歩、試行錯誤な毎日ですが、現状ということで。

その筋の方は、コメントして構いませんので、よろしくお願い申し上げます。

///XSLFormatter
アンテナハウス製品(いつもお世話になってます。)
xsl-foの標準仕様+axf拡張で、FOに変換して取り込む。
WEB-Serviceオプションも用意されているので、WEBサービス経由で操作させることも可能。
あとは、コマンドキックとかもできます。
なんといってもPDF出力がデフォなので、PDF出力を最終と考えるなら、
組版→出力の流れは一番速いということになる。
日本語組版的な細かい組版仕様はできないことがある。
最近はまっているのでは、文字のボックスの一部に画像をおいて、そこを排除して文字を回り込ませるあたりは、できないレイアウトがある。
サーバ版という位置づけがこの製品の適切な区分けにはならないと思うが、販売形態としては、スタンドアロン版とサーバ版とある。サーバ版は、1CPUライセンスごと。不特定多数のインターネット利用の場合は、別途の構成がある。

///EdianWing
キヤノンITソリューションズ製品(いつもお世話になってます。キヤノンシステムソリューションズから改名。もとは住友金属。さらに開発しているのは、、、どこだっけ、、、えーと、桐とかの、、、いったことあるんだけど、、、物忘れ激しい、、、あ、管理工学研究所、そうそう)
もともとが、バッチ処理系に長けている製品なので、組版表現は100%(多分)トリガーテキストと呼ばれる文字データで制御できる。
ただし、見た目の判断によるオペレーションレベルまではトリガーテキストではいけない。
ただ、操作制御を行う「スクリプト」なるものがオプションであって、それを使うと、オペレベルのこともスクリプトに書いて実行すれば実現する、というレアな製品。
ちなみに、一般利用としてのAPIは公開されていないが、入稿システムに使うのであれば、WEB2Edian(今もあるのかな)なる、JAVAからソケット通信できるオプションがある。
問題は、価格が高すぎることと、PDFが直接吐けない。
そうなると、組版→EPS(PS)出力→PDF変換でPDF出力となる。
Adobe製品のDistillerをサーバに仕込むとしこたまお金をとられるので、小さい規模の仕組みには使えない。
ただ、結構丈夫なのはすばらしい。組版も速い。
このアプリをDTPとして、他のIDやQXと同等にしか使わないとするなら経営者的にNG。
だって、1台350万円もするんすよ。。。ちなみにうちは10台も20年近く使ってますが、台数の内訳はDTPと自動組版の半々になりましたね。
個人的な愛着もあってNo.1。(表作るの楽だし^^)

///Edicolor
同上の会社製品。地方新聞、広報誌などで現役で戦っておられる。IDへ移行するところもあるが、根強いファンがいるのも事実。
こちらは管理工学研究所ではなく、純日本製のパーソナルな組版ソフト。今のInDesignのインターフェースはEdicolorをまねたんじゃないかと思うところもある。ミスターEdicolorが引退したので今後どうかは不安。OCX、AppleScriptでの外部コントロールが可能。レイアウト、文字込みでEdicolorタグで再現可能。ただし、Edianほど再現力はない。その分を外部から制御する感じ。
このレベルでは何でもできそうだが、実際システムの中に組み込むのは実地による実験と検証が必要。スピードもそこそこ。ただし、マシンスペックに大きく左右する。
自動組版させるときは、ドキュメントがオープンするタイプ。
ちなみに上記Edianは開かない。
サーバとして動かすには、上記の会社にご相談ください。
単品の価格は、10万円台のはずだが、InDesignとの比較となると弱い。
PDF出力機能は、単体販売に附属しているが、サーバとしてその機能を使うのは、PDFエンジンの提供会社との契約上NGとのこと。

///MC-B2
モリサワ製品(いつもお世話になってます。)
正式なサーバ版もある。VB(VBScript)でコントロールできる。
もともとが、テキストベースで作業を行って、組版に反映させるタイプの組版エンジンであり、ローカルオペレーションでは、通常のDTPとは違う感覚。レイアウトが決まっているような場合は、B2タグを使って流し込みは可能。レイアウトまでとなると、レイアウト定義ファイルなどを準備する必要がある。
WEB入稿システムとの連携を考えると、事前準備などが多い印象があって、もう少しシンプルにデータを受け付けてくれないと、めんどくさいという印象。サーバ機能として吸収してほしいものだ。PDF出力は機能としてついている。
価格は、単体+オプションで200万円前後。詳しくは販売店に。
ちなみに数式は、フォント屋さんということもあって、仕上がりがキレイ。
あと複雑な表組はオペ的に無理(というかできればB2でやりたくない。)

//WAVE
シンプルプロダクツ製品。(いつもお世話になってます。)
コアはAUTO-CADのエンジンだったと記憶してます。
判断組を得意とするということからも分かりますが、ロジックに基づいて組版するというDTPとは違ったコンセプトのアプリです。なので、他のツールとの連携も普通にアリです。
細かい組版になると、スピードの速さが実感できると思います。(内容によりますが)
自動組版としての機能は普通に持っていて、それをそのまま継承してサーバとして使えると思います。ロジックを作る部分は、それ自体が「人」の頭の中なので、簡単にやろう、と思うのは間違いです。ただ総合的な考え方がすごく面白い。

//InDesign
今、自動組版として注目されてるのは、やっぱりここでしょう。
スタンドアロン利用の価格は10万円を切っているというハイコストパフォーマンス。
ただし、サーバ利用は、結構なお値段。そりゃそうですよね。
それだけあって、サーバ利用の時に役立つAPIも公開されているのでWEB入稿システムとの連携はやりやすそう。あとPDFも出せるしね。
スピードはといえば、ここもマシンスペックに依存すると思われる。実験段階では特に気になることはない。ただ、自動組版ってのは、1日に何千件、何万件処理する可能性があるので、構成的には、最低2台で余裕みて3台のサーバ構成でスタートしないと厳しいかも。
自動組版から考えると、もともとDTPで、「あとこういう機能ついてれば最高なんだけど、、、」というのが結構出てくる。総合的に「惜しい」ので、それが自動組版的にも物足りない部分になってしまっている。いや、それ必要?という意見もあるので、ここで判断する必要はなく、バランスを見る必要はある。
一番の魅力は、クライアントマシンのInDesginもAirとかで制御できてしまえば、サーバ側でやることもない、サーバでもできる、という選択肢が広がる。この辺に傾倒しすぎると、Adobeが神様になってしまうので怖い、というのがいつも不安なだけ。他がなかなか根本的な部分の見直しをかけない(業界が落ち込んでるからかけられない)なか、将来性のある組版エンジンだと思う。た、だ、InDesignをAdobeが「そろそろやめちゃおっかな」となった時点で、普通に使っていると、写●で味わった憂き目と同じ運命を辿るから注意。
しかし、Adobe製品、ソリューションが本社の米国で、かなり「形」になってきているので、すごく楽しみ。やっぱりフォトショやイラレ、ブリッジ、Flex、アクロバットなどなど、連携が始まっていて緩い結合が徐々にされていっている気がして、さすがだなぁと。

//番外 TeX
最強です。

///総合
自動組版エンジンの選択する際に関連する要素といえば、
1.テンプレートが如何に簡単に作れるか、管理できるか。
2.組版スピード
3.ガンガン送っても落ちない安定性
4.PDFが出るか
5.サーバ利用としてのAPIを公開しているか
6.組版がどこまで再現できるか
7.初期コスト、メンテナンスにかかるコスト
8.PDFを配置できるか
9.RIP対応の最終出力ができるか

上記をバランスよくみて、選択する必要があります。

あと、一番重要なのは、メーカーが「それ」用に、如何に準備してくれているか、につきる。
メーカーの協力がなければダメ、言い換えれば「協力してくれるメーカー」でないとダメ。

サーバ版というのは、あらたにサーバとしての機能をつける、というより、
DTPアプリとして開発した部分から、いらないところを削る、ということだけなんだと思うんです。

QXの記事がないのは、知識がなくて自信がないので、決して嫌いだからではないです。
DBパブリッシャーとかあったよねえ。。。