ぺっぺけぺの雑記

くそったれプログラマの素晴らしきくそったれ



ほしいものリスト

システム開発感覚のインプリンティング

同僚がツイッターでつぶやいてた。
「あー、デスクトップアプリ(作るの)難しい」と。

彼はJavaや.NETで、Webアプリばかり作ってきた人間だった。
俺からしたら、デスクトップアプリの方がWebアプリに比べたら数万倍、作るコストが低く感じる。
つまり、「簡単」に感じる。

彼の他のつぶやきから、彼がコストと感じてしまう部分を妄想してみた。

⚫ デスクトップアプリは、客先と環境を揃えなきゃいけないから面倒。x32/64から始まって、OS、.NETフレームワークサードパーティコンポーネントなど。Webアプリはサーバー環境を整え、最低最悪でもブラウザを指定すればオーケーだから楽。

⚫ デスクトップアプリはインストーラー作るのが面倒。コンポーネント入れ忘れとか。Webアプリは決まった場所にデプロイし、その後もサーバーのメンテは管理下におかれるから楽。

⚫ デスクトップアプリは、言語によって外観やコントロールの配置方法が違うから覚えるのが大変。Webアプリは、欲しいものは大抵だれかが作って公開しているので、困らない。

上の3つは、内容を少し変えれば、デスクトップアプリばかり作ってきた俺が、Webアプリの開発に放り込まれた時の感想とほとんど一致する。
立ち位置は、デスクトップアプリとWebアプリ、全く逆だけど。

⚫ Webアプリは開発環境を構築するのが面倒。OS、DB、Webサーバー、APPサーバー、設定ファイル、コンポーネント……
デスクトップアプリは普段使っている環境でそのまま開発できるから楽。

⚫ Webアプリはデプロイ手順が煩雑で、しかも設定が本番機と開発機では違うからとても面倒。
デスクトップアプリはインストーラーにすべてをつめこめば、次へ次へでインストールが完了するから楽。入れ換えも楽。

Javascriptがクソすぎる。Web上に散らばっているコードは、インデントも命名則もあったもんじゃない、Cの初心者が書いた空飛ぶスパゲティモンスターだ。
こんなのを使わなきゃ、まともなコントロール動作も制御できないのか。


これらは要するに、無知と慣れ、習慣の問題だと思われる。


この習慣というのは結構あなどりがたい。

Windows3.1~2000くらいまでのころ、俺の開発内容と言えば、MFCを用いたドキュメントビューアーキテクチャによるアプリケーションがほとんどだった。

すごいアプリならともかく、俺のつくるへっぽこアプリは、処理している情報はほぼオンメモ。
かさばるアンドゥ情報は一部ファイルに出したりしたが、そもそもファイルアクセスがコストとリスクという認識だったため、最低限必要なプロセス間通信と保存と読み込み以外で、外部へのアクセスはまずなかった。
アプリを落としたら、そのとき保存していない情報はそのまま揮発。

Webは全然違って、相手がブラウザを落としても、サーバーには伝わらない。
そんな相手の処理データを、限りあるメモリ上に永遠に置いておけるわけもない。
アクセスされたときに、必要な情報を倉庫からとりだし、処理した上で相手にわたし、不要となった情報は破棄し、またアクセスを待つ、という形が基本的な形だった。

また、相手は一人じゃなく、同時に複数の相手から処理を求められる。メニューを見せろ、という相手に山盛りご飯を渡したら怒られてしまう。

メニューがほしいといったのは誰だったか、ご飯をくれといったのが誰だったか、それだけは覚えておかなければならない。
「覚えておく手法」だけでいくつもあり、アクセス数と処理の重さによってベストプラクティスは変わってしまったり。知るかボケ状態。

これらを迷いなく判断し、組み上げていくWebプログラマーを見て、俺には出来ない(したくない)な、と思った。

今じゃ経験も増え、WebアプリもJavaPHP、.NETと簡単なものならそこそこ作れるようになったけど、いまだに「Webは面倒」という感覚は抜けない。DBじゃなくてファイルに保存したい。

Webアプリを作るくらいなら、directXのゴリゴリの画像処理や判定処理をCで書いていた方がまだいいとか、つい思ってしまう。


同僚君も、同じ思いなんだろうなあ。