3月 2011 のブログ記事

本日2011年3月31日をもって、
有限会社キープランから退職することになりました。
報告と感じるところをまとめておきます。


この業界にやってきたのは22才の秋。
当時まだ大学に在学中で、ご存知の方も多いと思いますが、寿司屋になる予定でしたが、
寿司屋の元日のアホみたいな忙しさに怯えて、
なんとなくPCができるという理由で、
WEB屋というかEC屋になりました。

そこから早8年半。
当初はHTMLを書く人になるのかなぁなんて思って入ってきたけど、
いまや、Perl PHP MySQL FileMakerを触る人になってて、
たまにですが人前で話す機会がいただけたり、
某専門学校で教壇に立ったり、
「なでしこの人」とか言われたり、
CMSの開発に携われたりと、
まぁ正直30才でこういう立場になろうとは思ってもみませんでした。

多分一般的なWEB屋さんに行ってたら、同じ立場にいたかというと大いに疑問です。
EC屋さん、とりわけ、ECコンサルでは知る人ぞ知る有限会社キープランに入れたことで、
自分にカラーが付いたという点において感謝感謝です。


今後の展開ですが、
今のところ、
1年くらいは前職となるキープランからの保守案件と、ECコンサルを2件くらい。
そして、講師の仕事。で、死なないくらいが確保できている状況です。

正直申し上げまして、
作る→納品→お金もらう→終わり
という仕事が
私の技術力の低さと相まって、苦手(というか嫌いに近い)でして、

作る→納品→使う→育てる→使う→育てる
という仕事が得意で、そういった仕事をしたいと思っています。

EC用の受注DBで困っている、CRMで困っているというのを助けたい。
そう思う次第です。
(したがってメインのお客様は、WEB屋さんになるかもしれません)
何かビビっとくるものがある方。
ご連絡いただけると幸いです。
(CMS関連は趣味です。笑)
 


基本的には事務所を構えず、数年間はキープランの社内ベンチャーのような形で仕事をしていきますので、
皆様変わらずにご愛顧いただけますと幸いです。

なお、2011年4月1日からは、屋号「春芳堂」として活動しています。
http://www.shunpodo.net/
有限会社キープランともどもよろしくお願いいたします。
(なお春芳堂サイトはSeezooCMSにて作成されております)


運営堂さん主宰のガチ勉vol.1 「リスティング勉強会」へ行ってきました。
 
講師は 株式会社アイテムの小西一星さん(@isseik)でした。
恥ずかしながら小西さんのことは存じませんでした。もうしわけありません。


有償の講座のため、内容については、書きません。
 
前半2時間は、方法論を具体的に教えてもらい、
後半2時間は、受講者の質問を深く掘り下げるという方式ですすみました。
 
少人数限定での講座のため、小西さんに質問できるというスタイルがよかったですし、
小西さんもフランクにありのままを話してくださるので、
自分の仕事への落し込みがしやすかったです。
 


今回の勉強会に出て思ったのは、
色んな「方法」って、誰かに学んだりしなくても、
気づかずにできていることが多いのも事実ですが、
学んでいないと、体系的にまとめられていないので、
「方法論」になっていなく、
同じことをやっていたとしても、
得られる結果に雲泥の差が生まれるんだろうなということです。

そういった意味で、聞くだけの勉強会もいいですが、
ガチの勉強会は絶対に出ておくべきだなと思いました。
(但し、財布がwwww)


次回の内容は
ソーシャルメディア解析
だそうです。
私は残念ながら法要のため、受講ができませんが、
まじオススメですので、皆様行ってみてください。

独立に際して、FileMakerで顧客管理/タスク管理/請求書類を一括管理できるDBを作っています
これまではクライアントとの兼ね合いで、WindowsでFileMakerDBを構築していましたが
今回は自分のDBということで自分の環境に合わせてMacで構築することにしました。

こういうDBを構築するとき、FM自体や、FMから出力したデータをもとにHTMLベースで
帳票関連を出力する方が多いと思いますが
個人的には、その方法はあまり好きではないです。
これらの方法を使うと、出力した帳票が固定したフォーマットになってしまい、
運用で例外のフォーマットに対応ができなくなるためです。
僕は、DBはあくまでデータ管理に徹底して、
帳票関連はエクセルやOpenOffice.orgなどに出力して表示する方法をとります。


Windowsでは、なでしこプラグインを使ったり、
Event送信で、あらかじめ作っておいたWSHファイルを起動したりすれば、
比較的簡単にエクセルやOOoを操作できます。


Macはどうでしょうか。
さすが、FileMakerです。Appleの子会社なだけあって、
AppleScriptの操作体系はかなり完璧に操作できます。
FileMakerのスクリプトでAppleScriptを実行できるので、
http://karaiblog.blog45.fc2.com/blog-entry-201.html
この方法を使えば、比較的簡単に、エクセルへデータを流し込むことができます。

Mac素敵!


…なんですが…ここはドMなプログラマ根性を発揮して、
ShellとLLでどうにかできないか考えてしまいました。

いろいろ調べた結果、様々なLLでエクセルファイルをごにょごにょするライブラリは出てますが、
テンプレート読み込み→データ流しこみ→別ファイルへ出力
ということをやろうと思うと、
エクセル側のバージョンアップに追いついていなかったり、
日本語処理が十分でなかったりと、
使えるレベルのライブラリはありませんでした。
 


じゃあ、規格がオープンであるOpenOffice.orgならどうなんだろうということで調べたら、
Perlにライブラリがありました。
OpenOffice::OODocです。

ざっと読むと
テンプレート読み込み→データ流しこみ→別ファイルへ出力
ができるじゃないか!
 


というわけで、使ってみました。

!!っが!!

いろいろ問題が。

基本的な使い方は、CPANでOpenOffice::OODocをインストールしたうえで、

#!/usr/bin/perl -w
use strict;
use utf8;
use Encode;
use OpenOffice::OODoc;

my $doc = odfDocument( file => 'テンプレート.ods' );#テンプレートファイル読み込み

#A1へデータを流しこむ
$doc->updateCell( 'Sheet1', 1, 0, 'text' );

#A2へデータを流し込む
#数字の場合は型指定が必要
$doc->cellValueType( 'Sheet1', 2, 0, 'float' );#型指定
$doc->updateCell( 'Sheet1', 2, 0, 125 );

#ファイル出力
$doc->save('出力先.ods');

どうですか?なんかできそうです。
 
ところがで、OOo3.3で見てみると、
セル結合されているカラムのある行へは、
期待通りのセルへ値が入りません(T_T)
バグなのか、OOoの規格についていってないのかわかりませんが、
どのように値がはいるかいちいちトライしてみる必要があります。

どういうわけだが、何がなんでも値が入らないセルとか、
繰り返し値が入ってしまうセル番号もあります。。。
そういうときは、カラム挿入をしてズラしてやったりなどする必要があります。


まぁそんなこんなで何度となくトライして数時間。
期待通りの場所へ値が入るようになって、
FMから出力したCSVをパースして値を流しこんで帳票完成。

よかったよかった。
 
でも面倒!!Σ(ー◇ー;!!


あとは、FMのスクリプトからシェルを起動すれば、帳票データ完成です。

シェルは、AppleScriptで、

do shell script "perl スクリプトファイル"

とか、

do shell script "cd スクリプトファイルのディレクトリ;perl スクリプトファイル"

とかすればOK。
 
注意点として、AppleScriptからのシェル起動の場合、
@INCの中身がターミナルからの起動と差異がある場合があるので、
AppleScriptがエラーを吐き出す場合は、
use libなどしてモジュールを探すディレクトリを追加してやってください。

 
だったら全部AppleScriptでやれよ!Σ(ー◇ー;!!


そして、最後に作った帳票データをFMのスクリプトから自動起動しましょう。

AppleEventからファイルを指定して起動しようとしたところ、
どうもうまくいきません。
どうやらOOoにファイルパスがうまく渡っていないようです。

というわけで、こちらもシェルで。

do shell script "open /Applications/OpenOffice.org.app ファイルパス"

ってやれば、無事起動できました。



今日の教訓!
極力AppleScriptでやることを考えよ!!

2年ほど前MOONGIFTさんで紹介された「sigma visual ajax gui builder」が気になっていたものの、
この2年間DLもインストールも行わずじまいでした。

sigma visual ajax gui builderは、簡単に言えば、
HTML+JS(+バックエンドにPHP)のWEBアプリケーションをつくるための、
WEB版VisualBasicのようなもので、構築もWEBブラウザ上で行います。


インストールは簡単。

sigma visual ajax gui builderの公式サイトダウンロードページから「jsLinb 」をダウンロード。

解凍してできた「sigma-visual-builder」フォルダを適当な名前にリネームして、
フォルダごとサーバーへアップロード
VisualJS/projects/
へ書き込み権限を与えます。

これでインストール完了。簡単でしょ?


GUIビルダは、本格的なIDEモードと、シンプルモードがあります。
シンプルーモードは色々なところで簡単なTipsが書かれているので割愛で、
以下、IDEモードの説明をします。


http://サーバー/インストールディレクトリ/VisualJS/

へWEBブラウザからアクセスします。

こんな画面になります。VisualStudio的な画面ですよね?
早速プロジェクトを作ってみましょう。

赤く囲んだ箇所をクリックすると
 

 
こんなダイアログが出てくるので、プロジェクト名に適当な名前を入れて、
OKをクリックします。
 
 
 
すると、このようにファイルが自動生成されます。
これらのファイルは、VisualJS/projects/内に自動でファイル生成されます。
 

 
「App/js/index.js」をクリックすると、IDE上にソースが展開されます。
ここに表示されている、「デザイン」をクリックすると、、、
 

 
こんな感じに、どうだVBだろ!?といわんばかりのRAD画面に。
ここにパーツを置いていって、開発を行うわけです。
 
Hello,worldについては、
公式のリファレンスと何も変わらないので、割愛します。
 
あとは、
 

 
保存して実行すれば、アプリケーションが走り出します。
 


WEB屋をやってると、エンドユーザーに見えるフロント側から考えがちなのですが、
私はフロントよりバックエンド側から考えなければ、動的サイトの意味がないと考えています。
使いくいとか、運営企業のうち担当者独りだけに、運営ノウハウがたまってしまうなど弊害が多いためです。
 
また、フロント側は定期的に手入れするというは当たり前ですが、
バックエンドも日々手入れしなければ、それも動的の意味がないと考えています。
バックエンド側はまさにWEBアプリケーションなのにも関わらず、
アップデートが長い間行われないなどでは、動的にする意味が極端に薄くなると思います。
 
実装のために、
HTMLを起こして、それをPHPやPerlなどと連携したりというのは、
WEB屋としては大変な作業ではないかもしれませんが、
それを定期的(というか毎日でもいいくらい)に手入れしようとおもうと、
HTMLでは大変だと思います。
 
このあたりをクリアできないかと、RADツールを調べているところで、

なども触ってみました。
これら両方ともかなりすばらしいツールで、びっくりしたのですが、
私のこなす仕事に対しては、ちょっと大きなツールかなという印象もあり、
昔MOONGIFTさんで拝見したツールを思い出した次第です。
 
Sigma Visual Ajax GUI Builderが、その答えになっているのか、
正直なところわかりませんし、
動的と考えたとき、CodeIgniterなどのWAFなどと連携ができるのかなど課題も山盛りですが、
もう少し使い込んでみます。

独立に際して、Skypeを使う機会が増えました。
基本的には、文字での通信が多いですが、
たまに音声をやることも。
 
というわけで、だいぶ昔に買った、
Skype用のワイヤレスハンドセットをオフィスのPCにセットしてみました。
そんな昔のやつなので、動くかなと思ったら、案の定動きませんでした…
現在もヤフオクなどなどで売っているようなので、
動かなかった場合の参考になれば、ということで、
記事にしておきます。
 


環境は、
Windows7(Pro)64bit
Skype5.0
です。
 


製品は、セリングという会社が輸入して販売している「USB-W1D」という製品で、
海外の「Yealink」という会社が製造しています。
詳細はこちらから 


 
まず、製品に同梱のドライバ類をインストールしました。
これで、ハンドセットがUSBオーディオデバイスとして認識されます。
(おそらく単なるUSBオーディオセットなので、ドライバインストールしなくても、
 ぶっ挿せばOKだと思います)
 
その際、ついでに、SkypeMateという、
SkypeAPIとハンドセットの橋渡しをしてくれる、
ソフトウェアが入ります。
 
このバージョンが古いと、Skypeとの連携はできません。
同梱のSkypeMateからアップデートをかけると、
アップデートソフトウェアのダウンロード元がNotFoundになってしまい、
アップデートができません。
 
で、探したところ、
http://www.usbphoneworld.com/fido.htmlここで、Skype5.xのAPIに対応した、
SkypeMateが配布されています。
 
これをインストールすれば、動くようになりました。
 
めでたしめでたし。
 


 
このハンドセットいいです。
 
Skypeの各連絡先がディスプレイに表示されるので、
選んでコールボタンを押せばOK。
着信音もこのハンドセットからなります。
安いハンドセットだと、標準のオーディオデバイスと、
ハンドセットのデバイスが切り替えられなかったりしますが、
これはもちろんできます。
電波が届く範囲は50mを謳っているで、
一般的なコードレス電話と大体距離も同じ。
 
それで7000円程度。どうですか!?奥さん!?

@ahomuさんのブログ記事「LL言語と学習方針を考えてみた」にインスパイアということで。

まず最初思った。私も「LL言語」って言葉使っちゃうんですが、
LL = Light weight Language
なので「LL言語」は重複表現ですな(^-^;

私がLLというものに触れたのが、現職についてから、
Perl/CGIの更新に触れるようになってからですね。
その後PHPやJScriptをいじるようになって、
最近では、not JScriptなJavascriptも触るようになってますし、
LLといっていいかわかりませんが、
なでしこも登場の頃から触っています。
 


Perl

私にとってはLLに一番最初にふれた言語で、
未だにPerlで学んだ知識を他の言語に落としこむというスタイルで
学び、そして仕事をするというスタイルでやっとります。

Perlは私にとっては先生ですね。
WEBの人たちには「死んだ言語」とか「枯れた言語」とか言われて、
「使う意味がわからん」とか言われるんですが、
WEBでよく使われるPHPよりギークと呼ばれる人たちが多く使っていて、
しかもその方々がWEBに関わっているので、
そういった方々の実装とかが非常に勉強になるのです。
 
・使用領域
WEBにおいて、表側に見える処理では最近は殆ど使いません、、、
今後ますます減ると思われます。
しかし、今後は
主にサーバーでのバックグラウンド処理や、
ローカル側でのツール作成などで活躍な予感。
非常によく使うPHPの世界では、
ライブラリリポジトリがいまいちだったり、
ギークと言われる人々の少なさから、
Perlのライブラリを使ってしまったほうが楽だったりすることが多いので、
そういった所で使っていこうかなと。
 
 
・環境
言語環境としては、BSDやLinux系なら、ほぼ初期設定で入っているので、
気にすることはないです。
開発環境としては、テキストエディタで十分ですね。
自作の元カノの名前がついてしまっている謎の内製フレームワークで取り回してますが、
WEB用途ならArkを使っていくのがいいかなと。
 
 
・今後
正直モダンなPerlの書き方を追っかけていない現状。
Perl自体が様々な書き方ができて、それを善とする言語なので、
古いまま書いてるのですが、
そういうわけにもいかないなと。。。
 


PHP

WEBの表側に出力する処理には、ほとんどいま、PHPを使っています。
個人的には言語というより、WEBのためのフレームワークとかツールという感覚で使っています。
でないと、どうしてもPHPをdisってしまいそうになります。

 
・使用領域
完全にWEB用ですね。
コマンドでも使えるので、バックグラウンド処理などにも使えますし、
MS-WindowsならGUIアプリの構築にもつかえるのですが、
取り回しや設定がめんどくさくて使えないと思いました。
徹底してWEB用のツールです。
 
FWは 内製のFWとライブラリ群の中間のようなものを使っていたのですが、
すこしオープンにしなければならない立場になり、
ちゃんとしたFWを探しました。
前述のとおり、私はPHP自体がFWだと思っていて、
そこにいわゆるMVCモデルのようなFWが乗っかるのが激しく気持ち悪いと思ってまして、
ちょうどいいのがないかなぁと思って見つけたのが、CodeIgniterです。
今後はCodeIgniterを軸足に開発をしていくことになると思います。
 

・環境
これまでWindowsではEmEditor、Macではmiで書いてました。
単体ファイルの処理はこれまでと変わりませんが、
プロジェクト単位での仕事はAptana3で行うことにしました。
 
・今後
CodeIgniterをもっと勉強するのがひとつと、
やっぱり、PHPもよりモダンな書き方を勉強していくこと、
あと、速度や軽さというものに注目していくことが課題。
あと、PEARとかPHP Classeesなど、
ライブラリリポジトリがどうしてもショボいと思うので、
自作のライブラリをいっぱい創っていきたい。
 
 


Javascript

まぁ2011年はJSに始まりJSに終わる年なんじゃないかなと思うわけで、色々勉強したい。
私のJS人生の始まりは、JScriptという、異色な私。
ぶっちゃけあまりWEBにおけるJSってのはあまり触ったことがなく、
JQueryに頼りまくってた時期もあるのですが、
seezoo cmsを触るようになって、
seezoo用のJSライブラリである、Flintを使ったとき、
同じ処理で、jQueryより、「体感速度レベル」で速度アップしたことに驚愕。
jQuery自体が「軽量」を謡いながら規模が大きくなっていることに気づき、
prototype.js Flint uupaa.js
などに注目。jQueryをなるべく脱却したいと考え中です。
 
・使用領域
主にWEBのクライアント側処理とDOM処理がメイン。
あとWindowsのバッチ処理にJScriptはやはり便利です。
 
・環境
PHPと同様。
AptanaでのJS編集はかなりしやすいな。
 
・今後
関数志向であるJSならではの挙動をマスターしたいところ。
あと、DOMの操作言語としての側面も強いので、
JSを通して、各WEBブラウザの挙動の違いや、
DOMの考え方の違いも学びたいところ。
 
 
 


なでしこ

私、伊藤清徳といえば「なでしこ」と思ってる方も結構いらっしゃると思います。
正直PHPをはるかに超える、いい加減仕様が目立つ言語で、
プログラミング言語というより、マクロ言語という感覚ですが、
Windowsで簡単にツールをつくろうと思うと、最強の言語です。
 
また、Windows版のFileMakerでは、なでしこの存在は重要ですので、
FileMakerデベロッパーを名乗る私にとっては必要不可欠な言語です。
 
なでしこの面白いところは、VBScriptやJScript そして Lua という
3つの言語を内包していること。
言語を通して言語を学べるというわけです。
 
・使用領域
定型処理・FileMaker処理専用です。
一応CGIが作れるのですが、Windowsサーバーが嫌われる日本においては、
あまり使わないかぁという感じ。
 
・環境
なでしこ付属のエディタ一筋で。
 
・今後
現在なでしこのバージョン2の開発が進んでいて、
現行なでしこはバグフィックスのみのリリースになっているので、
この期間の間に、なでしこの各命令の挙動をマスターしておきたいところ。
 


その他。
Rubyは利用が広がると思われるので、地味に学習しておきたい。
 
現在のところコマンド処理を極端に嫌うダメプログラマなので、
ちゃんとGNUコマンドとか環境構築とかもやりたい。
SQLもどうにかしないと…。
 
って感じ。成長がとまらないようにせねばな感じ。