{%hackmd _6gkK4EVRrijGnUnS71_YA %}
Juliaの○○を××した話
===
<!-- .element: style="font-size: 400%" -->
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
2023/01/21 NGK2023S
antimon2(後藤 俊介)
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# お前誰よ?
+ 名前:後藤 俊介
+ コミュニティ:**[NGK2023S](https://ngk2022s.connpass.com/event/265837/)**, **[JuliaTokai](https://juliatokai.connpass.com/)**, **[機械学習名古屋](https://machine-learning.connpass.com/)**
+ 言語:**[Julia](https://julialang.org)**, Python, …
+ SNS等:[![Twitter: @antimon2](https://hackmd.io/_uploads/ry0zZ3Xoj.png "Twitter: @antimon2")<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://twitter.com/antimon2) [![Facebook: antimon2](https://hackmd.io/_uploads/S11pZnmsi.png "Facebook: antimon2")<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://www.facebook.com/antimon2) [![Mastodon: @antimon2](https://hackmd.io/_uploads/B1H-f3Xio.png "Mastodon: @antimon2@mathtod.online")<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://mathtod.online/@antimon2 "@antimon2@mathtod.online") [![Github: antimon2](https://hackmd.io/_uploads/B1uRz27jo.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://github.com/antimon2/ "Github: antimon2") [![Qiita: @antimon2](https://hackmd.io/_uploads/BJWXmnmsi.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](http://qiita.com/antimon2 "Qiita: @antimon2") [![Zenn: @antimon2](https://hackmd.io/_uploads/HJdDQ2Qis.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://zenn.dev/antimon2 "Zenn: @antimon2") [![HackMD: @antimon2](https://hackmd.io/_uploads/rknRm2moi.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" -->](https://hackmd.io/@antimon2 "HackMD: @antimon2") (@antimon2)
+ **Julia 本 執筆しました!**:new:<!-- .element: style="vertical-align:middle" -->
Note:
NGKのスタッフやってます(今年でN年目)
JuliaTokai とか 機械学習名古屋 とか勉強会主催しています
メイン言語は Julia で仕事は Python でやってます
SNS等は、Twitter、Facebook、mastodon、GitHub、Qiita、Zenn、HackMD 等ほぼ全て @antimon2 てIDでやってます
あと、Julia の本書きました!
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Julia の本 書きました
《準備中》
<!-- .element: style="font-size: 360%; color: #aaaaaa" class="fragment" data-fragment-index="1" -->
今日はこの話ではありません…
<!-- .element: style="font-size: 80%;" .element: class="fragment" data-fragment-index="1" -->
Note:
書いたんですけれどまだ「もうすぐ出ます」以上のことは言えません(この場では)。
ということで今日の本題はこちらではありません。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# Julia とは?
<!-- .element: style="font-size:400%" -->
Note:
ですっ。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Julia とは 科学技術計算に強くて速い動的言語です。
<!-- .element: style="font-size:260%" -->
Note:
ですっ。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
### You know everything about Julia?
<!-- .element: style="font-size:180%" -->
+ もう少しだけ詳しい概要↓<!-- .element: class="fragment" data-fragment-index="1" -->
Note:
これでみなさん完全に理解していただければ幸いなのですが、まぁそうも行かないかもしれないので、このスライドをここから下に辿ると少しだけ詳しい概要載せてありますので、このスライド公開したら後で見てみてください。
----
<!-- .slide: data-background-color="#ffffff" -->
[![Julia](https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia-logo-color.svg?sanitize=true)<!-- .element: style="background:white;width:80%" -->](https://julialang.org)
Note:
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(1)
+ [The Julia Language](https://julialang.org)
+ 最新 v1.8.5(2023/01/08)
+ LTS:v1.6.7(2022/07/19)
+ 次期版:v1.9.0-β3(2023/01/18)
+ 科学技術計算に強い!
+ 動作が速い!(LLVM JIT コンパイル)
Note:
ググるときはなるべく [julialang](https://www.google.co.jp/search?q=julialang) で!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(2)
> + Rのように中身がぐちゃぐちゃでなく、
> + Rubyのように遅くなく、
> + Lispのように原始的またはエレファントでなく、
> + Prologのように変態的なところはなく、
> + Javaのように硬すぎることはなく、
> + Haskellのように抽象的すぎない
>
> ほどよい言語である
<!-- .element: style="font-size:66%" -->
引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
<!-- .element: style="font-size:71%" -->
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## Julia とは?(3)
> + C のように高速だけど、
Ruby のようなダイナミズムを併せ持っている
> + Lisp のように真のマクロを持ちながら、
MATLAB のような直感的な数式表現もできる
> + Python のように総合的なプログラミングができて、
R のように統計処理も得意で、
Perl のように文字列処理もできて、
MATLAB のように線形代数もできて、
shell のように複数のプログラムを組み合わせることもできる
> + 超初心者にも習得は容易でありながら、
超上級者の満足にも応えられる
> + インタラクティブにも動作して、コンパイルもできる
<!-- .element: style="font-size:50%" -->
([Why We Created Julia](http://julialang.org/blog/2012/02/why-we-created-julia) から抜粋・私訳)
<!-- .element: style="font-size:71%" -->
Note:
いろんな言語の「いいとこどり」言語!ってことでっ
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 要するに
<!-- .element: style="font-size:300%" -->
+ 動的言語なのに速い!
+ 文法も覚えやすい!
+ 数値計算に強い!
<!-- .element: style="font-size:180%" -->
Note:
機械学習とかにも持って来いっ!
----
<!-- .slide: data-background-color="rgba(213,99,92,0.3)" -->
## 主な機能
<!-- .element: style="font-size:280%" -->
+ [多重ディスパッチ](https://docs.julialang.org/en/v1/manual/methods/)
+ [動的型システム](https://docs.julialang.org/en/v1/manual/types/)
+ [並行・並列処理](https://docs.julialang.org/en/v1/manual/parallel-computing/)、コルーチン
+ [組込パッケージマネージャ](https://docs.julialang.org/en/v1/stdlib/Pkg/)
<!-- .element: style="font-size:160%" -->
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# DEMO
Note:
早速本題なのですが、まずはこちらのデモをご覧ください。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
{%youtube eEcTDAOtq3s %}
Note:
https://youtu.be/eEcTDAOtq3s
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" data-transition="slide-in convex-out" -->
Julia の REPL 上で AIChat と会話できるプラグイン 作りました!
<!-- .element: style="font-size: 240%" -->
Note:
ということで改めて。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" data-transition="convex-in slide-out" -->
JuliaのREPLをAIChatと統合した(?)話
===
<!-- .element: style="font-size: 300%" -->
2023/01/21 NGK2023S
antimon2(後藤 俊介)
Note:
JuliaのREPLをAIChatと統合した(?)話をします。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# AIChatREPL.jl
<!-- .element: style="font-size: 360%" -->
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![AIChatREPL.jl](https://hackmd.io/_uploads/B1_XHvwis.png)
https://github.com/antimon2/AIChatREPL.jl](https://github.com/antimon2/AIChatREPL.jl)
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 技術情報
+ Julia の REPL をユーザがいじれる機能を利用
+ OpenAI で公開されているAPIを利用(要:[OpenAI API KEY](https://beta.openai.com/account/api-keys))
+ 依存Pkg:[OpenAI.jl](https://github.com/rory-linehan/OpenAI.jl)、[HTTP.jl](https://github.com/JuliaWeb/HTTP.jl)、[DotEnv.jl](https://github.com/vmari/DotEnv.jl)、[ProgressMeter.jl](https://github.com/timholy/ProgressMeter.jl)
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 機能 (1)
+ 他愛もない会話
<!-- .element: style="font-size: 360%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![他愛もない会話例](https://hackmd.io/_uploads/ByN4owwij.png)
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 機能 (2)
+ 回答が有効なJuliaのコードならその場で実行
<!-- .element: style="font-size: 240%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![1からNの合計を求める関数を書いてもらった例(既知のコードとの結果比較を添えて)](https://hackmd.io/_uploads/HkQmYcwis.png)
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## QA (1)
+ これって今流行りの ChatGPT ?
+ →厳密には違う(text-davinci-003)<!-- .element: class="fragment" -->
+ →まだ実験段階なので<!-- .element: class="fragment" -->
Note:
使用しているモデルは `text-davinci-003`(GPT-3.5)
実験段階だけどソースコードは公開しているよ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## QA (2)
+ "loading..." 表示が気になる
+ →リアルタイム表示対応予定<!-- .element: class="fragment" -->
+ →まだ実験段階なので(免罪f<!-- .element: class="fragment" -->
Note:
今後ストリームによるリアルタイム取得に対応予定
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 今後の展望(野望)
+ ChatGPT 完全対応!
<!-- .element: style="font-size: 360%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![OpenAI のツイート(2023/01/17 10:33)](https://hackmd.io/_uploads/Hyr_PLroj.png)
https://twitter.com/OpenAI/status/1615160228366147585](https://twitter.com/OpenAI/status/1615160228366147585)
Note: つい先日「ChatGPTのAPI公開するよ」お知らせツイート流れてきて、
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![OpenAI ChatGPT API Waitlist](https://hackmd.io/_uploads/HJcnTLBso.png)
https://share.hsforms.com/1u4goaXwDRKC9-x9IvKno0A4sk30](https://share.hsforms.com/1u4goaXwDRKC9-x9IvKno0A4sk30)
Note: Waitlistに登録してね、APIで何をしたいか熱く語って!て言われたので
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
![OpenAI ChatGPT API Waitlist (2)](https://hackmd.io/_uploads/HJMwRUHjo.png)
↑夢を熱く語っておいた♪
Note:
Julia と統合したい、Julia のこともっと教えて育てて「~をJuliade書くには?」について適切なアドバイスをくれるようにしたい、それをREPLで自由に扱えるようにしたい!
みたいな熱い思いを書いてRequestしときました!
夢を語るだけなら良いよね??
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# まとめ
+ Julia 楽しい!
+ Julia 夢がある!
<!-- .element: style="font-size:200%" -->
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## ご清聴ありがとうございます。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
時間あまった?
<!-- .element: class="fragment" -->
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
Juliaの 書籍 を 執筆 した話<span>…<!-- .element: class="fragment" data-fragment-index="1" --></span>
===
<!-- .element: style="font-size:320%" -->
は、
<!-- .element: class="fragment" data-fragment-index="1" -->
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaTokai](https://hackmd.io/_uploads/rJMpWfrpF.png)](https://juliatokai.connpass.com/)
Note:
勉強会で話そうかなっ、と♪
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 次回:3月中旬予定
Note:
本が出版される頃に合わせて開催したい♪
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
ご清聴ありがとうございます。
Note:
ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-17T18:40:30.247Z","metaMigratedFrom":"YAML","title":"Juliaの○○を××した話","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","description":"2023/01/21 NGK2023Santimon2(後藤 俊介)","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":11469,\"del\":1144}]"}