#最初に結論
無理してPyramidとかDjangoでやろうとせず、かつ自作Webサーバーみたいなものを構築しないですむんだ!
#何があったか
##無職のくせになにもしなかった
前からもやもやと構想は練っていたWebサービス(ほぼ匿名掲示板みたいなもの)があったのだが、自分が勝手に思っていた最近の流行りで
「なんか大掛かりなフレームワーク使わないと行けないんだろうなあ」
と思いながらかれこれ半年過ごしてた。
##「それ、作ればいいじゃん」と言われた
知人とコワーキングスペースで出くわして世間話のついでに
「今こんなの考えてるんだ」
と話したら
「作ればいいじゃん。APIまでできたらマネタイズは何とかするよ」
と言われたため、ちょっと本気出した。
どちらかというと、まともに寝てない知人の姿を見たため本気を出した。
##とりあえずPyramidに手を出してみた
というわけでPythonでたまたま「小さく、早く、堅実な」という売り文句のPyramidを使ってみた。
pcreate -s starter MyProject
と打ち込んで、できたスクリプトを実行したらすぐに綺麗なトップ画面が出てきてすごく感動したのを覚えている。すっごく夢が広がった。
##ドキュメントを読むほど分からなくなっていった
しかし生成されたプロジェクトを改造しようとチュートリアルを見ながら触ったが、やっぱり理解の浅いルーティング周りの知識やモデルの作り方で躓いた。
モデルはできたにはできたが、結局MongoDBなのでPyMongoでJSONっぽく扱えるし
「作る必要あるか? 関数で直接ビューに渡してしまって良いのでは? いや、そもそもRender Viewモデルって……」
などなど考えてフレームワークの理解に苦しんでいる自分が居た。
「こんな大掛かりな事をしなくてもいいよな」
と思ったりして、いつかの二の舞いになりそうな自分に不安を覚えた。
##「なーんかもっとシンプルな書き方あったよな」と思ってBottleのページに行った
求めていたものがあった。
「そうそう、コレくらい簡素でいいんだよ。僕のオツムの性能だったら」
そんなサンプルコードがトップページに載っていた。
そして僕は、マイクロフレームワークを使うことを決心した。
/* ただし、Flaskを選択。過去にちょっと挑戦したWerkzeugを作ったり、PythonプログラマのためのRust入門を書いたArminさんだったため。 */
#「大は小を兼ねる」とは言うが
道具がでかすぎると手に余るのが現実だった。
棚を壁につける程度のDIYに、コンプレッサー式インパクトは必要だろうか?
ネットショッピングするだけなのに、ディスプレイを4つつけてもラグが起きないゲーミングPCが必要だろうか?
道具がデカ過ぎたら小さくする。逆も然り? と思った。
#とりあえず悩んでる人へ
以下は自分が作るに当たって実践したことをつらつらと。
##まずドキュメントから作ってしまえ
「アプリの構想が思い浮かばない」
と悩んでいる人は、一度アウトプットしたほうが良い。チラシの裏でも構わない。
ただ、自分はSphinxで最初からドキュメントを作った。テストコードはまだちゃんと書けないけど、日本語で求めるものはなんとか書ける。
書けるものは積極的にアウトプットしたほうが、大切なことを忘れなくて済むかもしれない。
##結構でっかく(ちっちゃく)なりそうだったら思い切ってフレームワークを変えてしまったらどうだろう
今回まさにそれだった。
書きなおすのはコストかもしれないが、その後の改修の時間の方がプログラミングは長いと思ってる。
その見極めは難しいが、まずはマイクロフレームワークでやってみよう。
#おわりに
「Webアプリを作るのは初めてで、何から手を出せば良いのかわからない」
という人や
「プロトタイプを作りたいけど、大きなプロジェクトになるだろうから大きなフレームワークで作ってるけど、思い通りに進まない」
という人は、思い切ってマイクロフレームワークを使ってみよう。
マイクロフレームワークは「やりたいけど、うまくいかない(脳内シミュレーション込み)」という人の背中をそっと押してくれるものだと、今回の体験で思った。