1. readline.fm
  2. EP164 プログラマが知るべき97..
2026-02-06 25:29

EP164 プログラマが知るべき97のこと PART2

spotify apple_podcasts

## とりあげた本

『プログラマが知るべき97のこと』オライリー・ジャパン 2010


## mixi2

https://mixi.social/communities/513e0bc9-582b-4962-a9c1-c5c076175e08/about


## ShowNote

https://gennei.notion.site/EP164-97-PART2-2fdc645d4911800ba964c7d0e5569fa3

サマリー

プログラミング言語の習得についての考察が展開され、特に複数の言語を学ぶ重要性やデータフロー型プログラミングについて触れられています。また、AI技術の進歩がプログラミングの学び方や言語の選択に与える影響についても議論されています。プログラミング言語やパラダイムを学ぶことの重要性が掘り下げられ、それによって培われる能力や視点の広がりが語られます。さらに、データベースの理解や実践的なスキルを蓄えることが役立つことが考察され、特に異なるプログラミング環境の文化的視点にも焦点が当てられています。

プログラミング言語の種類
スピーカー 1
ちょっと、関連してエッセイ。これは、えっと、プログラミング言語は複数習得すべきっていう、まさに、まさになやつがあるんですけど。
スピーカー 2
どこでしたっけ。
スピーカー 1
えっとね。
スピーカー 2
あるのは覚えてるけど、前みたいに54順じゃないかな。
スピーカー 1
43番。
スピーカー 2
43番。はいはいはい。
スピーカー 1
この中で、プログラミングの言語の種類みたいなとこで、手続型、オブジェクト思考型、関数型、論理型、データフロー型みたいなのが出てきて、
なんとなくCは大学の授業で触ったなとか、オブジェクト思考は触ってるな、Javaも書いてるし、Cシャープも書いたしなとか、関数型はFシャープちょっとやったなとか、
論理型はプロログちょっとそういえばやったな、大学の授業でって思ってて、
最後データフロー型っていうのが出てきて、データフロー型プログラミング言語ってなんやねんと思ってあのwikipediaを読んでたんですけど、
全然わからなくて、知ってるものがなくてピンとこねえなと思ってて。
スピーカー 2
なんだ、どこらへんの業界で使われてるやつだ。
いやー、すごいな、7つの世界、7つの言語って本がありますけど、あれ見たら載ってるかな。
スピーカー 1
いやー多分なかった気がするけど、まあ昔だからなよ。
スピーカー 2
まあ書かれたのも昔ですしね。あの時のRubyと今のRubyがだいぶ違う気がする。
スピーカー 1
あ、そうね。
スピーカー 2
データフロー言ってることはわかるけど、言ってることはわかるけど何言ってるかわかんないですね。
スピーカー 1
一応ちょっとwikipediaのデータフロープログラミングの一番最初の概要を読むと、
データフローの原理とアーキテクチャに準拠したプログラミングパラダイムであり、
プログラムをオペレーション間のデータフローの有効グラフとして模型化する、またはモデル化するということですね。
データフロー言語は関数型言語の特徴を共有しており、より数値処理に適したものになっているって書いてありますね。
左から右にデータが流れていくようにして、そこに分岐とか処理が入るから、
有効グラフになって矢印付きのある点からある点に移動するっていう状態が変わっていくとかいうことなんだろうなって想像はつくけど、
実際それってどこで使われてるのとか、それをやるのに何て言語でやってるのって言われると、全然知ってるのがなかったんですよね。
スピーカー 2
知ってるのないですね、ただJavaでフレームワークあるよとかは書いてあるか、
ってことはあれじゃないですか、やっぱり手に馴染んだ言語で実装してみるのがいいんじゃないですか。
スピーカー 1
確かに。でも今だったら結構、取っ掛かりはAIに任せられるからやりやすそうなんだよな本当に。
スピーカー 2
作ってみた上で何に使うのかがピンとくるかは別なんですけど。
スピーカー 1
複数習得すべきですって言って、たぶん一番最初にデータフロー型に手をつける必要は全然ないと思うんですけど、
当時読んだ時はたぶんこんなこと全然気にしてなかったなと思いながら、もう関数型にしか目が行ってなかったなと思いながらこのエッセイちょっと自分で読んでましたね。
プログラミング言語の習得過程
スピーカー 1
金城さんってどういうような言語を今まで触ってきました?
スピーカー 2
今までですか、今までは一番最初に触ったのがPythonで、それはGoogle App Engineがただで使えたから。
その次はPHPですね。ワードプレスってPHPですか、別言語ですか?
スピーカー 1
言語としてはPHPなんで一回PHPとしておきましょう。
ワードプレスかPHP学べきレシピやって、その後JQueryはJavaScriptですか、どっち先やったかな。
JavaScriptとしましょう。
スピーカー 2
まあやって、その後何やったんだろう。だからすごい一番、だからハスケルを一瞬触ってるかもしれないですけど、タイタニウムJSはJavaScriptですか?
スピーカー 1
いやなんかドットネットはこれはフレームワークですか、別言語ですかみたいな、なんかそういう世界観ありますよね。
タイタニウムJS、タイタニウムになる前ですね、タイタニウムJSかタイプスクリプトをどっちかをちらっとやってる。
スピーカー 2
でもそうですね、その後は普通ですよね。タイプスクリプトをちらっとやって、Goをやって、あとKotlinもチュートリアルレベルやったし、
あと転職活動してる時にスキルチェックみたいなのがあるって言ってRubyを半日ぐらいやりましたね。
レッドバインのプラグイン作ってたからもうちょいやってるか。トータル3日ぐらいRubyやってる気がするぐらいですかね、なんかずっとPHPやってんだよな。
スピーカー 1
あとSwiftか、Swiftもちらっとやってた。
近所さんすごいPHPのイメージがあるから、どんなの触ってきたのかなとか、ちょっと気になったんですよね、読んでて。
スピーカー 2
ビジュアルベーシックフォーアプリケーションかな、もやりましたね。
スピーカー 1
なんか懐かしいな。
確かにな、VB.NET 6、確かそういうの触った気がするなとか、今すごいいろいろ思い出しました。
スピーカー 2
ぐらいかな、あとホットスーププロセッサーか。
それ知らない。
スピーカー 1
HSP知らないですか。
スピーカー 2
知らないです。
スピーカー 1
あれ小学生の時にやりましたよ。
今で言うビスケットみたいなやつ。
ビスケットがわからないかも。
スピーカー 2
でも本当に学習用言語みたいな、ビジュアルプログラミングとまでは言わないんですけど、
でもかなりGUIというかアイコンを動かすとかに強いんじゃなかったっけな。
スピーカー 1
ビスケットとかもそういうビジュアルプログラミング、小学生とかが勉強した時に使うっていう感じのやつです。
スピーカー 2
なるほどな。
スピーカー 1
今後どうなんですかね。AIが出てきて、別に言語なんでもいいじゃんみたいな。
例えばPHPを詳しくて、PHP実装してこれをラストに変換してって言ったら、数字がいいものは出てくるかどうかは別ですけど、それっぽく動くものは多分出てくるんだろうなとか思ったりしてて。
今後若者とかどうやっていろんな言語を習得するとか、どういう戦略でプログラミング言語を学んでいくんだろうなっていうのはちょっと読みながら考えてましたね。
スピーカー 2
なんかそう、AIっていうのがもはやLLMベースで色々便利にしてくれるエージェントとニアリーコールになっちゃってると思うんですけど、
AIが本格的に日本のウェブ系のプログラマーでも日常的に使うようになったタイミングで、僕はマネジメントとかも全然やらなくなってたんで、あ、良かった、全く考えなくていいって思ってました。
なるほど 頭が痛い、未経験新卒がジュニアとして入ってきた場合、いやでもいや、会社まで来てくれればもう会社の戦略として使えるようにロム寄りの教育ができるんで、
そうするとね、AIガンガン使いましょうよとか、ID前提でいいし、簡単な構築は俺らが作ったDockerとかMake使ってバンってやればOKだし、
サイクルもしかしたらクラウドベースのエディターを実行監督開発監督かもしれないけど、っていうのがあるから、そこら辺は死なないようにいくらでも背中押せる、生前立てできるから、まあいいのかってなるけど、そうじゃない教育ってなんだ
スピーカー 1
まあ例えばプログラミングってやつ始めてみたいんですよねってなった時に、昔は多分みんなこうPythonがいいよねとか、なんかこうあれがいいこれがいいって話をしてたけど、なんか変わってくるのかなと思いながら
スピーカー 2
なんか僕はあれですね、かなり歪んだ生き方をしてるんで、プログラミング始めたいじゃなくて始めてないから始まらないんじゃないのってなっちゃうんですけど、プログラミング始めたいなら始めたいプログラミング言語やればいいになりにいますよね
まあそうですよね 一番原理主義的なことを言うと、始めやすい言語ってなってくると周りにそれを知ってる人がいる言語になるので、例えば僕がそれ聞かれたらPHPとかGoPythonぐらいだったらなんとなく初学者レベルぐらいだったら一応サポートできるよみたいな話するし
こういうことやれるようになりたいなーって言ってたらやっぱりデータフロープログラミング言語はいいよねーかもしれないし、モバイル作りたいだったらもうそれはiOSアンドロイドで動くようなもの一択になるじゃんとか、一択じゃないんですけど2つプラットフォームいってるからになると思うし
難しいですね 独学で始めたいでも何の言語を使えばいいのかわからないどうすればいいですかをAIに聞くんだろうなまず
スピーカー 1
そうですね、自分だったらAIに聞いてごらんって言うんだろうなーって今会話しながら思ってて、多分スタートは今までともしかしたら変わらなくて選択肢にAIってものが聞く相手が一個増えるっていうのが多分あるのか
で、とりあえず一つものを作るぐらいはやってきて、だんだんだんだん身についてきたけど、なんか違ったことも学びたいんだよねーってなった時になんか自分は昔、じゃなくGoが流行ってるからGoやってみようとか
あと何ですかね、iOSをやるからSwiftをちょっと勉強してみよう、Android触るからKotlin触ってみようみたいな感じはあったけど、なんか今勉強のためにもう一個複数言語を学ぶといいって言われたんでなんか勉強しようと思うんです
でも作りたいものは特にないですって言われた時にどうなるんだろうなーみたいな、いや学ぶ必要ないんじゃねっていう話ともう多分一個選択肢にもあるし
AIとプログラミングの未来
スピーカー 2
どこまで学ぶかっていう進路がだいぶ変わりますよね
スピーカー 1
そうですね、そうですね
スピーカー 2
なんかちらっと動くもの、基本的な文法レベルまではやりましょうが一番曖昧になってる気がする、それも本当に一番手に馴染んでる言語で書かれたソースコードを加わせて
これちょっと○○言語に変換してっていうとできちゃうし、読んでその対応を翻訳される前と原文の対応を自分で取りながらなるほどこうなるのかって納得するまでは行くと思うので
そこのハードルがクソ下がった分そこの次の一歩とのジャップがめっちゃクソでかくなってないみたいな気がする
今までウェブで読んだりとかGitHubで探してきたコードを改編しながら動かすっていう手はあったんですけど
ちょっと勉強しようかなってなるとチュートリアルを○○一個やるか入門書を一冊買って読むかぐらいはしたじゃないですか
スピーカー 1
やりましたやりました
スピーカー 2
そこをサボる気がしますよね今
スピーカー 1
めっちゃわかる
スピーカー 2
学ぶとは何かみたいな話になってくるんですよ
スピーカー 1
例えば今からGOやりましょうって言った時に昔だったらじゃあツアーオブGOってやつをまずやるといいよって言われてたけど
スピーカー 2
あとねレズやるんだったらとりあえずショッピングカート作ろうぜって
スピーカー 1
そうそうそうだけど今だったらもうもしかしたらいいかもなって思っちゃうんだよな
だいたいこんな感じでしょって思っちゃうしそれは多分経験をちょっと5年前10年前に比べたらもちろん経験値を積んだからっていうのも一個はあるんでしょうけど
なかなか若者にじゃあPHPばっかじゃなくて他の言語をやっておくといいことがあるぞって言うけど
言った時にじゃあ何やったらいいですかねって聞かれると結構難しいなって思っちゃったな
スピーカー 2
だから翻訳が不可能なそれこそ根本的なパラダイムレベルで違う言語とか
元になる要求とかコードがあってそれ変換してもらった結果確かに動いてるんだけど
全くどういう概念で動いているのかわからんのだよなっていうぐらいの隔離断絶がある世界に
入門した方が良いというかそのぐらいじゃないと特にねある程度2,3年だろうと10年だろうと経験積んだ人はサボるのがうまくなってると思うので
なんかもう一切サボりようがないハッタリが効かないぞっていうぐらい断絶した世界に飛び込む気がする
スピーカー 1
じゃあやっぱみんなプロログを書こうみたいなでも本当それぐらい全然違うじゃんみたいな
でもそれを学んで何のためになるんですかとかって聞かれ始めたらもううーんってなっちゃうんですよなって気持ちと
そうなんだよね
でもそれ何のためになるかわかんないから勉強するんだよっていうこともあるんだよなみたいな気持ちになりながら難しいなっていう
スピーカー 2
そうだからけいえんさんがさっき言ってたとりあえず流行ってるっぽいものを一個触ってみるっていうのは割と戦略としてありですよね
スピーカー 1
けいえん そうですね今だったら多分ラストとかになるのかもしれないけど
自分が普段使ってる言語と比べてどう違うのかどう一緒なのかみたいなことを通して
プログラミングってこういうもんなんだとかある種共通点みたいなところを見つけ出していって抽象化していくと
もしかしたらこういうことってPHPもラストもあってってことはもしかして別の言語もこうなってるんじゃねみたいな
プログラミング言語の多様性
スピーカー 1
だんだんだん推論ができるようになっていくとかいうと多分サボるのが上手になっていくんだろうなって気がしますね
スピーカー 2
まあ大事な能力ですからねその推論してサボる そうしないと脳みそなんてすぐやっぱ不足になっちゃう
スピーカー 1
初見のもの1から10まで知らないと使えませんわ辛いからね
スピーカー 2
でもそうですね直近でもないかちょっと前の話になっちゃいますけど
PHP界隈で著名なワイタケさんいるじゃないですか竹澤さんがPHPカンファレンスでワークショップやってたりとかその前のペチコーキのあれ発表してたりしてた
アクターモデルっていう考え方というかやつの話をしててあれはすごい面白かったんですよ自分としてはめっちゃ斬新な話だったし
こういうユースケースあるこういう時に確かに今まで苦労してた部分がすごい解消されそうだなっていうイメージも湧きやすかったんで
なんかああいう話は聞くと面白いすごい刺激になるなーっていう気はしましたね
違うパラダイム知るっていうのはやっぱり楽しいなーみたいな
スピーカー 1
そうっすよねだからもしかしたらなんか最近のプログラミング言語って結構マルチパラダイムなものも多いし
なんかこの本が書かれた当時とか達人プログラマーの書かれた当時とかでいけばプログラミング言語を含むって話だったけど
スピーカー 2
違うパラダイムを学びましょうがある種本質の方かもしれないなっていうのを今こういろいろ喋りながら思ってて
スピーカー 1
そうすると多分その言語にこだわる必要はなくてその違うパラダイムの考え方っていうものを手に馴染んだ言語でやってみるとか
スピーカー 2
いうことが大事なのかなーって思いましたね
だから同じ言語で書かれてるけど違うパラダイムを採用するグレームワークとかでも同じぐらいの効力を発揮するかもしれないし
なんかでもそれでもあれですよね言語違うもの違う言語そのものっていうのを学習することの意義もあるよなって思うのは何だろうな
いい例えがなんか例えばPHP使ってる人がザバのコードを見るとあれクラスの中にクラスがあるぞってすごい混乱を来すわけじゃないですか
スピーカー 2
ああいう話とかあとライブラリとかコミュニティとかエコシステムこういうところ強いんだなーみたいな何だろう
例えばガイアからRubyを見てるとすごい開発支援系のツールとかテスティングツールとかめっちゃ生えててすごそうだなーって
やっぱり憧れてたわけじゃないですか2010年半ばを生きてた我々としては
スピーカー 1
めっちゃわかる
アプリケーションはもろPHPで書いてるのになんかデプロイはキャピストラのみたいなやったじゃないですか
レイクタスクとかねありましたね懐かしいな
スピーカー 2
そういうのとかあるってなるとオブジェクト思考だし動的じゃんっていう話はあるしエレルだよねって話はあるんですけど
文化の違いっていうのもやっぱり言語によって変わってくるのでなんかそういうところを学ぶといいですよね多分
それは本当に輸入するものが多いと思うので
スピーカー 1
本当そう思う
スピーカー 2
そうだよなミューテーションテストの筆マークPHPにも欲しくねとかなってくるわけじゃないですか
エコシステムの重要性
スピーカー 1
わかるわかるめっちゃわかる
そうなんですよねやっぱりそういうところも確かにエコシステム含め学ぶっていうのはやっぱりありますね
自分もさっき他の言語でって言った時に例えばエクセプションがある言語ない言語とかそういうレベルでもやっぱ違いもあるよなとか
スピーカー 2
継承のアルナスとかねもう名前の短い言語とかでありませんね
スピーカー 1
そうそうなのでそういうところもあるしやっぱりエコシステム含めという意味ではやっぱり違う言語を触ってみる
PHPでもワードプレスと多分ウェブ系と言われる人たちが作ってるサービスで使ってるPHPは全然違う
ララブリで作ってるアプリケーションは全然違うだろうしとかそういう文化圏の違いみたいなのもあったりしますけど
スピーカー 2
そうですね
スピーカー 1
となるといろんなパラダイムいろんな言語いろんなエコシステム合わせていっぱいいろいろ触ってみるしかないんだよな
役に立つかどうかは後で考えようみたいな気持ちになりながら
スピーカー 2
そうですよね仕事を我々の目線でいう役に立つか
たぶん仕事に使えるかとか趣味開発ではかどるかって話だと思うんですけど
なんかヒートいくレベルさっき言ったねちょっと初めてもう一個ぐらい触ってみたいとかっていうレベルの人にとって役に立つって
なんか定義される価値が違うじゃないですか
プログラミングの基礎能力を上げることの比重が高かったりする
一般登用過程にいるわけじゃないですかまだ
応用とかね実践とか職業訓練的な役に立つっていうのは我々も求めてるけど
なんかそこよりもっと手前の一般登用としてそもそもプログラミングってこういうことやるんだなぁみたいなところの
深掘ったり広げたり的な観点での役に立つっていう軸が入ってくると余計にめんどくさいですね
スピーカー 1
そうですねいやもう言語とかじゃなくてデータ構造とアルゴリズムを学ぶんやとかね
データベースっていうのもあるから大事だからねとか言ってこうじゃあこのインデックスってものを考え方とか
スピーカー 2
いやそうあれなんですよねプログラミング言語だけじゃなくてデータベースも複数やった方がいいんだろうなっていう気はしますよね
リレーショナルデータベースとグラフデータベースと文語ですけどドキュメントデータベースぐらいは触ったことあって全然
ファイアベースもあるか全然違うじゃないですか全く通用しない
スピーカー 1
わかる
スピーカー 2
というか文語はマイスウェルっぽく使おうとして変になるパターンがよかった気もするし
スピーカー 1
まあ一昔前で言えば多分こうノーエスケールノットオンリーエスケールっていうものの括りでいろんなものは出てきたし
スピーカー 2
レディスモンもそうか
スピーカー 1
そうです確かに最近で言うとニューエスケールみたいな言い方してもっとスケーラブルなデータベースみたいなものとかコックローチとかタイデイビーとか
スパナーとかどんどんどんどんデータ集計用に向いてますとか多分いろいろ出てきてるから
ウェブシステム作るだけだったらマイスケールだけあれば一旦作ればするけど
じゃあスケールアウトしていくとどうするんだっけとかデータベースでも配列を扱いたいってなった時にはポスグレにはそういう考え方があってねとか
いうのが出てきたりするから複数やっぱ学んどくと取れる手が増えていくとか
隣ではどういうことやっててこっちではそれできないから代わりにどうするんだっけとかそういうようなこととかをね
学ぶ必要はあるんですよね
実践的なスキルの向上
スピーカー 2
ヒントにはなりますよね
データベースマジであれだなプログラミング言語とかフレームワーク以上に必要に迫られないと触りづらいかもな
スピーカー 1
しかもでかいデータを扱うのが難しいじゃないですかやっぱり
スピーカー 2
そうなんすよ
映画のあのフリー映画関連のフリーで配られてる情報全部持ってくるかみたいなただ毎回用意されたデータセットを使ったとしてそれをイサートするだけなので
スピーカー 1
ウェーバーアプリケーションでいうととりあえずクラット作ってみましたみたいなのと変わらんのよなと思って
そういやもうこれねターミナルからコマンドライン一発で全部生成されるやつじゃんけみたいな感じだと
スピーカー 2
それこそAIにやらせてもらう
スピーカー 1
そうなんだよな
スピーカー 2
難しい
スピーカー 1
確かにこの本データベース系の話があんまりなかったかもしれないですね今喋りながら
スピーカー 2
DBAが知るべき27のことみたいなのありませんでしたっけ
スピーカー 1
なるほどそっちを読んでくれっていう感じになるんだな
いやちょっとプログラミング言語だけで結構喋っちゃったけど
スピーカー 2
確かになんか僕はあれでしたさっき決めたんですけど今年はベーシックをやります
スピーカー 1
ベーシック
突然
スピーカー 2
興味が湧いたんで
スピーカー 1
ちょっとじゃあ年末あたりにベーシックやってどうでしたかって話をするか
スピーカー 2
してください
いやジャンプっていうのがあってねって
スピーカー 1
自分内緒かなまあでも今年こそFシャープをもうちょい上げたいなっていう気持ちはあるんだよな
スピーカー 2
一時エリクサーアーランエリクサーやろうかなって思ってましたけど
スピーカー 1
すごいなんかこうこの辺の人たちが流行らせようとしてたというか触ってたって言ってるのをなんか2人ぐらい名前思い浮かんだんですけど
スピーカー 2
じゃあ次いきますか
25:29

コメント

スクロール