IQ120の口コミ

病院・鍼灸・整体等、八王子周辺のものをレビュー

webフレームワークで外部結合はしない方がいい?

   

前回の続きと言うか。

クックパッドでバイトしている東大生(この問題を1時間で解いた奴)が遊びに来たので、Webアプリケーションフレームワークについて話を聞いてみた。

俺「もし今(2019年8月時点)から新しくwebサイト作るとしたらRailsとDjangoどっちがいいの?」
東「僕はバイトでRailsを使っているのですが、あまり好きではないですね。癖があるというか。個人的にはDjangoの方が良いかな」
俺「俺はLaravelなんだけど、クエリビルダー的なのってRailsはどう?使える?」
東「普通に使ってますよ」
俺「生でクエリ書くことは?」
東「ほぼ無いですね」
俺「データベースは自分で設計してない?」
東「それはしてます」
俺「そっか。なんかさLaravelはクエリビルダーは思った感じにならないんだよね。外部結合するときに、無駄にクエリ発行するし。Railsは違うのか」
東「いや、そもそも外部結合自体しないです」
俺「えっ、そうなの?」
東「他がどうかは知りませんが、少なくともクックパッドは動的に外部結合はしませんよ」
俺「それ困ることない?」
東「いいえ」
俺「じゃあ例えば、コメント機能あるじゃん。レス付けると親子構造になるとして」
東「はい、コメントテーブルを作って管理しますね」
俺「コメント投稿者の名前はユーザーテーブルで管理するよね?」
東「はい」
俺「なら、コメントと投稿者名を一緒に表示する際には結合しないの?」
東「両方のテーブルに対してクエリを出すので、結合はしません」
俺「まあ、それで事足りるのか。じゃあ…ユーザーテーブルに年齢欄があるとするじゃん?」
東「はい」
俺「例えば、コメントの中から投稿者が30歳以上のものだけを抽出したい場合はどうすんの?」
東「それは…クエリが飛び交いますね(笑)」
俺「結合しないと簡単にできないよね?」
東「そうですね。そういう使い方は想定されていないので、やるんだったらもう一つテーブルを作ったりとかになるのかな?」
俺「何故頑なにクックパッドは外部結合したくないのか」
東「Railsがそういう使い方をするように作られてないように思います」
俺「フレームワーク側に合わせろと?」
東「はい」
俺「まあ、型にはめるってそういうことだもんな」

なるほど、確かにそういう考えもある。
LaravelのEloquentが使えないわけじゃなく、Eloquentを使えるようにデータベースを設計にしていない私が悪いと。

その後も軽くモデルとコントローラの境界が微妙とかの話をして、最終的にはまだ決定的なフレームワークは無いという結論になった。

「Laravel Eloquent 使えない」で検索してくる人が何気に多かったので書いてみたが、私も以前の記事から全くWebアプリケーションフレームワークスキルが上達していないので、それは違うみたいな意見があったら、優秀なwebエンジニアの方は是非ご指摘願いたい。

adtes




 - プログラミング