TOPハウツー・学習テクノロジーvoi-chord技術ワードトーク「SQL」17:38 8月4日 96再生 問題を報告する 再生する シェアする AI目次プロも悩むSQL学習、最初の一歩「どうとでも書ける」SQLの難しさ熟練者も頭を抱えるクエリの読み解きデータベース深掘り「イノシシ本」の魅力パフォーマンス改善、JOINの危険な落とし穴AI文字起こし(β版) # チャプター1 マサト・タモノ・ボイコード Voicy Engineerの声とであるチャンネルボイコード このチャンネルではVoicy Engineerの日々の活動をお話ししています。 ということで、今週、今週じゃないわ。 今日は技術ワードトークの回ですね。 これ、収録日1月28日の火曜日なんですけど 前回撮ったのが24の金曜日なんで 間隔短すぎて そうか、前回金曜日だったか。 なんか早かったなーって あれ、もうか?みたいな またか?みたいな ちょっと驚いたんですけど そっか、収録日が必ずしも毎週同じじゃないから ちょっとたまに短い時があるんですね。 確かにそうだったかも。 今日はSQLを話しますか。 SQLどうですか? コモさん最近使ってるとか結構書き始めてますよね。 そうですね、ちょうど越境し始めたタイミングが 1月、2月ぐらいかな? 会社としてやろうみたいなのがそれぐらいの時期で そっからちょっと勉強して 今はバックエンドのメインのタスクが だいたいDBとかコラスとか終わってるんで それでちょっとSQLに対するかみたいな感じで ここ最近は割とその辺データベースだったり SQLの勉強を意識してやってます。 SQLの勉強って何してるんですか? それは僕も聞きたいぐらいですけど そうですね、僕がやったのは 一番最初はそもそもSQL書けなかったんで まず簡単なSQL書くところからスタートしましたね 普通にセレクトしてデータ取ってくるみたいなのから まず入ってっていう感じで 一通り本当に簡単なSQL書けるようになったタイミングで せんちゃんがお勧めしてた SQL実践入門を呼び始めたっていう感じで 全部を今完全に読んでるわけじゃないんですけど だいたい8割ぐらいは必要そうなところは一旦読んだみたいな そんな感じですね 意外と実際に書くみたいなのはまだそんなに多くなくて だから空で書いてみろって言われたら 複雑なクエリは書けないかもしれないみたいなのは 若干まだある不安はあるんですけど 簡単なやつだったらバババッと書けるかなぐらいの ニュアンスですかね SQLについて何も触れてなかったんですけど 簡単に言うとデータベースに対して この条件に引っかかるデータを取ってきてくださいとか この条件に引っかかるデータをこういう形に更新してくださいとか そんな感じでデータベースに対して指示ができるみたいなものを クエリなんですね そっかじゃあ あれなんて言おうと思ったんだっけな ちょっと忘れてしまったので話題変えて SQL自分難しいなって どうとでも書けちゃうのがすごく難しいなっていう のを感じますね 例えばデータ分析の時とかも 例えばよくあるビッグクエリにデータを入れてて そこからクエリを書いて 必要なデータを取ってくれるようになると思うんですけど 結構いろんな取り方ができるというか あとはテストみたいなのがないじゃないですか なんで当てそうみたいな 確かに 可視化らしさの検証みたいなのがすごく難しいなって それはそうかも 生でSQL書くのはそんな自分も好きじゃないですね そうですよね確かに 今は社内のAIの仕組みとかがだいぶ整ってるから 実際にこういうデータ欲しいですみたいな依頼って 今ほとんどないと思うんですけど 昔は多分あったじゃないですか 僕が入った時とかはギリギリあった時代だと思うんですけど その時だったら結構大変だろうなって これどうやって正しいことを確認したらいいんだろうみたいな 結構難しいなって そもそもデータベースのどういう構成になってるのか ちょっと把握しなきゃいけないし それがちゃんと意図通りの結果になってるかっていう検証が 実は結構難しそうだなみたいな 確かに あと何か何でしょう 人が書いたクエリ読むのめっちゃ辛いって それはそう 頭の中が さっき言ったように どうとでも作れちゃうとか書けちゃうじゃないですか だからその動出?ロジックが 人によって多分頭の中が違うので すごい難しいなって なんでこんなクエリ書いてんだろうみたいな めっちゃむずいなって思いますね そうですよね 集計とかの観点でこうやって書いちゃえばいいじゃんみたいな やり方が結構あったりとかすると思う 直接的な使い方じゃないっていうか 実質こういう風に動かせるよねみたいな 直感に反するっていうか そんな書き方とかも結構できるのかなみたいな 確かに あと何か多分 エンジニアとかだとイメージでしかないですけど 結構より エンジニアじゃない方が書いたSQLとかだと 結構動けばいいみたいな感じ 動けばいいって言うと言い方悪いですけど こういうさっきの集計ができたら良さそうなクエリみたいな 多分近いと思うんですけど なんかその 読むのが辛くないやつっていう感じ そういうのを書くのは エンジニアが書きそうなクエリとはちょっと違った みたいなのもあって 多分そういうのもあって 確かに 読むのむずいなって思いますね 確かになんかあれですよね SQL実践入門に書いてることそのまま言うだけなんで 受け売りなんですけど いわゆる宣言的なのか命令的なのかの違い SQLもあるのかなっていう感じで僕は捉えてて SQLは宣言的に書いた方が良いと 一般的にされてるのかなみたいな感じなんで どう取ってくるかっていうよりかは やることを書くみたいな感じにするっていうのが 意外と人間の脳みそって 命令的に書きたくなるじゃないですか プログラムの仕事なんですけど ifこれこれみたいな感じで バーッと書いてきたくなると思うんですけど そこは宣言的に行動を書くっていう 発想と結構近いのかなと思うんで そこら辺の難しさはやっぱちょっとあるなっていうか 慣れるまで結構大変だなっていうイメージがありますね あとなんかプログラムで書いたら これめっちゃ簡単なのにみたいなものも めっちゃあるじゃないですか 確かに プログラムで取ってくると簡単なのに SQLで頑張るとつらいみたいな 確かに そこら辺融通が効くようで効かないようで みたいなところは確かにあるかもしれないですね 自分が知らないだけかもしれないですけど 便利なクエリみたいな 確かに 知ってるもので何とかしようとすると結構難しいから そういうことできるのねみたいなのが 発想でしないとなかなか難しいなっていう っていうのもあるんで 僕も集計とかは特にそこら辺頭使うなっていうイメージがあって 実際の複雑なアプリケーションとかだったらまた別だと思うんですけど 単にデータ取ってくるだけだったら そんなに難しいことしなくても済むことが多いじゃないですか だからアプリケーションで使うぐらいは そんなによっぽどこみったとこじゃなければ パパッと取ってこれるっていうのは結構あるのかなと思うんですけど 集計って特殊な要件というか こういう条件でとかって なかなか普段考えない使い方をしなきゃいけないから それは結構書くの大変だなというか 今書けって言われても書ける自信ないというのはありますね 確かになんだっけなローナンバーだったっけな あるじゃないですか ありますね あれ確かなんだっけな いい感じに番号を振って その中の1番とか取ってくるから 簡単にできると思うんですけど そういうの知らなかったら クエリでマックスとかで頑張って取ってくれる とか多分しないといけないんだろうなとか 確かに その辺がありますよね 確かにローナンバーは結構便利なやつっていうイメージがありますけど 本当に集計作業しないと意外とあれ使わないという感じがするんで 実際にアプリのコードで書くことほぼないかなという気がしたんで 意外となじみがないというか そうですよね 使う関数も微妙に違うなというか 集計はそうじゃないので # チャプター 2 トモさん、SQLを勉強し始めたのは最近だと思うんですけど 多分合わせてデータベースの勉強とかも一緒にし始めたって感じですか? データベースそのものを今がっつり勉強してるかと言われると そこまで比重的には大きくはないですけど ただ、ざっくりどんなものなのかなみたいなのは 少しずつ最近は余裕があったら勉強しようかなと思ってて 何だっけ、オライリーから出てるイノシシのやつ データ指向アプリケーションデザイン あれとかはちょっと最近読み始めてますね データ指向アプリケーションデザイン これ面白いですよね 面白いですけど、むずいですね 自分も一回全部読んだんですけど 面白かった記憶とむずかった記憶がどっちもあるんですけど 詳細あんま覚えてなくて すごいもったいないことしてる感があって ちょっと読み直そうかなと思ってます今 僕はそれこそそんなにデータベース周りをずっと触ってきたわけじゃないんで いきなり読んでも結構むずいなみたいな B3とかその辺バンバン出てきてとかするんで そこら辺の仕組みっていうかどういう風になってますねみたいな話なんで 普段意識しないレイヤーというか 隠蔽されてるものを見に行ってるみたいな感覚があるんで ある程度はやっぱり慣れてる人 経験がある人が読んで理解できるものなのかなみたいな感じなんで 僕も脳みそにどれくらいインプットできてるかは怪しい イメージ的にこれどっちかっていうと 僕の記憶のイメージなんですけど データベースにめっちゃ特化した本っていうよりかは どっちかっていうとシステムデザインの本に近いようなイメージがあって そういう観点で今自分は読み直したいなみたいな感じなんですよね データベースの本だとオライリーの小説データベースだったかな ひらめかカレーの なんか見たことある 結構これも深くまで入ってるらしいですね 結構難しいってよく言われててあんまり読めてないんですけど そうですよね 存在だけ知ってるって感じですね なんかデータベースって基本なんか 吉田にやってくれるものだし そうあるべきものだから なんかわざと中に見に行くっていうか その実装のところとかを意識しながら なんか触るものじゃないからこそ なんか一定難しいことやらないと そういうとこまでなんか実際使わないじゃないですか そういうのはなんか やった方がいいんだろうなぐらいの気持ちで一応見てるだけで なんかこれいつ使うんだろうって まだあんまり分かってないっていうか あんまりそうですよね 深くまで知りに行かなくてもって言ったらあれですけど まあ行かなくても使えちゃうというか まあそうですね 最低限インデックスとかの辺さえ そうですね 分かっていれば ある程度は使えるかなっていうのはありますよね そうですね ただなんかそこら辺に紐づく概念というか まあなんかそこら辺を意識しなきゃいけないっていうか 書き込みの時に実際なんかどういうことやってんだっけっていうのが あんまりイメージが湧いてなさすぎると ちょっとやっぱなんか扱いづらいなっていうか データベース怖いなみたいな気持ちになるので なんかそこら辺はなんかちょっと 少しでもなんか知っておけば なんかこんなイメージなのかなっていうのが つかみやすくなるのかなみたいなところがあったので まあそういうのでちょっと自分は 一応勉強しようかなぐらいな感じなんですよね なんかあの ジョインしてもよいのかみたいなところとか ジョインしてもよいのか そういうのもなんか 今までちゃんとやってたら 肌感としてこれは大丈夫でしょみたいなところとかが ある程度わかると思うんですけど そこら辺が一切わかんない状態で見てると 何が内部で行われてるんだろうみたいな気持ちになる 実際に大丈夫なのかどうかが判別のしようがないみたいな感じで 結構仕事する上で困るなみたいなのがあったりしたので 例えば巨大なテーブル同士のジョインをしようとしてるとか ああとか例えばですけど まあでもそこら辺が実感として 実際にやったことがあれば いやこれは確かにまずいよなみたいなのが 肌感としてわかると思うんですけど そこら辺がやったことないと意外とわかんないな でも意外と 意外とって言われるかもしれないけど ボイシーが多分 クエリのパフォーマンスチューニングできるところ 多分結構あると思うんで 結構あると思います多分 もっとよくできると思います パフォーマンスチューニングも その時の最適解は作れるかもしれないけど データ量変わったりとかするとまた変化するとかっていう 生物なんだなみたいな感じがあって そういう難しさもあるなみたいな そうですよね 一旦方針として問題になったら考えようみたいなの 取る時も多分あると思うんで 基本そんな 毎回新しいクエリを描く度に めっちゃ考えなきゃいけないっていうよりかは 何かボトルネックがあった時に考えるものなのかな それが来るのを待ちながらみたいな 来た時に考えるかみたいな感じですけど 多分あると思いますよ 条件によっては重くなるとか あると思います 来た時にこいつをチューニングするかみたいな 直すのとか結構楽しいですしね 面白いと思います 確かに改善できたらおってなるんで めっちゃ早くなるんで それいいですよねやっぱ 一回前に データベースちょっと何の機能かとか忘れたんですけど データベースに対してフォーブの中で問い合わせを何回もしてるみたいな クエリを書いてるところがあって 一番やったらいけないというか 確かに典型的なやつですね 典型的に遅くなるパターンのところなんで そこを直した時とかはめっちゃ早くなったんで 気持ちいいですね そこらへんって直そうと思った時って どういう知識が必要になるんですか どういう知識が必要 そんなめっちゃ知識が必要って感じじゃなかった気がするんですけど それはどっちかっていうと データ量がすごい重くて どちらかというとフォームの中で ネットワークのところなんで どうすればデータベースアクセスを少なくするかみたいな感じで考える それこそジョイン使うとか 事前に必要なデータを取ってきて そこからうまくプログラムのほうで何かやってとか やる風に工夫するとか そんな感じを考えた気がしますね 確かにそっかそっか でもこの辺全然知識ないんで なかなかそんな頻繁に クエリ書く頻度と比べたら圧倒的に少なくはなりますね でもここらへん分かると楽しいなっていう気持ちにはなるんで 最近はそんな感じで楽しんでますかね そうですねちょっと話してて イノシシ本また読み返そうって気持ちが強くなりました 僕は実際今読んでる最中なんで 気長に読んでいこうかなと思ってます 分厚いっすもんね そうなんですよ 一応幼少で読んでいるんですけど 4,500ページぐらいあって 多分最初の方読んでるんですけど 後ろの方行ったら多分忘れてますね 何ページだ? 660ページだ そんなにあったか 日本語と英語で多少違うかもしれないですけど ゆるゆる一緒に読んでいきましょう そうですね 確かに一緒のやつ読んだら まさにこれってどういう意味ですか 分かるかな これって何ですかって聞きに行けるんで 話題の提供にはなるかもしれないですね 一緒に勉強しましょう じゃあ今週はこんな感じです 次はどの声と繋がりますか 引き続きVoicyでお楽しみください もっと見るvoi-chordVoicyエンジニア09:241.チャプター108:142.チャプター 2コメント感想・質問・応援メッセージを書こう にゅ〜ぶる🐹CoderDojo姫路🏯8月4日まささんともさんいつもありがとうございます✨ゴリゴリSQL書いてた人間なので懐かしくなりました🤣ORM出た時は、「なんじゃこりゃーー」ってなって、以下にSQL書かなくするか!で沼ってた思い出😂書き直してレスポンス改善するととっても楽しいですよね〜🤭1返信 ドヤッ8月4日イノシシ本、今年 2nd edition 出たので読み直したいですね2返信
プロダクトエンジニアカンファレンスに登壇してきたよ!🧑💻 22分・9月12日・ 97再生AI目次Voicy流!一人一案件で生産性3倍の秘訣デジタル庁登壇者が語る「価値ある開発」プロダクトエンジニアの挑戦とチーム連携の壁Voicyグッズ考案?スポンサーブースで見えた発見ユーザーからの声!Voicyアプリ改善とアジャイル論
技術ワードトーク「アジャイル」 23分・9月8日・ 92再生AI目次アジャイルとは?Voicyでの実践職能別チーム解体とアジャイルテストが変えたアーキテクチャアジャイルの誤解と真の姿ユーザー価値を届ける開発の仕事
コーヒーとネイルと学び|DroidKaigi 2026参加記 23分・9月5日・ 109再生AI目次Android Studio不要!AI開発術0.47%のANRがアプリを危うくする?DroidKaigiの祭典、開発者のリアルKMP/CMPで進化するクロス開発Voicyイベントとコナンくんアイテム談義
技術ワードトーク「音声変換」 20分・9月1日・ 84再生AI目次音声変換の歴史と進化の道のり声の変換、機械学習が担う役割音程を操る技術の奥深さとはAIが声を学習する仕組みとデータコナン君の変声器、その技術の先
"技術でユーザーと信頼性を構築する"、"答えの無い業務改善プロジェクト"・・・それぞれの挑戦を語る 26分・8月29日・ 106再生AI目次顧客信頼性エンジニアリングの挑戦QA知見が活きるCS対応技術AIが変革するログ解析と業務効率答えなき業務改善プロジェクト技術文化とエンジニア職の多様性
技術ワードトーク「AWS」 20分・8月25日・ 80再生AI目次AWS誕生秘話:Amazonの戦略とは?サービス多すぎ?AWS学習の難所AWS資格で広がるエンジニアの道目指せQuestronaut!Kubernetes資格資格試験の費用と学習の本質論
最近学んだ技術 18分・8月22日・ 71再生AI目次Observability: ログの課題と活用術Linux: アプリケーション動作の深層AWSとネットワーク知識の結びつき環境変化とイベント運営の困難TypeScript: 型のある世界の体験談
技術ワードトーク「TypeScript」 20分・8月18日・ 77再生AI目次TypeScriptとは?JSとの決定的な差JavaScriptからTypeScript移行の秘訣開発体験を変えるTypeScriptの快適さWeb開発でTypeScriptが必須な理由とは今から学ぶならTypeScript?最適な学習法
社内エンジニア発表会が面白い🧑💻 18分・8月15日・ 95再生AI目次社内エンジニア発表会の舞台裏AI活用と機械学習!発表テーマの多様性聴衆を惹きつける発表術の秘訣社内知見を外部LTへ!最新AIトレンドリスナー質問!VS Codeへのこだわり
技術ワードトーク 「エディタ」 29分・8月11日・ 118再生AI目次各エンジニアのエディター選定理由とこだわり有料IDE GoLandのコストと価値ZED採用の背景とVim操作性への言及ダークモード・ライトモードの視認性論争予期せぬショートカット誤爆とその原因
ゴリゴリSQL書いてた人間なので懐かしくなりました🤣
ORM出た時は、「なんじゃこりゃーー」ってなって、以下にSQL書かなくするか!で沼ってた思い出😂
書き直してレスポンス改善するととっても楽しいですよね〜🤭