そろそろ Julia <span>rev.OSC2021Nagoya<!-- .element: style="font-size: 60%" --></span>
===
<!-- .element: style="font-size: 320%" -->
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
2021/05/29 Python東海/JuliaTokaiミニ合同勉強会
@ OSC2021 Online/Nagoya
antimon2(後藤 俊介)
Note:
Julia の紹介っ!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# お前誰y?(ry
Note:
コミュニティ紹介で自己紹介もしたのでこちらでは省略っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
1年前
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![JuliaTokai の紹介](https://i.imgur.com/QxanJT3.png)https://hackmd.io/@antimon2/rkiUR0siL](https://hackmd.io/@antimon2/rkiUR0siL)
Note:
このような2本のLTを…
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
[![Julia による 衛生的な生活](https://i.imgur.com/CUPaX0A.png)https://hackmd.io/@antimon2/SyyqyG8iI](https://hackmd.io/@antimon2/SyyqyG8iI)
Note:
このような2本のLTをお届けいたしました。
今回は…
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
そろそろみんな Julia のことちゃんと知って欲しい
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 型システム
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
```graphviz
digraph TypeTree {
nodesep=1.0
node [fontname=Courier,shape=box,style=filled, fillcolor=gray95]
edge [arrowsize=0.8]
edge [arrowtail="empty" dir=back]
Any -> AbstractString
Any -> Number
Any -> _others
_others [label="...",shape=none,style=none,fillcolor=transparent]
AbstractString -> SomeStringSubtypes
AbstractString -> String
SomeStringSubtypes [label="...",shape=none,style=none,fillcolor=transparent]
Number -> Complex
Number -> Real
Real -> AbstractFloat
Real -> AbstractIrrational
Real -> Integer
Real -> Rational
AbstractFloat -> x1
x1 [label="...",shape=none,style=none,fillcolor=transparent]
AbstractFloat -> Float64
Integer -> Bool
Bool [label="...",shape=none,style=none,fillcolor=transparent]
Integer -> Signed
Signed -> Int
AbstractIrrational -> x2
x2 [label="...",shape=none,style=none,fillcolor=transparent]
Integer -> Unsigned
Unsigned -> x4
x4 [label="...",shape=none,style=none,fillcolor=transparent]
Signed -> x5
x5 [label="...",shape=none,style=none,fillcolor=transparent]
}
```
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ Nominative Typing
+ Nominal Subtyping
+ 型階層
<!-- .element: style="font-size:240%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
```julia
abstract type Point{T<:Real} end
struct Point2D{T} <: Point{T}
x::T
y::T
end
mutable struct MPoint2D{T} <: Point{T}
x::T
y::T
end
```
<!-- .element: style="font-size:70%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ Parametric Type
+ 型制約
+ あと型レベルで immutable/mutable
<!-- .element: style="font-size:244%" -->
Note:
Parametric Type は他言語の総称型(ジェネリクス)相当
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## 多重ディスパッチ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
```julia
julia> double(x::Number) = 2x
double (generic function with 1 method)
julia> double(x::AbstractString) = x^2
double (generic function with 2 methods)
julia> double(π)
6.283185307179586
julia> double("😄")
"😄😄"
```
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 関数を多重定義
+ 引数に合わせて実装実体を選んで実行
<!-- .element: style="font-size:244%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
```julia
julia> @code_typed double(1)
CodeInfo(
1 ─ %1 = Base.mul_int(2, x)::Int64
└── return %1
) => Int64
julia> @code_typed double(9.9)
CodeInfo(
1 ─ %1 = Base.sitofp(Float64, 2)::Float64
│ %2 = Base.mul_float(%1, x)::Float64
└── return %2
) => Float64
```
<!-- .element: style="font-size:66%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
```julia
julia> @code_typed double(π)
CodeInfo(
1 ─ return 6.283185307179586
) => Float64
```
<!-- .element: style="font-size:66%" -->
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ 型推論
+ シグニチャの違いによるコード生成
+ 徹底的な最適化
<!-- .element: style="font-size:244%" -->
Note:
+ 引数の型(シグニチャ)の違いで生成されるコードも変わる
+ 可能ならJITコンパイル前に既にインライン化
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
そろそろみんな Julia のことを
もっと知りたくなってきましたよね?
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# Julia の情報収集
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## julialang.org
[![julialang.org](https://i.imgur.com/sFy1mxA.png)https://julialang.org](https://julialang.org)
Note:
本家サイトっ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://julialang.org
+ 公式サイト
+ バイナリ配布・ドキュメント・パッケージライブラリ・プレイグラウンド・その他
<!-- .element: style="font-size:151%" -->
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## Discourse
[![discourse.julialang.org](https://i.imgur.com/xBU8ZIL.png)https://discourse.julialang.org](https://discourse.julialang.org/)
Note:
っ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://discourse.julialang.org
+ 公式アナウンス
+ Q&A
+ パッケージ公開情報
<!-- .element: style="font-size:160%" -->
Note:
新バージョン公開とうの公式アナウンスもここで。
あとユーザが「パッケージ公開したから見てね」という投稿も。
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## JuliaCon
[![JuliaCon 2021](https://i.imgur.com/tiOFXmO.png)https://juliacon.org/2021](https://juliacon.org/2021/)
Note:
Julia のカンファレンスっ
毎年7月末頃に開催
昨年からオンライン開催で無料!
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://juliacon.org/2021
+ Julia のカンファレンス
+ 毎年7月末頃に開催
+ 昨年からオンライン開催で無料!
<!-- .element: style="font-size:165%" -->
Note:
Julia のカンファレンスっ
毎年7月末頃に開催
昨年からオンライン開催で無料!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## JuliaTokyo
[![juliatokyo.connpass.com](https://i.imgur.com/t84djGB.png)https://juliatokyo.connpass.com](https://juliatokyo.connpass.com/)
Note:
日本で Julia コミュニティと言えばっ
ここ1年オフライン/オンラインどちらも勉強会開かれていませんがJuliaConとの連携はしている
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://juliatokyo.connpass.com
+ 日本の元祖 Julia コミュニティ
+ コロナ禍でミーティングなし
+ JuliaCon とは提携している
<!-- .element: style="font-size:150%" -->
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## JuliaTokai
[![juliatokai.connpass.com](https://i.imgur.com/NxjomcR.png)https://juliatokai.connpass.com](https://juliatokai.connpass.com/)
Note:
主催勉強会コミュニティ♪
年4回、ほぼ定期的に開催。
かなり初期からオフライン+オンラインで開催、ここ1年は完全オンライン開催♪
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://juliatokai.connpass.com
+ 私の主催コミュニティ
+ 年4回定期的開催
+ 完全オンライン
+ 次回:2021/08/XX 第11回(予)
<!-- .element: style="font-size:165%" -->
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## jl.dev
[![jldev.connpass.com](https://i.imgur.com/ZbNsJvi.png)https://jldev.connpass.com/](https://jldev.connpass.com/)
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ https://jldev.connpass.com/
+ 開発合宿(年数回開催)
+ 隔週でもくもく会(朝会/夜会)開催
<!-- .element: style="font-size:165%" -->
Note:
とにかくJulia で開発したい! というユーザが立ち上げたコミュニティ。
隔週でもくもく会(朝会/夜会)開催(後藤も毎回参加)
たまに開発合宿(1dayハッカソン)開催
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
## その他
+ [Julia - Qiita](https://qiita.com/tags/julia)
+ [Juliaの記事一覧 | Zenn](https://zenn.dev/topics/julia?order=latest)
+ 日本語書籍:[1から始める Juliaプログラミング](https://www.coronasha.co.jp/np/isbn/9784339029055/)
+ twitter: [#julialang](https://twitter.com/hashtag/julialang)/[#Julia言語](https://twitter.com/hashtag/Julia%E8%A8%80%E8%AA%9E)
Note:
日本語の情報としてまぁこんなのもありますよ程度
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# まとめ
----
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
+ Julia 楽しい!
+ JuliaTokai 楽しい!
<!-- .element: style="font-size:200%" -->
Note:
っ
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
ご清聴ありがとうございます。
Note:
ご清聴ありがとうございますっ!
---
<!-- .slide: data-background-color="rgba(102,130,223,0.3)" -->
# おまけ
----
<!-- .slide: data-background-color="rgba(204,102,51,0.3)" -->
## 機械学習名古屋
----
<!-- .slide: data-background-color="rgba(204,102,51,0.3)" -->
[![機械学習名古屋 グループページ - connpass](https://i.imgur.com/WhbqIUq.png)https://machine-learning.connpass.com/](https://machine-learning.connpass.com/)<!-- .element: style="font-size: 80%" -->
Note:
姉妹勉強会っ
{"metaMigratedAt":"2023-06-16T00:51:27.568Z","metaMigratedFrom":"YAML","title":"そろそろ Julia <span>rev.OSC2021Nagoya<!-- .element: style=\"font-size: 60%\" --></span>","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":16908,\"del\":8378}]"}