Slide 1

Slide 1 text

カウンター越しの知識 ~HackBarで得た知見~ 2024/08/11 Shuma

Slide 2

Slide 2 text

名前:Shuma
 現職:自社サービス企業でインフラエンジニア兼社内SE
 
 経歴:飲食店店長→Pubでバイト→インフラエンジニア兼社内SE
 HackBarで好きなドリンク:山崎
 自己紹介


Slide 3

Slide 3 text

概要 2つの主題をベースに紹介: 1. HackBarでのコミュニケーションとインタラクション →コミュニケーションを通して実際に印象的だった出来事や思い出 2. HackBarで得た技術的な知見   →実際にHackBarで得た技術的な知見 3. まとめ →これらの知見から得た学びと普段の仕事への応用方法

Slide 4

Slide 4 text

HackBarとの出会いについて

Slide 5

Slide 5 text

約3-4年前に神戸で開催されていた”つながる勉強会”に行っており その勉強会のSlackグループでの投稿で知って行ってみようと思ったの がきっかけ HackBarとの出会いについて

Slide 6

Slide 6 text

コミュニケーションを通して実際に印象的だった出来事や思い出

Slide 7

Slide 7 text

コミュニケーションを通して実際に印象的だった出来事や思い出 1. 技術的議論を隣で聞ける ○ 新しい知識が得られる ■ 例: カリーハワード同型対応、ペネトレーションテスト 2. 予期せぬ出会いに遭遇する ○ 意外な人との出会い ■ 例: 有名技術本の著者、有名企業のエンジニア、オーナー の父 コミュニケーションを通して実際に印象的だった出来事や思い出①

Slide 8

Slide 8 text

知見1: HackBarを通してネットワーキングの力を構築し活用する ● 内容: 人脈の拡充や予期しないチャンスを得るために、積極的に交流を図ることの重要性。 ● 具体例: ○ キャリアの機会 : 隣に座っている人との話で新たなチャンスをつかめるかもしれない。 ○ インスピレーションやアイデアの共有 : 雑談から得たアイデアやインスピレーションが、仕事や 個人プロジェクトに活用できる。 応用方法: ● 積極的に話しかける : 自分から話しかけて新しい人と関係を築く。 ● 共通の興味や趣味を探す : 共通の話題を見つけて、自然な会話を進める。 コミュニケーションを通して得た知見や応用方法①

Slide 9

Slide 9 text

知見2: カジュアルな会話から得られる専門知識 ● 内容: リラックスした環境での会話が、専門的な知識や新たな情報に繋がる。 ● 具体例: ○ 専門家との偶然の会話 : 隣の席の人が専門家であることがわかり、その分野の知識やトレン ドを学ぶ。 ○ テクノロジーの最新情報 : 非公式な場で最新の技術やツールについてのリアルな意見や経 験を得る。 応用方法: ● リラックスした会話を心がける : 気軽な会話の中で専門的な話題に触れる機会を作る。 ● 興味を持って話を聞く : 知識を持つ人の話に耳を傾け、新たな情報を得る。 ● 他人から聞いた話を自分なりに解釈し、違う人にお話する。 コミュニケーションを通して得た知見や応用方法②

Slide 10

Slide 10 text

実際にHackBarで得た技術的な知見

Slide 11

Slide 11 text

水戸黄門で学ぶカリー=ハワード同型対応                 

Slide 12

Slide 12 text

このLT始める前に ・このLTは実際にHackBarで聞いた内容を元に自分なりに解釈しアウトプットする形で福岡の勉強会で発表しました。 ・文系なので、数学苦手です。(数学に関する質問されると泣きます。。) ・”ことさん(関数型プログラミングの愛好家) ”からカリー=ハワード同型対応を通して数学とプログラミングの証明の関係性 に関して教えていただきました。 感銘を受けたので、今回発表してみることにして見ました。 ただ、私もうまく理解できていないので間違っていたらご教示いただけると幸いです。 質問がある際には素人的観点からご質問にお答えします。

Slide 13

Slide 13 text

話すことと話さないこと① 話すこと: 1. カリーハワード同型対応の基本概念 ○ 論理学の命題と型理論の対応 ○ 数学的証明とプログラムの対応 2. 水戸黄門の物語を用いた直感的な説明 ○ 物語の展開とプログラムの実行過程の類似性 3. 実世界での応用例 ○ プログラムの正当性証明

Slide 14

Slide 14 text

話すことと話さないこと② 話さないこと: 1. カリーハワード同型対応の数学的厳密性 ○ 圏論や型理論の深い数学的詳細 2. 歴史的な発展過程の詳細 ○ 発見以降の理論の進化 3. 高度な応用分野 ○ 証明支援システムの内部機構 ○ 量子計算との関連性

Slide 15

Slide 15 text

カリー=ハワード同型対応とは? アメリカの数学者ハスケル・カリー(Haskell Curry)と論理学者ウィリアム・ハワード(William Howard)により最初に発見された形式論理の体系とある種の計算の体系との 構文論的なアナロジーを一般化した概念である。 つまり、論理学とプログラミング言語理論を結びつける重要な概念 引用:カリー=ハワード同型対応 - Wikiwand

Slide 16

Slide 16 text

ここで問題です 。

Slide 17

Slide 17 text

どっちがカリー=ハワード同型対応を提唱者? A、

Slide 18

Slide 18 text

どっちがカリー=ハワード同型対応を提唱者? B,

Slide 19

Slide 19 text

正解は、、 Bです。 • 1934年,1958年に,ハスケルカリーが今とは少し違う形で 言及 • 1968年,ウィリアムハワードが現在の形で定式化 出所: 2010_tetsugakukisobunkaseminar-2_05.pdf (kyoto-u.ac.jp) カリーハワード同型対応入門  京都大学OCW

Slide 20

Slide 20 text

ここで質問です 。

Slide 21

Slide 21 text

水戸黄門の世界 ● 正義の旅人 :隠れた大名として全国を旅する水戸黄門 ● ストーリー展開 :毎回類似した構造で展開される約1時間の物語 ● 長寿番組:テレビで長年放送され、世代を超えて愛された時代劇 ● 文化への影響 :日本の大衆文化に深く根付いた作品 →今回はこれを題材に説明していきます。

Slide 22

Slide 22 text

論理命題と型理論の関係: ● 命題 = プログラムの仕様 ● 型 = その仕様を表現する方法 ● プログラム = 仕様を満たす具体的な実装 簡単に言えば: ● 命題は「何をすべきか」 ● 型は「どんな形でやるか」 ● プログラムは「実際にどうやるか」

Slide 23

Slide 23 text

論理命題と型理論 まずは、水戸黄門のストーリーを命題と型理論にあてはめて行きます。 命題(P):「不正を正す」(型に相当) 証明(Q):水戸黄門の具体的な行動の計画(プログラムに相当) 型(T):「不正を正す」という目的を達成するための方法の集合 プログラム( t):水戸黄門の実際の行動(型Tに属する具体的な実装)

Slide 24

Slide 24 text

水戸黄門の旅をカリーハワード同型対応で考えると① ● 命題(型):「悪を倒す」 ● 証明(プログラム ):水戸黄門の具体的な行動 1. 町に到着する :(関数の開始) 2. 情報を集める :(データ入力) 3. 悪人を特定する :(条件分岐) 4. 証拠を集める :(データ処理) 5. 印籠を見せる :(結果出力) この流れは、プログラムの実行過程と直接的に対応します。

Slide 25

Slide 25 text

水戸黄門の旅とカリーハワード同型対応で考えると② プログラミング言語での簡単な例 この例は、水戸黄門の行動をプログラムと して表現しています。 型注釈は命題に、関数の実装は証明に 対応します。

Slide 26

Slide 26 text

どんなコードか ? 水戸黄門が悪事を暴く過程を Pythonの関数で表現しています。

Slide 27

Slide 27 text

どんなコードか ?

Slide 28

Slide 28 text

どんなコードか ?

Slide 29

Slide 29 text

深掘り: カリー=ハワード同型対応の数学的側面 1. 直観主義論理と単純型付きラムダ計算の対応 a. 「直観主義論理」は数学の一分野で、「単純型付きラムダ計 算」はプログラミングの基礎となる考え方です。 b. これらが似ているということは、数学的な考え方とプログラミ ングの考え方がつながっているということなんです。 [参考: Pierce, B. C. (2002). Types and Programming Languages. MIT Press.]

Slide 30

Slide 30 text

深掘り: カリー=ハワード同型対応の数学的側面②

Slide 31

Slide 31 text

カリーハワード同型対応の現代的応用 1. プログラム検証(プログラムが意図した通りに動作することを確認するプロセス) ○ 型システムを利用した静的解析 ○ 例: Rust言語の所有権システム  (Rustのメモリ管理に使われる機能) 2. 定理証明支援システム(数学的な定理やプログラムの正しさを証明するためのツール) ○ Coq, Agda, Idrisなど ○ プログラムと証明の統合 3. 関数型プログラミング ○ Haskell, OCamlなどでの型駆動開発 [参考: Harper, R. (2016). Practical Foundations for Programming Languages. Cambridge University Press.]

Slide 32

Slide 32 text

なぜ、重要なのか 論理的思考の促進: プログラミングを数学的命題として捉えるアプローチは非常に有効です。これにより、プログラマー はより厳密で体系的な思考を養うことができ、結果としてより堅牢なソフトウェアの設計と実装につながります。 問題解決への新しいアプローチ: 数学的証明とプログラミングの対応関係を活用することは、複雑な問題に対する新 たな視点を提供します。これは特に、従来の方法では解決が困難だった問題に対して有効な手段となる可能性があり ます。 分野間の知識統合: 数学とプログラミングの知識を統合することで、両分野における理解が深まり、革新的なアイディ アの創出につながる可能性があります。これは、学際的なアプローチを促進し、新たな技術や方法論の開発に貢献す る可能性があります。

Slide 33

Slide 33 text

まとめ ・カリー=ハワード同型対応の中で命題と証明を、水戸黄門の旅 = プログラムの実行過程に当てはめて説明して見ま した。 ・型駆動開発は、型(命題)を先に定義し、それを満たすプログラム(証明)を段階的に構築していく手法です。これはカリーハ ワード同型対応の考え方を開発プロセスに応用したものと言えます。 ・興味が出たら、プロに学んで見てください。

Slide 34

Slide 34 text

ここまでが実際にHackBarで得た技術的知見で す。

Slide 35

Slide 35 text

本当のまとめ いろいろお話させていただいた中で実際に応用方法を実施してきたことを冒頭に説明させていただきました。こ れらは日常業務でも活かせると思います。 ・人と話をして、ネットワーキングを構築し活用する ・人の話を興味深く聞く。 ・他人から聞いた話を自分なりに解釈し、他人に説明する。 これらが技術の深さと人とのつながりが、エンジニアとしての成長を加速させる。 HackBarでの経験を活かし、 今後もお酒を吞みながら楽しく 学び続けたいと思います 。

Slide 36

Slide 36 text

ご清聴ありがとうございました。 出典 1. カリーハワード同型対応入門, 京都大学OCW, 2010_tetsugakukisobunkaseminar-2_05.pdf (kyoto-u.ac.jp) 2. Pierce, B. C. (2002). Types and Programming Languages. MIT Press. 3. Harper, R. (2016). Practical Foundations for Programming Languages. Cambridge University Press. 4. TypeScriptで型駆動開発 (zenn.dev) 5. カリー=ハワード同型対応 - Wikipedia

Slide 37

Slide 37 text

おわり