1. Yokohama North AM
  2. ep 24 @tomzohとプログラマは..
2020-10-15 1:01:47

ep 24 @tomzohとプログラマはどこまで理解するべきか、コンピューターが好きな話、Ghost of Tsushimaについて

00:06
こんばんは、Yokohama North AM第24回です。
Yokohama North AMは、中年エンジニアがWebテック系のキーワードをネタにして雑談をするポッドキャストです。
ホスト役は、自称フルサイクルエンジニアのハンハン1978です。
本日の相手は、長谷川さんです。
はい、長谷川です。よろしくお願いします。
よろしくお願いします。
実は昨日、fukuoka.phpでお会いしたばかりなんですが、
なんと、連日Web会議をよろしくお願いします。
これね、見てる人にはわかんないと思うんですけど、長谷川さんはマイクを手持ちしていてですね、やっぱ違うなと思って。
これが一番安定するんですよね。
はい、すごくわかります。僕も前はそういうことを試してた時がありましたね。
どうしてもマイクと口の距離がすごく大事なんで。
ゲストのご紹介ですが、長谷川さん。
Twitterではトムゾーさんですね。
所属がデジタルサーカスさんで、ペチパーですね。
孫うことなきペチパーで、
カンファレンスの主催をたくさんやっていらっしゃって、
iOS-DCとかペチパー会議の主催をされています。
iOS-DCお疲れ様でしたと。
ありがとうございます。大変でした。
大変そうでした。
私との関係はカンファレンスとかPHP勉強会とかで、
少しずつ知り合っていって、
最近は普通に話せるようになりましたという感じの間です。
本日よろしくお願いします。
よろしくお願いします。
せっかく長谷川さんという、ちゃんとした中年エンジニアをお招きしたので。
そうですよ。中年エンジニアって言ってるのに若い人ばっかりいて、
これも真の中年の力を見せてやらなければいけないなと思って、
今日来ましたよ。
トークキーワードに真の中年が来ましたって書いてあった。
ちょっと笑っちゃいましたが。
今日の話なんですけど、
昨日福岡.PHPでララベルライブワイヤーという、
JavaScriptを書かなくてもJavaScriptが闇のように生成される
恐ろしいWebフレームワークがあって、
その話をした時に、
プログラマーはどこまで理解してるべきかみたいな。
リアクトとかもちゃんと理解してなきゃみたいな人もいれば、
別にライブワイヤーでできればいいじゃないっていう人もいると思うので、
プログラマーは一体どこまで理解してるべきなのかみたいな話を一番。
この話終わった後に、
お互いコンピューターがすごく好きだっていう話だったので、
2番目はコンピューターが好きな話をしますと。
もし仮に万が一時間が余ったら、
2人ともハマったゴーストオブツシマの話がされるかもしれない。
いけるかね、そこまでね。
いけるかな、なんか今日はいけない気がするな。
03:00
そんな予感がしました。
開始前のしゃべりでもうだいぶ盛り上がってたので、
もうダメだなと思って。
そうね、ゴーストオブツシマの話が聞きたい方は今のうちに
Twitterとかに絶対聞きたいって書いておいてもらえれば。
最後二言見事だけ言うんで。
そんなもんになりそうな気がする。
そうですね、プログラマーはどこまで理解すべきかっていうところですけど、
長谷川さんはプログラマーになった当初って何が仕事をされてた感じなんですかね。
それはなんだ、職業として?
職業として。
まさに学生の時に今の会社にアルバイトで行って、
VBAでアクセスのプログラムとか作ってましたね。
VBAだったんですね。
そうそう、アクセスVBAですよ、懐かしの。
アクセスVBA、なんか響きが同年代だな。
VBとかはよく知ってたんだけども、
知ってたからできます?って聞かれて、できます?って答えたんだけど、
リレーショナルデータベースを全く知らなくてですね、
アクセス開いてみて、何だこれはって冷や汗かきながら作ったのを今思い出しましたよ。
なるほど、僕は職業エンジニアとして始めた時もうすでにWebだったんですよね。
26くらいかな、大学院卒業してから入ってるんで、
Javaでしたね、いきなりJavaストラッツの世界線でした。
リレーショナルデータベースも最初からっていう感じで。
その頃だと、LLだとPerlが元気な頃?
まだPerlが元気でしたね、元気いっぱい。
2chとかもPerlで動いてて。
そういう感じですよね。
PerlのCGIとかもまだまだ元気で動いてた頃ですね。
このちょっと後ぐらいにRailsとかRuby on Railsとか、
あとPHPもこの後、ちょうど僕就職してから3年後ぐらいが、
3、4年後かな、バージョンが5.いくつだったかな。
に上がってMohaveとかあの辺のフレームワークが出てきて、
WebはもうPHPでみたいな。
Webオープン系はPHPでみたいな。
そういう世界線でしたね、入った頃。
そうですね、僕あれなんですよね。
昔子供の頃は結構Basicとかでプログラムをガンガン書いてたんですけど、
プラットフォームがWindowsになったところで、
1回振り落とされたんですよ。
やっぱその覚えることが多かったり。
その手元でHello Worldを書いたC言語と、
ゲームの世界がどう繋がるのかが理解できなかったりとかで、
06:00
1回振り落とされて、
VBとかでごまかしながら、あるときWebに会って、
そこで本格的にプログラマーとして復活したというか、
しばらく書いてなくて、プログラマーとして復活して、
Webはやっぱ良かったですね。
分かりやすくて、人にも見てもらいやすくて。
そうですよね。
要はHTMLにブラウザからアクセスできるっていう体験がすごく良くて、
僕は何だったかな。
初めて自分のホームページ作ったのが20歳ぐらいで、
ソフトマップとかで10万円ぐらいで、
何だっけ、K6だっけ。
K6懐かしいですね。
AMDの。
AMD K6ですね。
で、パソコン買ってFFTP入れて、
index.htmlっていうファイルをアップロードしてくださいとかっていう、
全然あんまり親切じゃない説明を見ながらこうやって、
やった出るって。
テーブルレイアウトだね。
そうそう。テーブルレイアウトとかマーキーとかね。
できてないページに工事中って入れるの。
AMDアンドアフコンストラクションつって。
そうっすよね。
僕、そのウェブで当初パールで書いてたんですけど、
何にも知らないから、
クッキーとか、
クッキーはどうだったかな。
クッキーは何かライブラリ使ってたのかな。
今すごい覚えてるのが、
ファイルをウェブからアップロードするときの、
そのマルチパートの受け取り方が分からなくて、
自力でマルチパートをパースするプログラムを書いてたりして、
そこでPHPに出会ったら、
PHP何これパースしないでもファイルできてんの?
すげえって思った思いがあって。
これは単に僕の知識が足りなくて、
パールでもちゃんとCGIPMなり何なり使えば、
そういうサポートあるんですけど、
それ知らなかったので、
いや、PHPすげえわって思って、
そっからペチパンなんですよね。
でもその辺も結局マルチパートで送られてきたものが、
実際はどういうテキストなのかっていうのを知ってる知ってない。
知ってなきゃいけないです。
今僕は長谷川さんが言った言葉を、
僕自身もやってるので、
バウンダリーで抽出して、
ファイルはここにワイナリーで出ててとかっていうのを、
理解できる必要がありますかっていうのと、
いやそんなのしないでいいよと。
まず考えてララベルとかリアクト使って、
どんどん分かりやすいインタラクティブな
ウェブアプリ作ればいいよっていう話。
そうなんだよね。
僕最近この話をよくしてるんですけど、
それは単純にですね、
結構僕面接とかを最近やっていて、
09:02
その面接で質問をいくつかして、
これ答えはない質問なんですけど、
ポストとゲットの違いを教えてくださいとか、
あとはクッキーとセッションについて
説明してくださいとかいう話をするんですけれども、
結構バシッと僕が気持ちいいっていう答えを
得られることがあまりなくて、
っていう話をツイッターに書いたら、
結構な人から反響が来てしまって、
そっかこれは僕は当たり前だと思ってたけど、
今のウェブの水準からすると、
それっていうのは遠いところにある、
知らない技術なんだなってちょっと思ったので、
あっちこっちでこういう話をしてるんですよね。
今でも僕ポストとゲットの違いとか、
クッキーがどうやって動いてるかとか、
それをベースにセッションがどういうふうに
PHPで維持されてるかっていう話は、
ウェブエンジニアとしては知ってないといけないと、
知ってたほうがいいと思ってるんですけど、
でもさっきのバウンダリの仕組みとかは、
明らかに知らなくてもいい情報で、
結局そのウェブの技術って、
もちろんそのTCPがありの、
その上に何があって何があってって、
HTTPがあってってなっていて、
どっから知らなきゃいけないのかなとかね、
いうのは最近ちょっと永遠の課題なところに、
昨日の福岡PHPで見たら、
このライブワイヤーってやつは、
なんかコントローラー側にプロパティを定義するんですよね。
そうするとなぜか、
テンプレート側のJavaScriptからアクセスできる、
変数が生まれるのかなとかなっていて、
もうなんかそのバックエンド側で動いているプログラムと、
フロントエンド側で生成されたJavaScriptが、
なんかよく分からない融合してるんですよね。
そのJavaScriptが生成されるんだけど、
それもテンプレートに何か書いておくと、
どっからかこう生成されてっていう仕組みになっていて、
これはすごいなと。
これで僕AJAX作れますって言われて、
動いてみてすごいって思って、
どうやって書いたのって聞いたら、
テンプレートにSyncって書きましたって言われたら、
なるほどって思い、
っていうのがね。
それに近い経験を前にもしていて、
結構すごいものを作った方とお話をすることがあって、
それがファイルをS3にアップロードし、
そのS3にアップロードされたファイルを
詳細画面で表示するってやつで、
見た瞬間に結構すごいぞこれはと。
つまりファイルのアップロードをしていかなければいけない。
S3にアップすることができなければいけない。
それで表示にはそのS3のURLで表示しなければいけない
ということなんですけども、
どうやって作ったんですかって聞いたら、
よく分かりませんって言われて、
よく分からないってどういうことかなって思ったら、
なんとGEMが全部隠蔽している。
12:01
なるほどね。
っていうのがあって、
今やらなければいけないのは、
画像型のフィールドを作るだったっけ、
フィールドすら作らなくていいのかな。
なんかをすると保存ができるようになってしまうというのがあって、
そっかって思って、
でも作れるんだよねって思って、
じゃあ僕はどこまで知ってることを求めて、
話をしてるんだろうなってちょっと思ってですね、
それが最近ですね、
プログラマーどこまで理解するべきかっていうのが、
ちょっと気になってるんですよね。
これはでもな、
昨日の福岡.phpでもうずらさんがおっしゃってたじゃないですか、
これを新入社員に与えたくないって。
それはものすごく同意もするけど、
すごいものをこれで何も詳細を知らずに作れるっていうことは、
それはそれですごい価値だと思う。
そうなんですよね。
なんかどっちとも言えないなっていうのはちょっと。
だってね、
僕たちそれこそバウンダリーとか気にしてないし、
自分のIPパケットがどれぐらい偉いなってるかも気にしてないんで、
それを気にしなきゃダメだよって、
誰かに言われたら、
そうすか、すいませんって。
そうですね。
そうなるな。
でもやっぱりこういう推移はある。
絶対そのバウンダリーは僕は絶対いらないと思うし、
でもやっぱクッキーはないとまずい。
理解してないとまずい。
そうですね。
クッキーとセッションはインフラとか、
アーキテクチャにも関わってきちゃうんで、
やっぱり知ってないと厳しいだろうなっていうのはありますよね。
ね。
そうなんだよな。
特に脆弱性周りとか、
徳丸本みたいなのを読んでもらうと一番いいかもしれないけど、
やっぱり脆弱性とかの攻撃ってそういうとこついてくるじゃないですか。
クッキーの仕組みを変に使ってると。
そうですね。
本来なら引き回すべきじゃない情報をセッションで
引き回してったりしたところから
疲れて情報抜かれているから、
そうなるとやっぱり知っててほしいんですよね。
そうですよね。
でもそれってウェブフレームワークなり何なりが未熟なんですよね。
本来的には。
そうですね。
今どうか分からないけど、
ちょっと前のVB、
これは何だ?VB.NETかな?
.NETになる前のVBかな?
VBA?
ウェブ作るやつだと画面を作るってやって、
ボタンをドラッグ&ドロップでギュッて置くと
ウェブの画面ができて、
裏で恐ろしいJavaScriptが生成されて、
15:03
プログラマーからはボタンダブルクリックすると
ボタン押されたときに動く何かをかけて、
プログラマーはクッキーとかセッションとかポストとかゲットとか
全く気にせずにウェブアプリケーションを作れるっていう夢のような環境が
かつてあったんですけども、
あれがちゃんとできていたら、
僕たちはポストもゲットもなく
作れていたはずなんですよね。
いや、でも何ですかね。
全てが非常に単純なインターフェースとかで
誰もこだわりがなく使ってくれるんだったらそれで済むんだろうけど、
結局クライアントから要望されることだったりとか、
自分たちが作りたいものが結局複雑になってしまったりとか
っていうパターンもあるから、
全てに対応できるようにするってなってくると
やっぱ難しいなーって。
結局フレームワークはどのくらいの詳細度に抑えて、
プログラマーがプログラミングするのかっていうところも含めてきっと
フレームワークのデザインになっていて、
そういう意味で言うと、
ライフワイヤーは僕から見ると完全にやりすぎだと思っちゃうんだけど、
でも面白いは面白いというか、ロマンはすごい感じるから。
いやーでもあれですよ、あれがロマンなんで、
あれで面白いのって下を知ってるから面白いだけで、
下を知らなかったらこれで作れるんだ、
以上のそれ以下でもないっていうか、
とこではあるよね。
そうですね。
だったら今のウェブのララベルの環境に
このライフワイヤーが入ると、
理解が追いつかないだろうなっていう感じはするよね。
何がどうなってどうなってるかっていうのが理解できない?
初めて見ると。
そうなんですよね。
石段みたいに下から積んでってるからわかりやすいっていうのは、
このライフワイヤーの話をしてた時に、
いわゆるそれなりに実力のあるエンジニアたちは、
これ通信何やってんの?みたいな当たり前の質問が来るけど、
ライフワイヤーのみしかいじったことがない人だったら、
一体何が裏で行われるのかっていうところに対して
想像がそもそもできないんですよ。
そうだよね。
だから結局どうなってんだろうなみたいな。
トラブル修理はできないよね。
思いますね。
そうだよな。
そうなってくるとやっぱり知ってて欲しいしっていうところ、
あと知ってると楽しいし、
あとは不具合対応とか脆弱性対応とか、
なんかあった時に活躍できるっていうのはやっぱり
小さいとこ知ってないとダメなんだよなって思っちゃう。
これって僕たち、あと20年経っても同じことやってるんすかね?
いやだから誰だったかな、水地くんかなんかが言ってたのかな。
18:02
結局今の現代では完全にユーザーがポチポチと画面で
簡単にウェブサイトを作って、
自分たちの完全に好きなようにするっていうのは
今の段階では複雑すぎて無理だよねっていう話があるけど、
それが20年後に解消されてたとして、
じゃあ下知らなくてもいいんかっていうと、
それを作る人は結局知らなきゃできないわけだから、
分かんないですね。
そうね、フレームワークみたいなのを作る人は下の方知ってる必要があるだろうけど、
それ以外の人は知らなくてもいい環境になるのかならないのかっていうか。
いやでも、少なくとも僕は無理なんですよ。
分かんないとムカつくんで、全部調べちゃうんですよ。
それあれじゃない、ジェット機自体になってもさ、
俺は飛行機はプロペラじゃなきゃダメなんだってさ。
いや別にジェット機は否定しないし、ライブワイヤーも否定しないんだけど、
ライブワイヤーが果たして壊れたときに、
それをデバッグできないのは僕は嫌なんですよ。
それはプロじゃないって思ってる。
それは性格の問題かもしれないけど、
プログラマーとして必要かって言われるとね。
今僕たちはLinuxでドライバーがこけたときに、
それ追えるけど追わないよね。
そうそうそう、追わない追わない。
それよりもバグフィックスもあったりとか。
そうするとウェブのデベロップも、
そこまで上がっちゃう可能性もあるんじゃないですかね。
クライアントとの距離っていう感じはちょっとする。
クライアントっていうかウェブを作る場所からの距離が
LinuxとかってOSレベルまでなってくると
隠ぺいできるのかなっていう気がするけど、
どうなるんだろうな。
分かんないです。
これに関しては全然分かんない、本当に。
ただ、この20年は変わってないね。
変わってない。
まだSQL書いてますしね、僕ら。
書きます?SQL。
これもまたその話になっちゃうんですけど、
ララベルとかだとエロクエントっていうORカッパーがあって、
クエリ書かなくてもいいですよと。
最悪CSV出力なんかもクエリビルダー使って書きますよと。
そうするとやっぱり抽象化された形で書くんですけど、
結局パフォーマンスの問題とかがあるから、
SQL自体の知識がないと、
危ないんだよな。
でもこれも結構同じ話かもしれないですね。
今SQLそのものの知識がなくても、
データベースからセレクトできてしまうと。
セキュリティと比べると、
21:02
プレイスフォルダー使ってうんうんって話はあるけど、
だいぶ安全にSQLを叩ける環境が整備されてるんじゃないですかね。
確かに。それはでもそうですね。
そうあるべきだけど、
ウェブ業界はそうなってないと。
確かに。
そうですね。
割と最近僕生でPDOを書いて、
文字列結合してるの見たんで、
まだあるかと思って。
そうなんだよな。
データベースのプレイスフォルダー周りは、
割とこう何て言うんだろうな、
一撃必殺系だから、みんな真面目に考えて今のような、
安全にかける環境が用意されたのかもしれないけど。
だってララベルとかすごいですよね。
インプットタグとかも隠蔽しちゃえば、
CSRFトークンとかも自動でやってくれるから。
そうですね。
そういうとこも含めてどんどん隠蔽されていくので、
逆にでも隠蔽されちゃうと、
今度はそれを知らない人が、
じゃあどうしますかって。
すげーハマると思うんですよね。
でも僕ちょっとララベルあんま知らないですけど、
ケークでも基本的には同じ作りになっていて、
ちゃんとヘルパーを使ってフォームを書けば、
その中に勝手にCSRFトークンとか、
もしくはヒドゥンタグの端化されたやつが埋め込まれていて、
そこ改ざんして送ると、
ブラックホールに吸い込まれるっていう仕組みになっており、
ちょっと変なことやると、
変な機能実装、変わった機能実装すると、
そこでハマって吸い込まれるんだけれども、
それさえなければCSRFのことは気にしなくても、
プログラムを書けるようにすればなってるなと。
っていう意味では、
Webも20年変わってないって言ったけど、
そんなことはなくて、進歩はしてるかもね。
徐々に楽に安全に、
割とそこまで理解しなくても安全に書けるようになってきてて、
昨日まさしく僕コードレビューの話しましたけど、
コードレビューではそこを指摘するんですよ、大体は。
要は、こうなってるけど、
こういうパターンでは、こういう理由で危なくなるので気をつけてね、みたいな。
おじさんの、おばあちゃんの知恵袋じゃないけど。
それは、若者ウィースってマージボタン押していいんじゃないの。
そう、こういうクエリとかね、リレーションとか簡単だけど、
ここNプラス1になってるから、
データ量が増えると大変になるんだよって書いてあげて。
データが増える頃には計算機の能力が上がっていて、
パワーで殴り殺せるみたいなことになってるかもしれませんね。
24:01
いや、どうだろうな。ペイロードが耐えられないんじゃないかな。
やっぱヤバいですね、この話は。いくらでもいけるな。
無限にいけるね。これって、あれなんだよね、今時のさ、
バーチャル化されているハードウェアの話も同じ話があるんですよね。
いや、もう全くその通りですね。
やっぱり理解できなきゃいけないところは、どんどんレイヤーが上がっていってる感じがしますよね。
昔は線を繋いでIRQの設定をして何とかってやってたけど、
今はクリエイトバーチャルマシンボタンをプッと押すとできるけど、
その代わりに皆さん今コンテナの概念とか、
理解しなきゃいけない?
この辺は割とハードウェアに関してはすごくいい進歩だなとは思ってるんですよね。
入社したて1、2年の頃って僕はギリギリハードウェア納品してたので、
要はサーバーを発注して、それが会社に届いて、
サーバールームに置いて、レイヤーとかやって、インストール手順作って。
サーバールーム寒いんだよね。
寒いんですよね。そこで温かくしてね。
コンソール開いて、ステージング環境作ったら、
同じ手順でもう1台にインストールして。
その実機を精密機械の配送業者にお願いして、データセンターに送り届けて。
楽しいけどね。1回でいいね。
1回でいいですね。僕2回ぐらいだったけど、本当それぐらいでよかったと思って。
僕あれでしたよ。あの時はハードウェア向こうだったんだけど、
納品先が土木事業のお役所で、物品の納入だと、
屋内なんだけど、ヘルメット被って、緑の看板に何とか納品って書いて、
指を指して写真を撮られるっていう。
やったことありますよ。
人生経験としてはめちゃめちゃ面白いし、飲み会の席で話すネタにはなるけど、
まあ1回でいいですね。確かに。
本当だよ。行くの大変だしさ。
なんでね。楽になったよね。そういう意味でね。
めちゃくちゃ楽になりました。
要は抽象化されてソフトウェア的にインフラを扱えるようになることで、
やっぱトライアンドエラーを何度も何度もできるようになってるから、
これはもう本当に関係すべきことですね。
だからそんなハードウェアのこれ意外と重いんだよねとかいう話はもういらない知識になってるんで。
27:02
いらない知識になってますよね。
いる知識の。まるでおっさんの力というか仕事力の源としてさ、
昔の経験がいろいろあるけどさ、あの経験はマジでいらないね。
真面目にいらなくなってますね。
やっぱりね、昔のネットワークの下の方の知識とかはまだ使えるけど、
物理に関するものはもう本当にいらなくなりましたね。
いやもうハードウェアはいらなくなりましたね。
僕、昔はLANケーブル作ったりできたんですけどね。
であれですよ、最近のVMとかだとさ、
ストレージへのIOが見張られててさ、ある一定を超えるとさ、パフォーマンスが落ちたりするんですよね。
で、それは何でかって言ったら、決められたIOPSを使い果たしたからっていう答えが返ってくるんだけど、
おじさんの知ってるコンピューターにはそういうのなかったから、
そのIOのパフォーマンスが落ちるときって言うと、うーんと思って、
でもこれでもないし、これでもないし、何でだろうって分からなかったら、
答えはIOPSを使い果たしたって言われたときに、うわーと思うというか、
これが今のコンピューターなんだっていうか。
そうですね、なんかRDSとかでもそういうの発生しますからね、普通に。
なんで入出力量の劣化が起きたかみたいなところで、
ハードウェア的なっていうよりは、もうちょっと重症化されたレイヤーの中で起こってるように。
でもそうですね、DockerとかもCグループとかで管理されてるから、
ソフトウェア的にそのリミットが決まっていて、そこでキャップされちゃうみたいな。
逆に今はそれを知ってなきゃいけないんですよね。
そうそうそうそう。おっさんはそういうの知らないからびっくりしますよね。
そうですね、こういうのに我々ずっとついていかなきゃいけないみたいな。
そうですね。
そうなんだよな。
そういう話があって、理解できなきゃいけない。
これ今30分だから1個にまとめようとしてるんだけど。
理解できなきゃいけない範囲って、やっぱり歴史によってレイヤーが上がっていくんだよね、きっとね。
なんだけど、でも残されていくところはあって、クッキーがどこに保存されてるかとか、
セッションがどうやってステートレスなウェブで維持されてるかっていう話って、
まだやっぱり知らなきゃいけなくて、知らないとセッション、
セッションに関して言うと、知らないとデータベースパンクさせたり、
サーバーの台数2台にした瞬間に動かなくなったりするもんね。
出るとこあると思うんだけどな、まだ、たぶん。
なんでね、ちょっとそこに関してはソフトウェアの発展が足りてないのかなっていう気も、
ちょっと最近のフレームワーク知らないんだけど、っていう感じがしますね。
PHPなんかだとデフォルトでセッションはファイルに吐くから、
30:01
ぼっか的な雰囲気でEC22台立ち上げてALBにぶら下げると不幸が起きますよね。
そうだね。
で、ALBにはそのためにスティッキーセッションっていう機能がついてるけど、
セッションのことそもそも知らないと、なんだこのスティッキーってみたいな。
そうか、でもあれか、全く知らないでALBの下にぶら下げると、そこそこちゃんと動くのかもね、スティッキーで。
そうですね、スティッキーでやれば、でもファイルの共有ができないから、
でもスティッキーなんでしょ。
いや、どこまで、だって1台目のサーバーで保存したAさんはいいかもしれないけど、
2台目のサーバー見てる人はデータベースは一緒かもしれないけど、ファイルが多分ないです。
でもあれでしょ、本当にスティッキーなんだったら、各人によって、みんなにとってはシングルサーバーのシステムになるわけでしょ。
本当にスティッキーになる。
みんなにとっては本当にスティッキーになる。
ならセッションは繋がるよね。
セッションは繋がりますね。ロビン状態はずっと維持される。
いやー、なんか無理やりそれで昔R-Syncとかしてる会社の見たことあるから、
なんか2020年にもなってそういうことやってるとこまだあるんだろうなって。
最近あれなんですよ、デジタルサーカス、PHPで書かれたDrupalっていうフレームワーク使ってるんですけど、
Drupalは標準でセッションがDBなんですよ。
その世界線がいいですね。
なんで、何にも考えないで導入するとセッション繋がるんですよ。
そういうことじゃないかなって思うんですけど。
僕もそっちがいいと思う。だからRailsなんか昔セッションがクッキーだったから、
あれはちょっと良くないなと思って。すぐパンクしちゃうからクッキーが。
セッションがクッキーだったの?
そうそう、暗号化した情報をクッキーに詰めるんですよね。
暗号化されててもあんまり渡したくないけどね。
そう、あんまり渡したくないし、すぐに情報がいっぱいになって、ステータスの40いくつかな。
ペイロードがでかすぎて。こういうのデフォルトは良くないぞと思って。
でもやりたいことは分かるよね。
そう、やりたいことは分かります。
ちゃんとできればやっぱ最高だもんね。
そうですね。そうすると分散環境であっても、それぞれのセッションがそれぞれのクッキーに入っているので、
ログイン状態がキープされるし、問題ない。
いつ消すか問題もないしね。
そう、いつ消すか問題も出てこなくなるし。
最高っすよね。クッキーのライフタイムとセッションのライフタイムが合わなくて、
クッキーはあるけどセッションはないみたいなことでセッション切れしたりするもんね。
はい。ごめんなさい。あと一個だけ。
33:00
ララベルで昔それ試したことがあって、クッキーにして。
ずっと割とまともに動いてて、これいけるんじゃないかって思ったんだけど、
バリデーションエラーが出た瞬間にセッションにエラーバック詰めて、データがパンクしておりました。
これはいかんと思って。
あれなのかな。今時だったらブラウザのローカルストレージに触れるからどうにでもなったりするのかね。
でもペイロードに乗る量が決まってるから、そんなにいかないのかなやっぱりね。
あとブラウザ変えられちゃった。それはどっちにしろダメか。
どっちにしろダメ。
とにかくそんな感じで、プログラマーはどこまで理解すべきかっていうと、
ずっとやってきた人には大体わかると。
レビューでおじさんに指摘されるときっとわかるかもしれない。
でもあれですよね、イニシャルの状態でどこまで知っててほしいか。
つまりジュニアってどこまで知っててほしいか。
シニア的な時にどこまで知っててほしいかっていう話が結構あるんだよね。
ありますね。
それの設計を多分どこもしてないだろうな。
そんなにちゃんと教育考えてる会社は多分ないと思うからな。
あれだよね、設計をするにはやっぱりある程度下まで知っていないと
まずい設計をしてしまう。
けど、実装するだけだったらそんなにいらない可能性もある。
そうですね。だからチームの中でどういう役割をするかによって
求められる知識レベルっていうのは変わってくるし、そんなに知らなくても
ただ言われたことを書くだけ、フレームワークの一部の処理を書くだけ
とかであれば、そこまで知らなくても仕事はできなくはないかなって感じ。
そうだよね。他のものを参考にしながらとかね。
他の今既に書かれてるものを参考にしながらっていう意味で。
そういう仕事もあるぐらいには業界が大きくなってる。
そうですね。
で、キリがないんで2番に行くと
多分僕も長谷川さんもあんまり知らないのを許さないという
知らないのを許さないっていうよりかは多分コンピューターが2人とも好きだなっていう
コンピューターが好きな話ですね。
トムゾーさんあれですよね。ファミコンのエミュレーター作って。
そうですね。
最近すごいくだらないプルリクを送りましたけど。
そうそう。コントリビューターのとこにね。
名前が載りました。ありがとうございます。
エミュレーターってやっぱでもすごいいいなと思って
実際書いてみると思いますね。
のいまんかったコンピューターの全てがあそこに詰まってるじゃないですか。
そうなんですよ。そうなんですよね。
36:00
CPUとは何をするものかっていうのがコードで書かれてるんですよね。
実際にファミコンエミュレーター作られた方はわかると思うんですけど
CPUなんだけど、たかだか説教とかそんなもんで書けちゃってるので
人間の脳で理解できる範囲にCPUが収まってるんですよね。
それがやっぱり本当にいいなと思ってるんで
これはもうみんなやっていくといいですよと。
CPU、ファミコンのエミュレーターの中で
たぶんCPUが一番シンプルですよね。
そうですね。もうただのスイッチブック。
メモリを抱えてたりもするけれども
ファミコンのエミュレーターの場合は
CPUが8ビットCPUなので命令サイズが8ビット幅しかなくて
命令が200なり300ぐらい。ちょっと2バイト命令でもあったりするんで
2、300しかなくて、そのほとんどがスイッチケースで
あれね、クソコードに見えるんですけど
CPUってああ書くしかないっていうのがあったりね。
そうそう。だからもう最初は意味がわかんないんだけど
えらいもんであれをずっと間違えないように謝教していくと
なんとなくうっすらと体にCPUが馴染んでくるんですよね。
この感覚はなんとも言いようがないんだけど
最初はなんだこれって思うんだけど
なるほどそうかCPUってこうだもんなと思って
この命令が来たらとかね
書き始めた時にもノイマン型CPUの仕組みは
脳にインストールされた状態で始めたんですか
そうですね。もともとハードウェアのこととかもちろん調べていって
計算機科学とかもある程度勉強した上で
エミュレーターをそれを実際に体に染み込ませるために
僕はエミュレーターを題材に選んで
って感じでしたね
それを知ってるとつまりCPUというのは
プログラムカウンターというものを持っていて
プログラムカウンターがメモリのバンチを指していて
CPUはそのメモリのバンチから命令を持ってきて
命令を実行するっていうのを知っていて
CPUの行動を見るとびっくりするんですよね
本当にそのまま書いてあるって
だからむしろそれなんですよね
CPUはすごく決まりきったことを
ただただ実行していくっていうのがまさにCPUで
そうなんですよね
でもその周辺のデバイスにしても
実はすごいシンプルに書かれていて
例えばそのIoがあって
そのIoにファミコンコントローラーとかつながっていたとすると
このIoっていうのは最初に何か書き込まれたら
何かを返すっていう風に仕様が決まっていたら
プログラムはそのとおりに書いてあるんですよね
基本はね
そうですね 全くそのとおりで
39:01
要は電気信号のこれが来たら動いて
それがつながってっていうのが
そのまんまソフトウェアとして書かれて
書いてあるんですよね
そうですね
だから本当エミュレーターはいいな
ただエミュレーターは書いて動くんだけども
やっぱり腹落ちしないっていうのが最近の僕の悩みで
さっきトークの話してたときも言ってましたけど
最近は計算機科学の基礎みたいな
基礎理論みたいなのにすごいご集心で
ジョージ・ブールの論文とか
クロード・シャノンの論文とかを
分かんねえって言いながら読んで
情報理論の本を買い漁って最近は読んでますね
これ計算機科学ってどういう範囲の話なんですか
範囲で言うと
どう説明すると一番いいかな
今ずっと読んでる教科書があるんで
それの目次を
情報理論みたいなところとは違うんだよね
もちろんCPU計算機っぽいこととか
基本は情報理論から始まっていて
その後情報の表現ということで
やっぱり二進法とかその辺ですよね
あと不動小数点表現とか
数値データとか
この辺の基本情報に出てくるような
その次に論理演算の話
明大論理とか論理大数とかの話があって
その先は結構ハードウェアですね
論理素子とか組み合わせ論理回路とか
フリップフロップとか
パタヘネとかと重なってるんですね
そう重なってます
それを
ただそれぞれを独自にやっていくと
あんまり腹落ちしなくって
やっぱり包括的に
全体を舐めながらやっていかないと
体が覚えて
僕は特にそうで覚えてこなかったんで
なのでエミュレーターで書きながら
実際の論理も学んでみたいな感じで
やり直してるって感じですね最近は
なるほどね
俺ねまだプログラム内蔵方式がね
体に馴染んでないんですよね
どういうことですか
腹落ちしてないんですよね
そう
これは最終的にはやっぱ
CPUを作んなきゃいけないんだなと思って
CPU作るのはあれですよね
電気回路として作るってことですよね
そうそう電気回路として
電気回路としてのCPUもショッキングでしたね
僕すごいちっちゃいのを作ったんですけど
持ってます
それそれ
これでしょ
これいいですよね
これはすごくよかったびっくりした
今カメラではCPUの作り方という本を見せてるんだけど
42:02
そうそうこれね
去年に僕PHPカンファレンスで
CPUの話をさせてもらったんですけど
その時には
その本すごい古い本なんですけど
1回無くなってもう1回印刷したらしく
さらにKindle化もされているというですね
驚きの
これはCPU
僕たちがCPU向けのプログラムを書いており
エミュレーターを書いたときって
CPUってストリームを処理する機械みたいな
処理機械だなって気がするんですけど
ハードウェアとして作ると
その印象がすごい変わるんで
これ面白くて
僕もなんかもっとちゃんとしたCPU作りたいな
っていうのはちょっと感じてるんですよね
そうで
CPUの作り方の本は
ハードウェアじゃないですか
最近出た本で作ろうCPUっていうのがあって
それはもしかしたら僕も
それあれだよね
FPGAとかで割とシュッと作っちゃいましょうっていう
そうFPGAですね
こいつはFPGAで
割とどっちかっていうと論理よりも
論理回路とかのハードウェアから
理解していきましょうよみたいなところがあって
これも面白いですね
僕でもまだこれ手出しちゃダメつって
情報理論を必死に
まだ早いみたいなこと
まだ早いぞって言いながら
でももうFPGAも買ってあるから大丈夫なんですけど
買ってあるんだ
なるほどね
おじさんはお金があるからダメですね
分かる僕もその本持ってました
途中まで読んでる
そうですよね
すぐ買っちゃうしね
買っちゃうね
すぐ重複して買うしね
あとあれだよね
おじさんはこのパーツ壊しそうだなと思ったら
2,3個買っとくみたいな
めちゃくちゃ分かりますね
俺もFPGA2個買うかどうかちょっと悩みだして
電子回路やってる人は分かると思うんですけど
すぐ壊しちゃうんで
糸も簡単に壊すんだよね
ソフトウェアと違ってやり直しが効かない
そうですね
また秋月天使に買いに行くっていう手間を考えたら
2,3個買っといたほうが
経済合理性があるっていう
一通り作り終わった後にもう1個作れるぐらい予備があるっていうですね
予備があってよしっつって
今度はもうちょっと小さくしてみようかみたいな
なるほどね
それじゃあこの後勉強が終わったら
CPU作っていく予定なんですか
今情報理論をやっていて
この次はこっちに行こうと思っていて
45:01
Understanding Computationっていう
オライリーのやつ
こいつも計算理論の本ですけど
ルビーを使ってやるやつで
前ちょっとやって若干挫折してたんで
情報理論からまたやり直してみようと思って
2週目とかすると全然違いますよね
情報理論も僕だから3週目ぐらいでようやく少し
分かってきたかなと思って
そうだよね
CPUの作り方は
これすごい古い本で
出た直後ぐらいに買ってるんだけど
その時は全く面白くなかったんだけど
数年ぶりに開いたらめちゃくちゃ面白くなってて
本当そうですよね
面白くなるタイミングがあるから
とりあえず絶版になる前に買っとけっていうのは
おじさんからの言葉です
市川さんも言ってたけど
そうだね
この本いいよって言って
勧められて絶版な時ってめちゃくちゃへこむんで
中古で偉いプレミアがついて高くなってた
あるよね
低レイヤー的に言うと
OSも結構ジャンルとしては面白くて
OSの作り方みたいな本があるんですけど
OS自作入門っていう
これも結構面白くて
途中で放置してるんで
またしばらくしたら読もうかなと思ってるんですけど
OS自作入門はたぶん緑色の
あれはフロッピーをUSBメモリに置き換えて
実装して
一応入力装置を認識するところまではやりましたね
だいぶ昔に
あれベースがWindowsマシンでさ
今目の前がMacなんでちょっと辛くて
僕も今その問題があって
僕自分のマシン全部Linuxデスクトップにしたから
ほとんどの本が参考にならないっていう
酷い状態になって
配信環境がLinuxデスクトップで
今時でもあれだもんね
音を録音しているのもブラウザだし
今カメラもつながってるんですけど
カメラつながってるのもブラウザだから
ブラウザが動けばなんとなくなんとかなっちゃうっていう
WebOSの世界がここにありましたね
一番素晴らしいのはOBSですね
OBSはLinuxでも動くんで
なんかLinuxのOBSが一番いいみたいな話じゃなかったっけ
そうなんですか
でもめちゃくちゃ使いやすいですねこれ
全然ストレスない
すごいよね
ついにデスクトップOSで使えるようになったかっていう感じがしますね
皆さんが想像する10倍ぐらい苦しいことがたくさんありますけど
だろうね
たまにWebでさ
これからLinuxで生きていくっていう人とか言ってさ
頑張ってって思うんだけど
48:01
動くそうですね
でも最近はね全部仕事Linuxでやってて
すげえ
Dockerがね早いから
ラッキーでいいですよ
PHP Stormは
PHP Storm動きますよ
そうなの
Ubuntuだとスナップっていうのが使えて
最近スナップでインストールできるようになったんで
それって何がエミュレーターをするのWindowsとか
いやエミュレーターするんじゃなくて
スナップはパッケージ管理ツールですね
コンポーザーみたいなもんだと思えばよくて
だからスナップリフレッシュPHP Stormとかってやると
新しいバージョンが勝手に落ちてきてくれる
Linux版のPHP Stormがそもそもあるんだ
そもそもあります
ちょっと前までは大変だったんですよ
シェルスクリプトとかを自分で叩いて起動するっていうね
そうなんだ
若干辛かったんですけど
最近はスナップっていうのでインストールができて
ちゃんとあれなんですよ
ショートカットとかも勝手にデスクトップに作ってくれて
ダブルクリックすれば動くみたいな
かなりUXに配慮した形でインストールされるようになった
そうなんだ
僕的にはあとはAtalkが欲しいけどなさそうだな
昔あったんだけどね
そうですね
Adobe製品とか使う方はちょっと苦しいかもしれないけど
今ほか辛いことあったかな
いやあんまないんじゃないかな
でもさっき想像つかないほど苦しいことがあるって言ってましたよ
そうそう僕はねただ慣れただけなんだ
なるほどねこういう話を最近やってるんですね
でもUbuntu使ってる理由は単純にDockerですね
Dockerが早いのってファイルシステムが早いってこと
そうですファイルシステムが
てかそもそもだってネイティブDockerですよね
同じファイルシステム使うから
MacとかWindowsはやっぱファイルシステムをエミュレートして
そうかネイティブファイルシステム使うのか
そうそう同じですよ要はプロセスなんで
なるほどなるほどプロセスだから
全く遅延がない
それは早いですねローカルで動いてるのと同じだもんね
そうなんですよ
嫌だったのが結局本番はLinuxなのに
開発がLinuxじゃないっていうのは
なんか許せないなっていうところが最初のときで
ごく稀にねほとんど問題ないんだけど
ごく稀に問題があるんだよね
そうごく稀に問題が出るっていうのもあるんで
あとは実際にCグループとか
その辺をちゃんとネイティブで動いてるところを見ておきたいとか
そんなところかな
なんかあれだった
LibXMLのバージョンが違って
なんかこうXMLじゃない変なものを食わせる機能挙動がちょっと違うとかあって
最近僕は嫌な目を見ましたね
51:01
Macで開発したものをLinuxに持ってて
みんなが一回踏むやつは大文字小文字問題なんですけどね
ファイル名のね
必ず全員一回踏むんですけど
Macで小文字で作って
なんかすっごい分かんない挙動をするんだよね
クラス名は先頭大文字になってて
Linuxでは読めませんみたいな
この辺はでもぜひ一度皆さん踏んでいただいて
Linuxはケースセンシティブで
大文字小文字問題はもうみんな踏んでるでしょ
一回は
その手前でもあるんだけどね
気がついて直そうとしたらGitがうまいことをちゃんと認識してくれなくて
めんどくさい目に遭うんだよね
そうですね
さっきのちょっとプログラマーどこまで理解すべきかと
このコンピューターが好きな話って結構相反してるというか
プログラマーが仕事として食っていくには
別に抽象的なことが分かって
作品が納品できればいいから
抽象的な理解でも別に問題ないんだけど
コンピューターが好きで中を調べるっていうのは
もう完全に仕事ではないですよね
そうだね
役には立たない立ちそうにないね
トラブルシュートでは役に立つけど
クライアントが喜ぶかっていうと
ちょっとそっち方面にはあまり効かないお薬というか
いやでも
学んでみて思うのって
あれですね
当たり前になりすぎてる概念ってやっぱすごい
めちゃくちゃすごいなと思って
基本情報の試験とかで構造化プログラミングっていうのが
テストでよく出るんですよ
順次反復あとは分岐化
プログラムっていうのはこの3つで表せますよって
初めて見たときにバカじゃねえのと思って
当たり前じゃないかって思ったんですよ
そんなの普通だろって思ったんですよ
その頃僕Java書いてたから別にジャンプとかないし
でもこれをちゃんと調べていくと
それ以前の話だと
構造化プログラミングじゃなかった世界があって
そこに構造化プログラミングっていうものが
安定をもたらして
今その後の世界線に僕らは生きているから
これが当たり前に生きているんですよね
これはさっきのおじさんの話じゃないけど
歴史を知ってる人から見たら
構造化プログラミング前の世界を知らないのって
お前本当にガキだなみたいな
そういう考え方になってしまうかもしれないけど
今当たり前になっているもの
当たり前になっていることは偉いんですけど
当たり前になっているからこそ
僕らはその先の抽象化を進められているから
これ構造化プログラミングが当たり前になる前の
54:02
ってどういう世界だったんですか
どういう世界なんですかね
僕もパンチカードとかああいう世界線ですよね
そうかね
たぶんGoToとかも構造化プログラミングから外れるのかな
そしたらExceptionとかもジャンプみたいなもんだから
ちょっと違うような気がするし
どうなんだろうな
確かにそういう話はあるだろうなと思っていて
僕たちがもしかしたら体験するかもしれないのが
この先に量子コンピューティングの世界が来るかもしれない
それはねいつもおじさん仲の人とよく話しますね
逃げ切れるのかって
ノリマン型は逃げ切れるのかみたいな話
大丈夫です
世の中は全部量子コンピューターになっても
PHPに直す仕事はたぶん残ってるんで
おっさんはそれで食えていけるんで大丈夫です
その話ちょっと前にしたな
やっぱりワードプレスぐらいはできるようにしとくかみたいな話
飯は食えるぞみたいな
そうねワードプレスを直すおじさんとしてね
全然バカにしてるわけじゃなくて
そんだけ広まってるから
数が多いからね
数が多いから
生きるために覚えるっていうのはあるぞ
むしろあるんじゃないかみたいな
今ワードプレス作ってる皆さんは
ちゃんとどっかに他の輝くものに移住してもらって
僕たちは後は任せろって
落ちてくる扉の下で支える係を
私がコンピューターの科学の推移を集めて
見事なプラグインを作ります
確かにそういうのあるかもね
何かが発見されて
その前がわちゃわちゃしてたやつが
まず一個シュッてなって
その後また発展していって
また混沌としたらシュッとなって
今混沌としているJavaScriptのフロントエンドの世界も
いつかシュッときれいになるんですかね
そうなんですよ
もしかしたらそれは僕らがちょっと怖いなって言ってた
ライブワイヤーみたいなものかもしれないし
そうだね
何とも言えないんですよね
でも今当たり前になっている概念っていうのが
いかにすごいことなのかっていうのを再認識する
っていう意味だけでも
割と理論系の勉強は役に立つなと思って
うんうん
でもあれでしょ
役に立つと思ってやるわけじゃなく
面白いからやるぐらいのほうがいいよね
やっぱ役に立つってさ
助け手心じゃんこういうやつで
後々思えばみたいな
面白いからやるっていうのが一番こういう趣味の
下のほうはオススメなんじゃないかなっていう気が
そうですね
ちなみに僕のモチベーションの源泉は
分からないとすごいムカつくんですよ
夜眠れなくなるんで調べるんです
だいたいあれだもんね
57:01
いつもLTとかやるとき
これちょっと分からなかったんで調べたんですけど
みたいな話が多いもんね
そうそうムカついたんで調べました
いやそうだよね本当
カンファレンスとか勉強会でよく会うんですけどって
言ったけどもうしばらく会ってないですからね
そうですね
しばらくリアルで会ってないですからね
オフィスは近いけど
オフィス僕行ってないからあんま関係ない
僕もほぼ行ってないから
ねえ
はい
でなんと1時間ほぼほぼ来たんですけど
残り2分でゴーストオブツしまいます
しますか
何が良かったですか
いやあの
初めて見たときに
主人公が臭そうなぐらい絵綺麗だなと思って
なんかこう
おっさんの匂いがしそうなぐらい
あの景色が綺麗ですよね
そう
画像が綺麗とかじゃなくて景色が綺麗ですよね
あのゲームね
なんか鼻とかのシーンあると
花粉飛んできそうな感じ
ちょっとするというか
なんか
なんかここまでできるんだと思って
うん
演出がすごいっていうのかな
僕一番気に入ってるのは
あの戦闘の最初の
一騎打ちの
あのなんていうのかな
その抜く前の緊張感と
抜いた後のその生と同の
こうなんていうんですかね
あそこがもうすごい気持ちよくて
でもこれをさ
ほんとびっくりだよねって
思ったりね
でもあのあれ侍だっつって
武士だっつってるけど
なんか持ってる武器とか
なんか煙玉とかなんか
あの屋根のように
ニンニンだろって
そう今こう顔ニンニンですよね
って
俺はあの
花火使ってるあの火屋ってあったじゃないですか
あの
船とかをあれで
まさにもうミサイルみたいな
マシンガンみたいな
これはちょっとあれだなと思いながら
でも面白いからいいか
うん
すごくよくできてるよね
あれはほんとによくできてるって
ちょっと気になるところもいくつかやっぱりあるにはあって
昔の人の名前にしては
今風の名前がついてるなとか
気になるところはあるんだけど
でもそれをなんか
もうその他の全てのもので
力づくでこう吹き飛ばすみたいな
っていうか
そうですよね
すぐ死ぬし
うんそうそうすぐ死ぬしね
最初めちゃくちゃ難しかった
難しかったね
いや今さっき一騎打ちの話してました
僕あれめちゃくちゃ不得意で
あの
すぐ失敗して
一騎打ち成功すると一発で相手殺せるんですけど
そうだね
失敗すると自分が瀕死になるっていう
おまけがついてて
1:00:00
僕だから一騎打ちになるとまたピンチになるから
やだなと思って
終盤はね一騎打ちもタイミング難しくなるんですけど
序盤は結構その
共有時間が長かったから
僕その一騎打ちして一旦逃げて
敵のターゲットが切れたらもう一回近づいて
一騎打ちをしてみたいな
これいいんかみたいな
いや俺だからあれですよ
長谷川さんのツイートに騙されたんですよ
最初は一騎打ちよっていう
スキル貯めとけっていうから
やったらもうめちゃくちゃ下手だった
僕序盤でもボコボコにやられてたから
もしかしたらあれかもよ
ディスプレイの遅延とかあるかもよ
いやそれがね最近買い替えたから
60fps出てるんですよ
この一個前は
30fpsだったんで
俺がモンハン下手なのはディスプレイのせいだ
って言ってたんですけど
今は言い訳できなくなっちゃう
はい2分経ちましたかね
はい2分経ちました
早いな
今日はめちゃくちゃ早かったな
これでもあれだよね
やっぱ1テーマ60分いるんだなって感じがしますね
でも1時間で切って
生配信してるのは終わんないからですね
ここでバツって切らないと
本当に終わんないんで
LTみたいなもんだからね
そうなんですよ
なので
名残惜しいですが終了の時に
いきます
今週も放送を聞いただき
ありがとうございます
番組のフィードバックや要望は
ハッシュタグ横浜の声援をつけてツイートしてください
本日の相手は長谷川さんでした
ありがとうございました
横浜の声援
01:01:47

コメント

スクロール