思い出をちょっと書いてみようかと。(年取った証拠かなー?)

僕が初めてコンピュータというものに触ったのは専門学校時代だった。それまで触ったことも興味を持ったこともなかったw.で、専門学校ではまず、COBOLを習った。それを実習するために初めて触ったのが、NECのACOS 700だったと思う。いわゆるメインフレームというやつ。実習はOCRシートでプログラムを書き、これをリーダーで読んで、その後、実習室の端末で修正して、実行するというものだった。データなどは予め用意されていた。JCLも予め用意されていた。なので、JCLを実行するとコンパイルから実行まで自動的に進んだ。結果はプリンターに出るという作業。コンパイルエラーなどもプリンターにでる。そんな環境が初めて使ったコンピュータだった。
その後FORTRANなども学習し、実習なども行った。やはりACOSだった。

2年次(1年の後期だったかなー?)になると、コンピュータオペレーション実習というのがあった。これはNECのミニコン(MSなんとかという名前だったような記憶が)での実習。これは、ミニコンのオペレーション実習でOSはUnixライクなやつだった。で、なにをやったかというと、なぜかRPGをつくるというやつだった。プログラムとかは予め用意されており、マップ等を作成して、それを実行するまでというものだった。今考えるとたいしたことないんだけど、ミニコンといって結構な大きさで、まず、OSをブートするのにメモリアドレスの入力をしたり、テープからデータを読み込ませたり、などなど、初めての僕には新鮮なものだった。
で、どんなゲームだったかというと、コンソールで選択をすると、結果がプリンターに出てくるというものだった。プリンターに出てくるのはいわゆるアスキーアートてきな物だったんだけどね。

このころある講義(講義名は忘れたw)で、レポートのため「ソフトウェア考現学」という本を読んだ。このほんで、C言語、LISP、Smalltalk-80、Prologを知った。それまで、COBOLとFORTRANしか知らなかったので結構衝撃をうけたのを覚えている。その後、選択講義でC言語入門というのがあったので迷わず選択。実習はなかったけど。正直このころはポインターとか言われてもちんぷんだったw。

そして、その後は次へ続く(笑)
以前務めていた会社で顧客管理システムを作ったときのお話。

制約条件:
お金が無いのでソフト、ハードにお金が掛けられない。
バラバラに管理している情報を一元管理したほうがいいんじゃないか。
みんなつかっているのは、WordとExcel。新しいソフトの使い方はあんまり覚えたくない。
データの更新は特定の人だけがやるようにしたい。
データの取り出しはみんながやりたい。
顧客数はたかだか数百社。付随するデータも増えても数千程度とみつもる。それ以上になったら、会社も儲かっているだろうから、ちゃんとしたのにしようw!

システムの構成
ハード
PentiumMのノートPCが落ちていたのでw、を利用することにする。理由はMySQLとPHPが動けばいいのでこれくらいで十分と判断。メインメモリは512Mくらいで、HDDは100Gくらいだったと思う。
ソフト
OSはFreeBSDにした。これは僕が一番使いやすかったから。今ならUbuntuServerでもよかったかもw.
これに、MySQL+Apache+PHPをいれた。
クライアント側にはOpenOfficeとIEで使えるようにした。OpenOfficeのBaseでデータの入力。
データの閲覧はIEで出来るようにした。

システムの設計ポリシ
システム構成のソフトのところでも少し書いたけど、入力はOpenOfficeBaseで行うようにした。
これは、フォームの設計と実行が簡単だから。PHPでつくっても良かったけど、そうすると時間がかかりそうだったので。あとは個人的な興味もあったのでw.
データの取り出しについては、PHPで作成した。単純に検索してHTMLにするのと、Excel(xls)データとして取り出せるようにした。これは、みんながふだんWordとExcelをメインでつかっているから。
で、挿し込み印刷とかいろいろと自分たちで工夫をしていた。なので、なるべくシステムをそっちに合わせる方向にした。これに付いてはPHPExcelというライブラリを使った。

いろいろかいたけど、基本的に現在の業務の進め方にあまり影響をあたえないようにすることをまずは目標とした。理由は新しいシステムにする事の有用性を感じてもらうにはなるべく敷居を低くして使ってもらうことが大事だと考えた。

実際の作業:
まず、古いノートPCにFreeBSDをインストール。これは、なんどもやってきたことなのでもんだいなし。なぜ、古いノートPCにしたかというと、ノートPCにはバッテリーが付いているので停電などになってもそれなりに動作できる。場所も取らない、静か、等けっこう便利。
次に、FreeBSDのPortsをつかって、Apache,PHP,MySQL,Pear,PHPExcelをインストール。PHPExtentionsでいろいろオプションを付けるとそれの関連する物もいろいろインストールしようとするのですごい時間が掛かった。基本的には、mbstringsとMySQL関連があればよさそう。
次にデータを入力する環境を作る。具体的には、OpenOfficeBaseとMySQLがつながるようにMySQLOdbcドライバをWindowsな環境にいれる。そして、入力用のフォームを作成。で、データの入力。
ある程度データの入力が終わったら、IEでデータが見られるようにPHPでプログラミング。
大まかにはこんな流れ。

作業中にはまったこと:
一番はまったのは文字コード周り。基本的には表示できるんだけど、(株)とか、髙とか、①とかだけばける。いろいろと試した結果、コード周りをすべてCP932に合わせるということで解決。

外部サイトとの連携:
顧客情報は一部会社のホームページで見られるようにしてあるんだけど、内側のシステムとホームページがあるサイトでは直接の連携が取れないので、これを一部データをcvsで取得して外部サイトへもっていうくという手法をとった。日々の外部のデータのメンテはMysqladminを使うようにした。
これと共に、ホームページ上でアンケートの集計データとそれをレーダーチャートにしたものを公開しないといけないので、これも、MySQLとPHP+JpGraphを使った。意外と簡単にでけた。

作ってみて:
けっこうOpenOffice+MySQL+PHPで業務システムを作るのはいいかもと思った。もう少しOpenOfficeBaseのレポート作成機能がちゃんとしているともっと使い物になると思う。レポートはPHPでPDFをつくるというやり方もあるけど、PDFをデザインするのが大変そうだった。逃げ道はPHPExcelをつかって、ExcelでデザインしてPHPExcelで指定のセルに挿し込むというやり方がある。これは時間があればやってみたかった。

以上なにか質問があれば、コメント等にお寄せください。時間が取れる時にお答えします。
MODx Revoでpluginのパッケージがインストールでけんなーっておもっていたら、
上のあたりに、PHP5 cURLモジュールを使えるようにしてね!ってメッセージが
出てた。UbuntuServerでのインストールの仕方は

sudo apt-get install php5-curl

でした。