読者です 読者をやめる 読者になる 読者になる

せらぴんブログ

サークル「せらぴん」のうのはな透です。やっぱり眼鏡っ娘が好き!!

遭遇したら全力で逃げるべきプロジェクトの特徴

Webサービスを作ろう!」という時に、「これだけはやってはいけない!」という教訓を経験したのでまとめます。こんなプロジェクトを見たら即刻逃げましょう。

1.O/Rマッパーを利用しない

例えばこんなプロジェクト。

もうね、それくらいならRails使わずSinatra使えよ!!
イマドキのMVCを謳ったWebフレームワークでO/Rマッパーを利用しないのはただ不便なだけでなくモデルの構造までイチから考えなければならなくなるパターンがほとんどです。そしてそれはプロジェクトに余計な(しかも多大な)負担を掛けさせます。そして大抵出来るのはろくに構造化されていないお粗末なモデル層という……おぉもう。
O/Rマッパーを使用しないという背景には、推測ですが「未知の技術なので採用しない」「DB層が複雑怪奇すぎてO/Rマッパーの出番がない」「単純なDB機能なのだから使う必要がない(と上が考えた)」などの理由が考えられます。最後に至っては言語道断で、DB設計が単純なら積極的にO/Rマッパーを利用すべきだと考えます。

O/Rマッパーの重要性を知るには下記のスライドがオススメです。

SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?

2.ポップアップ/モーダルウィンドウをやたらと多用したがる

トップメニューからリンクを押したら入力フォームのポップアップ、入力完了して決定ボタンを押したら確認画面のポップアップ。それに飽きたらず決定ボタン押下時にエラーがあったら別の種類のポップアップ。

もうね、そんなにポップアップ好きならJavascriptと結婚しろよ!!
元来ポップアップ画面はWebフレームワークの範疇ではありません。一昔前ならtarget="_blank"を指定して結果画面を返せばJavascriptを使わずにポップアップを表示できたかもしれませんが、タブブラウザが普及した現在、_blankを指定しても新しいタブに表示されるだけ。ポップアップを表示したければJavascriptを使わざるを得ません。もちろん親画面と子画面のデータの受け渡しにもJavascriptを使う必要があります。
それなのに考えなしに確認画面をポップアップで開かせて、しかも嫌がらせなのかモーダルウィンドウと申された日には……笑うしかないよね。

モーダルウィンドウはPOSTメソッドを利用できません。

大事なことだからもう一回言います、モーダルウィンドウはPOSTメソッドを利用できません。

つまり大量の入力データをセッションで手渡すしかありません*1。セッションを利用するとなると生存期間の管理が必要になり、さらに手間が増えることに……素直に非ポップアップ、それがダメならモードレス、せめて擬似モーダルにしておけば……。
まぁこの辺りは要件定義も関わってくるので上からゴリ押しされたら従うしかないんですけどね……。
一番傑作だったのは確認ダイアログ作るにもGETメソッド禁止*2で、確認ダイアログを開くだけなのにメッセージをセッションに登録させるアクションを経由してからOnSuccessメソッドでモーダルウィンドウ開かせるという設計。すごい!涙出てきたわ!!

誰か早く「Popup Considered Harmful」って論文出してくんねぇかなぁ。

3.未経験の技術を積極的に採用する

Ajaxはとても素晴らしい技術です。JQueryどころかWebフレームワークの知識もろくにないプログラマに持たせなければ。

ここまで書いてて自分がまだ逃げ出してないことを褒めてあげたくなった。*3

*1:GETメソッドを使えなんて言われたら即刻逃げます

*2:なんでGETメソッド禁止なのか、多分死ぬほどくだらない理由だろうから考えたくもない

*3:でもここまでクソ設計になった原因の3~5割くらいは自分なので罰として甘んじるしかない