AWSちゃん 異世界転生アンソロジー https://www.melonbooks.co.jp/detail/detail.php?product_id=1959318 https://booth.pm/ja/items/4832564 https://ecs.toranoana.jp/tora/ec/item/040031074545/
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」||とorの違い登壇して解決したさっぴー川原 @sapi_kawahara1
View Slide
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」自己紹介● さっぴー川原 @sapi_kawahara● 老害エンジニア● 住んでいるところは観光地の川越● スキル○ ファミコンゲームの開発時代からのエンジニア。iモード登場時にはIT企業を経て、SESで大手IT企業で常駐を経験。その後はスタートアップ企業に転職。多くの案件を経験しており、対応できる開発言語は10を超える。● コンピューター関連での原点っぽいのは沢山知っていると思う2
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」俳句登壇は吉祥寺から始めよう3
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」私の原点、その1● コンシューマーゲームでの開発?● 私はファミコン時代から開発してますので、この本はツッコミどころ満載でした!4
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」私の原点、その2● iモードサイト?公式メニューに入るのを作ったことあります● Web1、Web2、Web35
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」私の原点、その3● 中2病なので!● AWSの異世界転生本書きました● 共著は、ダムの本で有名な「のりこ」さんと、執筆ニートの「小笠原 種高」さんです6
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」私の原点、その4● プログラミングの原点というか基礎!● ブーリアン(boolean)● 紙版、2023年6月20日頒布予定● 電子版、技術書典にて頒布中7
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」前フリいらないよ● 今回、ブーリアン(boolean)に関する技術書を技術書典にて頒布しましたが、未解決なことがありました● 短絡評価(ショートサーキット)についてです● 短絡評価(ショートサーキット)は、プログラミングをやる上では、原点というか基本的なルールで、すべての言語の基礎!!8
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」短絡評価(ショートサーキット)● ちなみに、短絡評価(ショートサーキット)というのを、ご存知ですか?● 論理和(|| or)なら優先順位が高い箇所がtrueになったら、そこで論理演算を止めちゃう!!● 論理積(&& and)なら優先順位が高い箇所がfalseになったら、そこで論理演算を止めちゃう!!● エンジニアでも、短絡評価(ショートサーキット)って気にせず使ってることが多いよね?9
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」親の顔をよりよく見るアレ● Perlの人なら、よく見ますよね????(主語が大きい)○ perl -e '$file="test.txt"; open my $fh, "<",$file or die "not openfile $file";'● ファイルがないときは、◯すアレです● test.txtというファイルがないと、論理和でfalseなので、dieが実行されています● test.txtというファイルがあるときは、論理和でtrueなので、短絡評価(ショートサーキット)が動作してdieが実行しません!!10
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」疑問があれば試すべき● orの他に||も論理和だよな?● 疑問に思ったら試そう!!それが執筆の基本!!○ perl -e '$file="test.txt"; open my $fh, "<",$file || die "not openfile $file";'● アレ??ファイルがないのに短絡評価(ショートサーキット)が動作したよ??何で??11
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」アレ?と思ったらドキュメントを見る!● 疑問に思ったらドキュメントを確認だ!!!!○ https://perldoc.jp/docs/perl/5.18.1/perlop.pod#Logical32Defined-Or○ Perl では、フロー制御に使う場合の && と || の同義語として、 and 演算子と or演算子が用意されています (下記参照)。 短絡の動作は全く同じです。 しかし、"and" と "or" の優先順位はかなり低くしてあるので、引数に括弧を 使っていないリスト演算子のあとに続けて使う場合にも、 安心して使うことができます:12
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」短絡の動作は全く同じです13
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」引数に括弧を 使っていないリスト演算子のあとに続けて使う場合にも、 安心して使うことができます14
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」つまり括弧で動作が異なる?それなら試そう15
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」引数に括弧を使う● 括弧の花嫁○ perl -e '$file="test.txt"; (open my $fh, "<",$file) || die "not openfile $file";'● ちゃんと◯ぬ● 正しく動作しました!● ファイルがあるときは、短絡評価(ショートサーキット)は動作しません!!16
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」||は優先順が高い括弧でくくらないといけない?よくわからん!!!原因探求でググった17
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」力尽きましたwwwwww18
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」ちなみにPHPは同じ結果です● 試してみよう!○ php -r '$file="test.txt";@fopen($file, "r") or die("not open file$file.".PHP_EOL);'○ php -r '$file="test.txt";@fopen($file, "r") || die("not open file$file.".PHP_EOL);'19
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」まとめ● ブーリアン(boolean)と短絡評価(ショートサーキット)は奥が深い● この2つを調べてわかったけど、この辺りは、各言語で好き勝手に実装しているw● そのため、多言語をやっている人は、他の言語の流儀で実装してしまいがち!○ その結果、下らんバグとして引っかかると思う● Perlの|| &&とor andの違いは、まだ理解してないので、誰か教えてください20
2023年6月16日(金) 吉祥寺.pm 33 テーマ「原点」解決● 登壇してフォローされました● || だと、先に$file || dieが評価されるそうです● open文は最後まで実行するという思い込みが悪さした● 思い込み気をつけよう21