Web系プログラマの独り言

いつも読んでいただいてありがとうございます!


まだまだコンテンツも充実していない中、毎日多くの方に読んでいただけているのが感激です(^^


これからも皆さんに楽しんで頂けるようなBlogにしていきたいと思っています。


よろしくお願いします!

Amebaでブログを始めよう!
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>

Perl + Catalyst + Eclipse環境のインストール

大変お久しぶりです。
ちょっと最近思い立ち、LAMP環境でも本格的に勉強してみようと思い動き出したので勉強メモを残しておきます。

Amazonのウェブサービスなどの大手Web企業のPaaSもあるようだが、そんなに安定的にサービスを動かす必要もないので、格安レンタルサーバーに最終的な環境はデプロイすることにする。

開発の初期にリモートのサーバーにいちいちデプロイをするのも面倒なので、一旦は検証用環境をクライアントに置くことにする。VMWareを入れて、そこにLinuxを入れて構築しても良いのだがいちいちVMWareを起動するのもおっくうな気がする。

ということでまずはWindows環境にApacheとPerlを入れて、Eclipseで開発できないか調べてみる。

Perlなんて簡単なログ整形程度にしか使ったことがなかったので、PerlだけでWebアプリと聞いても全然ピンとこなかったのだが、CatalystというMVCのフレームワークがあるそうな。

第4回 Catalyst(前編)---Perl向けWebアプリ・フレームワーク - 簡単実装で学ぶWeb技術:ITpro
初めてのCatalyst入門(1) PerlによるWebフレームワークCatalystとは?(1/5):CodeZine

で、Eclipseで開発するためにはEPICなるプラグインを入れれば良いらしい。

スクリプト言語をサポートするEclipseプラグイン - @IT

というわけで早速インストール開始。まずはEclipseとPerl。Catalystは下記のActive Perlインストール後にPackage Managerなるものを立ち上げてから入れるらしい。

Eclipse for PHP Developers

ActivePerl Downloads - Perl Binaries for Windows, Linux and Mac ...

バージョンはそれぞれ下記の通り。

Eclipse:
3.6.1.r361
ActivePerl:5.12.2.1203

Eclipseはシンプルなやつでも良かったが、なんとなくPHPがバンドルされているやつにしてみた。
Windowsなのでインストールは楽々。
両方ともインストーラを起動して順調にインストール。
Eclipseのプラグインも、起動後にHelp -> Install New Softwareから下記のサイトをリポジトリに指定してインストール完了。
http://e-p-i-c.sourceforge.net/updates/

さて、これでEclipseとPerlは入った。
次にCatalyst。Codezineの解説によると、Perl Package Managerを開くと一覧に登録されているはずであるが、無い。ぐぐってみるとこんなものが。

[perlメモ]perlのフレームワークCatalystで遊んでみる その1 - KUMA TYPE

なるほど。リポジトリが足りなかったのか。というわけでCPANのURIをリポジトリに登録。

Catalyst::Manual::Installation

Perl Package Managerの中にCatalyst-Develが登場。インストールしてみる。依存しているパッケージが57個もあるらしい。全部まとめてインストールしてくれるようなので楽ちん楽ちん。

C:\の直下のコマンドプロンプトでサンプル用にHelloプロジェクトを作ってみる。

C:\ catalyst.pl Hello

しかし何やらエラーが出る。何かの依存関係がしくっているような感じ。ぐぐってみても詳細が出てこなかったため、ActivePerlごと一旦アンインストールして5.8.9.828をインストールし直す。
そしたら今度は無事にCatalystのサンプルアプリケーション作成完了。hello_server.plを動かしてサーバーを起動。

C:\Hello\script\hello_server.pl

下記URLにアクセス。

http://localhost:3000/

無事にサンプルページが表示された。簡単だ!
最後に作成したプロジェクトをEclipseに入れてみる。
EclipseでFile -> New -> ProjectでPerl Projectを指定して、プロジェクト名をHello、パスをHelloプロジェクトのルートフォルダに指定してFinishを押すとちゃんとインポートされた。

サーバーの起動も、Run -> Run ConfigurationsでRun Configurationウィンドウを立ち上げて、Perl Localで右クリック -> newで新しいConfiguraitonを作る。MainタブのProjectにHelloプロジェクトを指定して、File to Executeにscript/hello_server.plを設定すればすぐに起動できる。

ただ、サーバーが起動している間にソースコードを書き換えて保存してもサーバーを再起動させないと反映されない…。何か方法があるのかもしれないけどとりあえずはこれでOK。

次回以降はPerlで勉強した内容についてぼちぼち書いていこうかなと思っています。

つぎはぎだらけのシステムとは?

お久しぶりです。

最近、とあるシステムを刷新するプロジェクトの要件定義に参加しています。
よく、つぎはぎだらけのシステム という言い方をしますが、刷新対象の現行システムがまさにそんな感じなので、今回はつぎはぎだらけのシステムとは具体的にはどういうことか?について書きたいと思います。

私が遭遇したつぎはぎシステムがどのようなものだったか、例を挙げて説明します。

--------------------------
栃木県内にある公共施設を、市町村毎に表示するシステムを作成することになりました。
そこで設計者は、このシステムが栃木県内限定で、市町村毎に公共施設をまとめたいのだから、公共施設を検索する条件は市町村だけで良いと考えました。
検索メニューには市町村を選択する項目だけが載せられました。
システムを作ってからしばらく経ったとき、茨城県の公共施設も同システムで取り扱いたいことになりました。
しかし、茨城県の公共施設は数が少ないという理由で市町村毎に表示しなくても良いということになりました。
ここで設計者は、こう考えました。
「検索方法を県⇒市町村の2つで選択できるようにすると、メニュー項目を増やさなければならなくなって面倒だな。よし、ここは市町村のリストの中に例外的に茨城県も入れてしまえ」
これによって、これまで栃木県内の市町村しか載っていなかったメニューの中に突然茨城県が登場しました。こんなイメージです。

宇都宮市
足利市
栃木市



塩谷群
那須郡
茨城県

市町村のリストが並んでいる中にいきなり県が来るのはとても腑に落ちない感じがしますが、設計者は新しいメニューを作るのを嫌ってこのような設計にしてしまいました。
この変更をした後しばらくして、結局他の県や市町村の公共施設も追加したいということになり、一つのメニューの中に色々な県や市町村がいっしょくたに入ってしまう、つぎはぎシステムになりました。
--------------------------

この例では、市町村ばかりのリストの中に県が入るとき、メニューを2つに分けるべきだったのですが、システムを更新する労力を削減したいがために安易な方向に流れ、結果システムがつぎはぎだらけになりました。
実際のシステムでも、ここまで安易ではないにしても更新する労力を削減するためなどの都合でこのような現象が発生しています。

検索対象に新しい県がきても、新しい市町村がきても、何か別のものがきてもこのようにぐちゃぐちゃにならないように、将来の変更を見越してメニュー設計をするのが大事だったわけです。


システムを刷新するとき、そのシステムでは一体何がやりたかったかを考えます。
通常は、「何をしたいか」を整理したドキュメントがあってそれを元に進めていくのですが、ひどいところではそんなドキュメントなど皆無で、上記のようなつぎはぎだらけのシステムだけが残っていて、しかもその中身について詳しい人がいないため、そのシステムが本当に何をするために作られたのかを見極めていくのが非常に難しい場合があります。

システムを作成するときは、経験豊富な人が将来の変更を見据えて設計することが肝要ですね。
現在不足しているシステムアーキテクトに求められることの一つですね。

アプリ系SEの魅力

最近、インフラ系の仕事から一転アプリ系の仕事に移りました。
今までアプリ系は全くノータッチだったのですが、こちらも中々面白いです。

インフラSEをやっていたころは、パフォーマンスなどの非機能要件を満たすために
毎日データ容量やレスポンス時間の見積もりと計測を繰り返していました。
見積もりというのもそれはそれでかなり面白くて、根拠となる数値をどこからか探したり捻出したりして、
そこから既存の見積もり方法を自分なりにアレンジして見積もり数値を作り出すのは頭を使いました。

アプリ系SEでは、パフォーマンスなんかの数値と戦うことはほとんどないけど、
システムの機能要件をどうやって、お客様にも技術者にも分かるような形でまとめられるかというところが
求められます。
アプリSEといっても下流から上流まで色々ありますが、私が担当しているのは上流、つまりお客様の
要求をどうやってシステムに落とし込んでいくか、という部分です。

アプリ系SEは、作っていくモノが目に形に見えるので、「作っている」という実感が沸きます。
これは俺が作ったんだぜ!という喜びがあります。
それに、自分のデザインしたアプリケーションが実際に使われるというのは嬉しいものですね。
今はまだまだ要件定義の段階なので、簡単なプロトタイプがちょろっとできているだけですが、
アプリ系SEの仕事の楽しさが少し分かるようになってきた今日この頃です。
1 | 2 | 3 | 4 | 5 | 最初次のページへ >>