プログラミングの基礎を習得したので、相方botを制作してみる【プログラミング体験3】
HTML-код
- Опубликовано: 29 июл 2024
- 「プログラミング体験」の第3回です。相方を30分でボット化してみたら、「堀元ボットはやたらと耳が遠い」「水野ボットは何もできないしすぐ怒る」という悲劇が起こりました。友だちをボット化するのは難しいです。
【目次】
0:00 オリジナリティ全開のチャットボットを作ろう
4:12 ド級の機械音痴の爆速プログラミング
10:11 基礎はプログルからアイデアは部下から
12:37 堀元は水野ボット、水野は堀元ボットを作る
28:49 逆張りモンスター堀元ボット
34:35 キレ芸水野ボットと忘却の水野
37:52 ド級の機械音痴水野ボット
40:54 APIについてしゃべるハラスメント
45:14 ツールの仕組みに対する解像度がアップ
47:40 プログラミングをするときは臆せずググる
【参考文献】
〇喧嘩商売
amzn.to/3OcSXDc
【サポーターコミュニティへの加入はこちらから!】
yurugengo.com/support
【親チャンネル:ゆる言語学ラジオ】
/ @yurugengo
【実店舗プロジェクト:ゆる学徒カフェ】
/ @yurugakuto
【おたよりフォーム】
forms.gle/BLEZpLcdEPmoZTH4A
※皆様からの楽しいおたよりをお待ちしています!
【お仕事依頼はこちら!】
info@pedantic.jp
【堀元見プロフィール】
慶應義塾大学理工学部卒。専門は情報工学。WEBにコンテンツを作り散らかすことで生計を立てている。現在の主な収入源は「アカデミックに人の悪口を書くnote有料マガジン」。
Twitter→ / kenhori2
noteマガジン→note.com/kenhori2/m/m125fc452...
個人RUclips→ / @kenhorimoto
【水野太貴プロフィール】
名古屋大学文学部卒。専門は言語学。
某大手出版社で編集者として勤務。言語学の知識が本業に活きてるかと思いきや、そうでもない。
Twitter→ / yuru_mizuno
【姉妹チャンネル】
◯ゆる音楽学ラジオ( / @yuruongaku )
◯ゆる民俗学ラジオ ( / @yuruminzoku )
◯ゆる天文学ラジオ ( / @yurutenmon )
◯ゆる書道学ラジオ ( / @yurushodo )
◯ゆる生態学ラジオ ( / @yuruseitai )
◯ゆる哲学ラジオ ( / @yurutetsugaku )
【参考文献】
〇喧嘩商売
amzn.to/3OcSXDc
【サポーターコミュニティへの加入はこちらから!】
yurugengo.com/support
【おたよりフォーム】
forms.gle/BLEZpLcdEPmoZTH4A
※皆様からの楽しいおたよりをお待ちしています!
ctrlZは使えないのにforループとif文は使いこなせるモンスターが誕生してしまった
プログラミングの楽しいところは小さいPDCAを爆速で回して短時間で何度も失敗と成功を味わえるところだと思ってる。失敗からの成功のカタルシスで脳汁が出る。
わいも「楽しみに待ってました」って自動でコメントするチャットボットつくれるようになるかなぁ
print("楽しみに待ってました")
youtube data apiにコメント投稿のメソッドがあるので多分できますね。
まだその仕組みじゃない方がびびる
seleniumで規約的にグレーな実装出されたら面白い
私もPythonを学んで、「書籍名を入力すると著者と版元を出力するbot」を作ってみたいと思います!
まずは import mizuno っと…
while True:
print("ブラックボックスなのはお前だ!")
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
(5億年後)
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
ブラックリストなのはお前だ!
(宇宙終わり)
syntax error: ブラックボックスってキーボードのどこにあるんでしたっけ
お化け出た
お化けはお前だ!
……■
……□
…引数“ブラックリスト”の呼び出しに失敗しました。
エンジニアです。
この動画見ながらコード書いていると自分が天才プログラマになった気持ちになれて幸せ(傲慢)
C++未定義動作を踏むと鼻から悪魔が出るのでお化け出たがあまりにも正しすぎる
25:06 このくだり、堀元さんが水野さんをラバーダックに見立てて、ラバーダックデバッグの実例を見せてくれているんですね。勉強になりました!
堀元さんも人でなし度が高まりますね
“も”
ビンゴ!とかチューリングの話とか過去の要素をこれでもかと盛り込まれてて楽しかった。
プログラミングを覚えた水野さんが、堀元さんの見ている景色にに少し足を踏み入れた感じがしてすごく良かった。
個人作業で時々会話する様子大学の課題人とやってる時の空気と全く一緒でなんかいいな
38:24 「お化け出た」面白すぎる 流行らせたい
13:31 調べてみたら「ソースコードを読むとき、活性化される脳の領域は言語処理と同じではない」でした
でも確かにプログラミングで疲れた状態でもメール書いたり読書や会話はできるし、使ってる部位が違う感覚はあります
どっちかっていうとプログラミング中の感覚は、複雑なピタゴラスイッチを作ってる時に近いかも?(N=1)
楽しみに待ってました
ぼくも!
水野さんの「勉強してしまう」は
プログラミング(コンピュータ科学)に限らず
あらゆる学問の醍醐味ですよね!
北海道弁だと「勉強しらさる」くらいになるんだろうなあ。なんか勉強したい欲が収まらなくなっちゃう。
@@akinaka7543 北海道(札幌)出身の私の母語話者の内省では「勉強ささる」になるのが自然な気がします
うーん。私も札幌出身なんですが、「勉強ささる」ってあんまり言わない気がしたんですよね…なぜだろう…
勉強が動詞じゃないから
@@Kei-IWA_Siliconated 「勉強する」の形で動詞として扱いませんか?(「勉強をする」のような語形を基本した場合は「勉強ささる」のようにはならないかと思いますが)
水野さんやっぱり賢いなと思ったポイント。
6:00 の動作確認で、4を入力したら何も起きないことを当然のように確認してたの凄くないですか?
5以上の場合だけ確認して「完成しました!」ってなる人が珍しくないので。
ごめんなさい、6確認して4確認して終わったの見て、境界条件ー!って叫んでいました
@@omamori8107 確かに。5をスルーするのは致命的ですね
14:50 らへんからの水野さんのエラーはおそらく4行目のprintの左のインデントが全角スペースになってる気がしますね
うっかり入力した全角スペースに苦しめられるのもかなりのプログラマーあるある
だから半角空白、全角空白、タブを識別できるように設定変えるんだよな
このシリーズマジ好き
今回の「水野さんを一流プログラマーに育てよう」も最高でした!
腹筋が捻じ切れました😂
12:48 switchを誤字しているのにswitch文の有無を理解する天才プログラマ
switch文相当の機能としてmatch文があるので、後の正規表現で躓いていそうなのが面白い
@@makuradohizato プログルのサイトでsys.versionして確かめてみましたが、このサイトはPython3.8.0でmatch文が3.10からなのでまだ非対応っぽいですね
(初心者はあえて基本のifからやったほうが勉強になるっていうのも思います)
言語オタクと情報オタクっていう、お互いジャンルが違っていても論理が求めらる分野の人だからちゃんとチャットボットにできてるっていうの、一理あると思います
普段Podcastで聴いてるけどこの回面白すぎて動画でも観てしまった
19:30 相方のことをアヒルのおもちゃの代わりにする茶化しナス
楽しみにしてた
堀元さんと水野さんが、往年の「お笑いマンガ道場」の冨永さんと鈴木さんのように、お互いをディスり合う作品を作成しあっているという奇跡
そもそも仲がいい前提ではあるけど、プログラミングを教えるお手本にもなるな
新人に教えるときもこれぐらい楽しくやりたいよね
水野さんの成長速度が恐ろしいです!ぜひプログラミング続けてください…!
前職で、部署内でしか使用法のないツールを作ったときは楽しかったし、完成したときは達成感あった
自宅でしこしこやってた結果、休みの日を全部ツッコんじゃった
飛躍しすぎて発想が素晴らしすぎますねb
昔は正規表現はちゃんと書いてたのに、チャットGPTに丸投げするようになってしまった
自動化ツールの作成は楽しいですね
1:34 生成文法のちょいガチ解説回見た後だったからこのセリフがスッと頭に入ってきてびっくりした
脳内のイマジナリー(堀元 | 水野)が具体化する素晴らしいプログラムw
コレ他の人たちがやったら大喧嘩になるかもだけど、台本を書いてるだけあってふたりとも関係を俯瞰できているのでネタとして成立していますね。
こういう遊びが出来る友人関係はうらやましい。
CtrlZの操作よりif文が書ける水野さん素敵😊
私がC(正確にはC++)を学んだ頃はまだネット上の情報が豊富ではなかったので、ヘルプを見たり本当に手探りで覚えました。
環境構築の話も含めて、新しいものを生み出しやすい、良い時代になったなと思います。
ブラックボックスなのはお前だー!が再登場してくれて嬉しかったです。
水野bot、数字や+-が半角で入力してもらえる事を前提にしてるから利用者に最低限のITリテラシーが求められる所が好き。
人によっては+-キーの位置を聞かせる事すらできないw
確か最近、pythonにswitch文相当のmatch文だかcase文だかが入りましたよね
42:23 半角スペースのこと半角って呼ぶな
携帯電話のこと携帯って呼ぶぞ
タバコウンコ構文
素晴らしいプログラムだからここまで両者を再現できるのか、はたまた単純なだけか
水野さんの新たな名言くそ笑いましたwww
水野さんと同じ分岐の記述でつまずきましたが、堀元さんの発想は目から鱗でした…!
別に2回目の出力が指定文以外の入力に対応出来てなくても、入力側が正しく入力すれば堀元botは正常動作するわけですもんね…
ソースコードとして見ちゃうと穴があっても入力者側が正しく入力する限りは見た目上問題ない実装と見えるし、
現在水野さんが学習した範囲で実装できる最適解をすぐ導いたのは流石だと思いました。
最近だと正規表現や基本構文みたいなド忘れしたものならAIが解決してくれるので楽になりました。
AIは全く知らない分野の助けにはなりませんが、知ってる分野の助けにはかなりなってくれますね。
身の回りのものの理解度が上がるのは何かを学ぶ時の醍醐味ですね
もう少し進んだら一度Cとかやってみてほしいなあ
楽しそうで何より
実際後ろ見するのはわりといい体験な気がします
あとbotの挙動が怪しければ本人の方をbotに合わせてもらえばよいので何ら問題がないですね
43:28
「ちゃんとしたコンピューターだったらそのプログラムに割り当てられている計算資源は限られているからパソコンは落ちたりしない」
これがジェネレーションギャップなのですかね。
そっかぁ、ちゃんとしてれば落ちないのかぁ、そっかぁ。。。
なんかしみじみしてしまいました。。。
PCそのものが落ちることは無かったかもなぁ
プログラム自体が無限ループで落ちたり落ちなかったりはあるけど
計算のみだと落ちて、繰り返し1回ごとに画面出力の処理とかを入れると落ちずに無限に動くと思ってる
PCといえば1CPUシングルコアが当たり前の時代がありまして。
計算資源の割り当ても何もみんなそれで動いているので、無限ループなどカマそうものなら、OSもまともに動かなくなる、など。
なんというか、この話に限らず、OSがもっとヨチヨチ歩きで、アプリと一緒に普通にコケていた時代があるのです。。。
書いたソースが想定通りに動いた時の満足感、という長年やってると忘れがちな感覚を思い出させてくれるいいコンテンツ!ずっとやってると満足感が解放感になってしまう悲しみ。
楽しそうで何より 笑
終わり方おもしろすぎて笑ってしまった
いつも思うけど堀元さんのほうが言語現象に対する感覚が鋭敏だし水野さんのほうが数学の才能ありそう
正規表現覚えられないの、めっちゃわかる
正規表現描いてる時が人生の五指に入るほどの喜び
まさに
「ブラックボックス」
という入力に対して、
「ブラックボックスなのはお前だ!」
という出力をするbot作らないかな〜と思っていたので、後半で触れられていて嬉しくなったw
本当にすごい、姿勢として見習うべき部分が非常に多い 水野さんコーダーに向いてそう PMでも化けそう
お化けでたwwwwww
発表のくだりはMr.ホリモトの卒論に匹敵するレベルで笑い転げた。
Pythonってニシキヘビなのでスネークケースと覚えると間違えないですよ
有用
ちなみにスネークケースって「snake_case」じゃなくて「SNAKE_CASE」のみだと思ってたけど違うんかな
できることとできないことさえ覚えればプログラムは楽勝っすわ!!
水野さんがひたすら微笑ましい……
6:13 「5以上」の試験で5を避けるのある意味才能ありますねw
33分のところでelseいれてるけど堀元さんが「え、そうだよね」以外わからないbotと化してる
お互いをモデルにchat bot実装してきゃっきゃうふふして遊んでるの、仲良しすぎてニコニコしちゃう
38:34 声出して笑っちゃった
re は恐らく regular expression から来てると思います
ソースコード配布されるってことは、水野botと堀元botを合体させる人が出てきそう
11:58 堀元さんは無自覚かと思いますが、これ、かなり難しいことを要求してます!
私は文系卒SE1年目の者で、SQL触りはじめて8ヶ月ほど経ちましたが、元々水野さんと同じくらいパソコン音痴で、初期は「調べて実装する」が1番難しかったです。3~4ヶ月くらいはこれが出来ずに苦戦していました。
そもそも自分の中に蓄積したアルゴリズムパターン、文法(多言語でも可)、語彙などが無いと、「そんなことできるなんて発想が無かった!!!!!!!!!」となります。発想がないと調べるところまでたどり着けないのです。
私が研修中に学んだことの1つとして「何でも検索すること」を挙げると、部長に「???でも、料理のレシピとか自分で調べようとかってするよね?」と言われあまり理解されなかったのですが、それはその料理が存在すること自体と、その料理名を知っているから検索できるのです。
「検索して好きなこと実装していいよ」は、初心者にとっては、知らない国の知らない料理のレシピを調べて作ってみていいよ、と言われているのと同じことなんです。
個人的感覚ですが、IT熟練者ってIT素人の気持ちをすぐ忘れてしまう人が多い印象です。知識量が膨大なのと、すぐに知識が指や癖にインプットされて道具化するからなんですかね...?
隙自語、失礼しましたッ
16:22 堀元さんが言った正規表現という単語は、水野さんに正しく伝わっていたのだろうか
サムネイル画像の左側の人がかつてないほど狂気に満ちていて、しばらく眺めてしまいました。
最後、「ボットなのはオマエだー!」を無限に言い合ってしまいましたね。
無限に遊べるゲームなんだよな
ゲーム実況みたいで楽しいですね 27:32
「?が入っていたら疑問文」でいいなら、正規表現じゃなくてもinで行ける。
「if "?" in data:」で、inputで受け取った文字列に半角の?が含まれているなら、となるから。
プログラミングができる水野さんなんて、水野さんじゃない!
めっちゃ笑った😂
49:29 からの下り好きすぎるwwwwww
堀本さんのbotだと*なんで”+9”みたいな変な式できちゃうので+のほうがいいですね
あと、これは人によりけりですけど、私は[0-9]より\d派ですね
あと、演算子前後のスペースにも対応したいです
つまりこうか
^\d+\s*\+\s*\d+$
いつか、水野さんに一から構文を考えたオレオレプログラミング言語のコンパイラを作って欲しいな
ロボットは手足をもがなければならない
邪魔ですもんね
水野さん俺を置いて行かないでもろて……
機械音痴のままでいてくれ……
pythonで正規表現を書くときは'文字列'じゃなくて、前にrを付けたr'文字列'を使う方がいいですよ。バックスラッシュが自由に使えるようになるので。r無しの文字列でバックスラッシュを使いたい場合はバックスラッシュを2重に書く必要があります。今回はバックスラッシュのうしろがたまたまエスケープシーケンスを構成しない文字だったから2重じゃなくてもセーフだったけど、将来のバージョンではアウトになる予定だそうです。
タスク管理ツールちょうど探してたので、おっ!と思ったけど、やっぱないよなぁ…作るか…
今回うるさめの勉強用BGMに使えそう
21:30
文字列に?が含まれるかどうかなら正規表現使わずともinでいいんだけどね。。
if '?' in data:
print('疑問文')
文字列の部分一致だけ水野さんに教えて、ボット同士のラジオのためにボットプログラムデッキ構築を一時間でやってもらいたい
pythonって、if 文字列 in オブジェクト:でオブジェクトの中に指定した文字列が含まれてることを条件にできたっけ?
30分で友達を不機嫌にさせるボットが作れるなんて、コンピュータはコスパいいですね!![Y/y]
[Y/y]で有無を言わせないの好き
ズボラ「いちいちめんどいな -y」
すげぇ😅
どっちかが風邪ひいたりしたら、Botをずんだもんとかに読ませましょう
水野さんが作りたかったのはこの形式だと難しい気がするな
ホリモトさんが提示した解決策は暫定策で
しょっぱなからいきなり「え、そうだよね?」と入力された場合
厳密には水野さんのやりたいことにならない
複数の異なる仕様の言語使いあるある「マニュアルが欲しい」
switchに相当するmatch文があった気がしますが自分はifで早期リターンします
import re
reはRegular Expressionですわね。訳すとわかりやすい。
ブラックボックスの悲劇再びww
岡目八目て、ほんとうだなぁ。(本人だけが気づかない)
このシリーズ見てる時の感覚、動物の赤ちゃんが独り立ちするドキュメンタリーを見てる時に似てるわ
格闘技の技のデータベースサイトはマジで欲しい
26:26 個人的にctrl +cとv知らなくて研究室でバカにされたの思い出しました
だって授業で習ってないしって思いました笑
動画で出てた「ctrl+z」と合わせて「ctrl+y」を覚えてみようぜ
「ctrl+z」が「なかったことにする能力」だとしたら、
「ctrl+y」は「なかったことをなかったことにする能力」なんだけど
お化け出た
水野さん見てると、マジで才能あると思うけどみんなはどう思うかな
聞こえなかったはずなのにそうだよねって言うと逆張りするのめっちゃ腹立つw
12:56
Pythonにはswitch文ないですが、それ以前にswitchのスペルが間違っているのが気になります。
堀本さん、最初に `print` 関数のカッコの前に空白開けていたの(実際は現行のpythonでも関数の後の空白は許容されてるのでしょうけど)を見て、「堀本さんの大学時代の世代的に、Python2の感覚で書いてるのかな?(Python2では関数ではなく文だったので)」と思って勝手に妄想が広がった
(よくよく考えるとカッコ書いてるし、上述の妄想は全て虚構だと思います)