質問!
GAEのwebappでCRUDはどういう名前使うんでしょうか。世間のコードにはjava風、rails風、我流といろいろあって迷う。
BookmarkのCRUD
モデルのクラス名はBookmarkで良いとして、actionの良い命名規約が欲しい。
名称 | URL | クラス | メソッド |
---|---|---|---|
一覧 | /bookmarks | BookmarksHandler | get |
詳細 | /bookmarks/1 | BookmarkHandler | get |
登録フォーム | /bookmarks/new | BookmarkNewHandler | get |
登録 | /bookmarks | BookmarksHandler | post |
編集フォーム | /bookmarks/1/edit | BookmarkEditHandler | get |
編集 | /bookmarks/1 | BookmarkHandler | put |
削除 | /bookmarks/1 | BookmarkHandler | delete |
とりあえずはこんな感じで行こうかなあ・・・。(みんなどうやってる?)
まずHTTPのメソッドについてはREST厨的にはこれしか無い気がする。そうなるとgetが4個あるので最低でも4個のクラスが必要になる。suffixはAction, Handler, Page, Controllerなど色々な例を見るけど、どうもどれもしっくりこない。
Actionはその後に動詞が来るので"XxxActionがgetする"っていうのは何か変な感じがする。Handlerは無難な感じがするけど逆にあってもなくても良いものをわざわざ付けてるという雰囲気が気になる。Pageはページだけじゃないし、Controllerはリソースに対して一つのControllerが対応しないとおかしい気がする。
NewとかEditもちょっとなぁ・・・。
花京院の続き。
"プログラマーとして困る"というのはみみっちい話だけど2点ある。(両方個人的な話で、「俺は関係無いな」という人も沢山いると思う。)
プログラマーの価値が下がる
超大雑把に言うと、IT業界のエンタープライズ系・コンシューマ系は、
- 垂直統合型の時代
- 水平分業型の時代
- オープンソースの時代
- Googleの時代
って感じだと思う。1、2の時代はある程度鉄板ソリューションがあったんだけど、オープンソースが仕事にも使える様になってきて、プログラマにコーディングだけじゃなく、カオスな中からソリューション自体を選ぶ目利き的な事も期待されるようになった。
それが全部Googleでいいんでしょ?ということになるとIDEやフレームワーク、ミドルウェアなどもGAEに特化してきて今よりプログラマーの差異は小さくなる。(カオスな中をHackして一刀両断に問題解決するのが醍醐味だったわけだ)
多様性が減るとつまらない
プログラムは仕事と同時に趣味でもあるわけだけど、オープンソースが上手い具合にGoogleに誘導・操作されると多様性が無くなってつまらない。
同じジャンルに沢山のプレーヤーがひしめいて、パクりパクられ、鎬を削って、時には"誰得"的なものもあって、煮詰まりつつじりじりと全体のレベルが上がってきてある時、ポンッ!みたいのが面白い。
わがまま
要は業界が成熟してきたっつーことなんでしょう。黎明期を回顧する典型的おっさんなんですが、オープンソースでその成熟が思い切り予想外の方向にすっ飛んでいったのを見ると軌道修正されてGoogleに集約されずに行く方向は何か無いのかなあと思っちゃうわけです。
真面目に考えると、インフラをどうにかしないと変わりそうにないですな。SETIやFONみたいにP2Pか相互幇助なハードウェアリソースの上で動くレイヤーを開発する?難しそうだなー・・・。
関連:
Hpricotで良いなと思ってたのが、"クラス名と同名の関数にデフォルト動作をさせる"というやつ。
class Foo
def initialize
puts "new"
# code...
end
def fetch
puts "fetch"
# code...
end
def send
puts "send"
# code...
end
end
def Foo
foo = Foo.new
foo.fetch
foo.send
end
こんな感じでFooクラスにFoo関数を作っておく。
% irb -r foo
>> Foo()
new
fetch
send
=> nil
普通こういう場合Foo.run!とかを用意するけど、クラス名をとりあえず実行してみればいいというのは楽。変数と関数の2値を持てるところを利用してるんだけどシンプルで好きだ。
このパターンの名前みたいのあるのかな?
Life is yak shaving: GAEOに関するレポートを公開しましたTwiiterの知り合いでkomagata氏に、GAEO(Google AppEngine Oil)の調査をご依頼いただいたので、調査してましたがGoogle Codeにそのレポートと簡単なサンプルを載せてありますので、ご興味のある方は見てください。
Python迷子のkomagataです。
GAEで利用できるフレームワーク調査とGAEOのサンプル作成をnaokitsさんにお願いしてたんですが、とても分かり易くまとまっているのでGAEやPythonの大海原で溺れている情報弱者の俺の様な人はとても参考になると思います。特にGAEOは何か日本語情報少ないですからね。
フレームワークといってもdjangoなどのハードなのとは違ってwebappとかDatastoreとかをちょろっと薄皮かぶせた様なもんで、行数自体少ないのでソースを全部読むのもそれほど苦じゃない感じです。(pythonは特に他人のコード見易いですし、railsなんかより全然小さい。)
お仕事依頼したのは人助けみたいなものだけじゃなくて、
- python歴1週間未満だったジャパン価格の人日単価の俺が調査するよりiPhoneやGAE, Pythonに習熟しているnaokitsさんにお願いした方が遙かに合理的。
- 海外の方にtwitterのみで依頼するというスタイルは今後のためにも以前から試したかった。
- 会ったこと無いひとにリモートでの仕事依頼は何度もやってるのでリスクは感じなかった。
- プログラマーというだけで無条件で好きなのでそういう人の助けになりたい。
- 盗難にあったnaokitsさんも助かる、GAE, Pythonに詳しい人に調査してもらえて僕も助かる。という状態なのでやらない理由が見つからない。
ということでtwitterのTLでみた3分後ぐらいに依頼しました。正直、会ったこと無い人に何回も仕事依頼してますが、コード見れば一発で素晴らしい仕事をしてくれるかどうかはほぼ100%わかるし、今のところその通りになってます。逆に履歴書・職務経歴書は12%ぐらいしか参考にならない。
実際に依頼する手順としては依頼内容と金額と口座を聞いてネットバンクから振り込むだけ。まったく手間かかりません。
naokitsさんの仕事は上記の内容で確認して頂けると思います。それ系の仕事依頼したい人はiPhoneもOKなのでtwitterで気軽に依頼してみてはどうでしょうか。(naokitsさんのtwitterアカウント:naokits (naokits) on Twitter)
参照:
% sudo gem install holiday_jp -s http://gemcutter.org
% irb -r holiday_jp
>> pp HolidayJp.between(Date.new(2009, 1, 1), Date.new(2009, 2, 1))
[{:name_en=>"New Year's Day",
:week=>"木",
:date=>#<Date: 4909665/2,0,2299161>,
:name=>"元日"},
{:name_en=>"Coming of Age Day",
:week=>"月",
:date=>#<Date: 4909687/2,0,2299161>,
:name=>"成人の日"}]
日本の国民の祝日を返すgem作りました。ベタです。
参照
瀬戸内海の漁師の続き。
GAEが出た時、
「スケールするつってもそんな大量のアクセスこないしなぁ。月100万PVぐらいまでならさくらの7800円(専用サーバー)で行けるんじゃないのかな?」
なんて思ってた。そんな風に考えてて触ってすらなかった。花京院風に言えばコチコチのクソ石頭の持ち主だった。ところが一年半近く遅れて最近触ってみたところ、なんかスゲー簡単だし、ほとんどのWebサイトは無料で行けるぐらい無料ゾーンが広い。
どうやらGoogle様の意図は俺の思ってたのとは違うらしい。
高性能な分散環境にばかり注目していたが、GAEはある意味、"無料サーバー"なのだ。GAEには"0円"から"格安専用サーバー1台程度"までを全てリプレイスできちゃうような無料レンタルサーバーサービスという側面がある。"WordPressが動く広告も無い無料レンタルサーバー"があったらみんな使うだろう?MySQLとSQLiteの区別が付かない人がWordPressとPython製のGAE対応CMSの違いを気にするだろうか?
前提知識をゼロとすると、FTPと会社毎に違うコンパネ画面を使うよりGAEの方がよっぽど簡単じゃない?GAE上のオープンソースソフトに中国製が多い気がするんだけど、その辺りにメリットを感じてるんじゃないのかな。GAEは激安(無料)、超高品質(安定+無限にスケール)、簡単。安い・美味い・速いを冗談じゃなくて提供してる。
Google様は"際限なくスケールする必要のある大手サービス"だけでなく、儲からない"個人・中小企業のサイトや小さいサービス"も全てGAE上に乗せようとしている。何故そんなことをするんだろうか。(Amazon EC2はロリポユーザーをターゲットにしてないでしょ?)
"大手と個人・中小を全部カバーする"
要はmixiとアメブロとさくらとロリポのインフラがGAEになったら殆どのユーザーはGoogleにアクセスしてることになる。
何が起こるかっつーと、Googleはクロールとかまどろっこしいことしないでも自分とこのデータを解析すれば格段に高品質の検索サービスや広告配信サービスを提供できるようになる。
殆どのサイトがGoogle上にあったら他の検索エンジン勝てるわけないよねぇ・・・。同じ事やろうったってソフトはできても世界一安価なデータセンターはすぐには真似できない。出たばっかのころのGoogle Appsを会社のメインに導入するのって結構チャレンジャーって感じだったけど、今やITベンチャーでは使わないところには特別な理由が必要な感すらある。そんなノリで会社のページをGAE上に作るのに何の抵抗も無いって状態すぐに来そうじゃない?だって無料なんだし。
GmailとかGoogle Appsって何であんなにふとっぱらに使わせてくれるのかなとか思ってたけど、"ネット上の全サイトGoogle移行計画"の途中で出来た単なる副産物だったとしたら恐ろしいよねぇ。(そこまで最初っから決まってたとは思わないけど、80%ルールで、頭良い人ばっかりの会社で延々とプレゼン大会状態が何年か続いたら自然とそんな野望が出てきそうな気はするw)
「グループウェアだけじゃなく、会社のウェブサイトも無料でできちゃうのかー、そりゃいいね!」
って感じで大体の人には良いお話だと思う。しかし、プログラマーの俺としては困る部分もある。
つづく・・・
関連:
RubyのTimeはデフォルトで現在時刻を返すんだけど、Dateはデフォルトでユリウス暦元日を返すんですな。
% irb --simple-prompt -r date
>> Time.new
=> Mon Nov 16 21:34:22 +0900 2009
>> Date.new
=> Mon, 01 Jan -4712
俺の中では現代からいきなりスリーハンドレッドのレオニダスみたいなマッチョが剣と盾持って暴れてる世界に飛ばされたイメージ。
俺「紀元前4712年なんて随分昔ですよねえ?」
レオニダス「あ”ぁぁあ”あ”ぁぁぁあぁぁぁ”あ”ぁ”ぁぁぁ!!!!???」
俺「Date#todayというメソッドを作って、デフォルトは今日の日付を返してくれると便利だと思いませんか?」
レオニダス「うぃおあえをfなdfす;あsぢfばあlwfなうぇおうfないうぇbふぃうやwふぇやsdfb!!!!!!!!!」
![]() |
|