そろそろ Julia (仮) === <!-- .element: style="font-size: 300%" --> <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> 2021/01/23 NGK2021S antimon2(後藤 俊介) Note: っ --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## お前誰よ? + 名前:後藤 俊介 + コミュニティ:**[機械学習名古屋](https://machine-learning.connpass.com/)**, **[JuliaTokai](https://juliatokai.connpass.com/)**, **[NGK2021S](https://ngk2021s.netlify.app/)**, [jl.dev](https://jldev.connpass.com/):new:, [Python東海](https://connpass.com/series/292/), … + 言語:**[Julia](https://julialang.org)**, Python, Scala(), … + ![Twitter](https://i.imgur.com/HqouMIg.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](https://twitter.com/antimon2) / ![Facebook](https://i.imgur.com/01nPd37.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://www.facebook.com/antimon2) + ![Github](https://i.imgur.com/yBKtii5.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [antimon2](https://github.com/antimon2/) / ![Qiita](https://i.imgur.com/FxHMi64.png)<!-- .element: class="plain" style="vertical-align:middle;background:transparent" --> [@antimon2](http://qiita.com/antimon2) / [<i class="fa fa-file-text"><!-- .element style="font-size:120%" --></i> @antimon2](https://hackmd.io/@antimon2) Note: 今日も Julia の話っ --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> # NGK2021S Note: NGK2021S のスタッフやってますっ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" data-transition="slide-in fade-out" --> ![LTタイムテーブル](https://i.imgur.com/ZhWnEhq.png) Note: LTタイムテーブルの… ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" data-transition="fade-in slide-out" --> ![LTタイムテーブル](https://i.imgur.com/1OkzfWA.png) Note: 発表順の抽選(シャッフル)をしましたっ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" data-transition="fade-in slide-out" --> {%gist antimon2/3ab347b4fdb3f3fdf6e1e21fa5ea69b6 %} Note: こんなコード(と言うかnotebook)で Julia で抽選しましたっ Julia ですっ --- <!-- .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)" --> [![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) ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## Julia とは?(1) + [The Julia Language](https://julialang.org) + 最新 v1.5.3(2020/11/09) + Upcoming v1.6.0-β1(2021/01/08) → 次のLTS! + LTS v1.0.5(2019/09/09) + 科学技術計算に強い! + 動作が速い!(LLVM JIT コンパイル) Note: もうすぐv1.6.0出ます! ググるときはなるべく [julialang](https://www.google.co.jp/search?q=julialang) で! ---- <!-- .slide: data-background-color="rgba(102,130,223,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%" --> Note: 触ってみた人で、こんな感想を言った人がいます。 ---- <!-- .slide: data-background-color="rgba(102,130,223,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(102,130,223,0.3)" --> ## 要するに <!-- .element: style="font-size:300%" --> + 動的言語なのに速い! + 文法も覚えやすい! + 数値計算に強い! <!-- .element: style="font-size:180%" --> Note: 機械学習とかにも持って来いっ! ---- <!-- .slide: data-background-color="rgba(102,130,223,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)" --> ## 文法・関数 をいつもなら紹介するのですが… <!-- .element: class="fragment" --> Note: 5分しかないしNGKなのでっ --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> # Julia の紹介 <span>for 名古屋<!-- .element: class="fragment" --></span> Note: 名古屋向けの 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/saT14Iq.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/exOpLxU.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/Ha31g5W.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/02/13 第9回(予) <!-- .element: style="font-size:165%" --> --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## jl.dev [![jldev.connpass.com](https://i.imgur.com/ioqwtR9.png)https://jldev.connpass.com/](https://jldev.connpass.com/) ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> + https://jldev.connpass.com/ + 隔週でもくもく会(朝会/夜会)開催 + 次回:2021/02/xx 第2回開発合宿!(予) <!-- .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)" --> [![JuliaTokai #09](https://i.imgur.com/INLMNdn.png) https://juliatokai.connpass.com/event/202413/](https://juliatokai.connpass.com/event/202413/)<!-- .element: style="font-size:0.7em" --> Note: 次回 JuliaTokai は2021/02/13っ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> + Julia 良いよ楽しいよ! <!-- .element: style="font-size:320%" --> Note: っ --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> # おまけ Note: 時間が余ったらっ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ## 機械学習名古屋 <!-- .element: style="font-size: 360%" --> Note: 姉妹勉強会の簡単な紹介っ ---- <!-- .slide: data-background="https://i.imgur.com/v8F7pzK.jpg" data-background-color="rgba(102,130,223,0.3)" --> Note: オフラインでやってた頃の勉強会の様子 ![オフラインでやってた頃の勉強会の様子](https://i.imgur.com/v8F7pzK.jpg) ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> [![https://machine-learning.connpass.com/](https://i.imgur.com/GEqDaHw.png)https://machine-learning.connpass.com/](https://machine-learning.connpass.com/)<!-- .element: style="font-size:0.7em" --> Note: 勉強会の告知・募集サイトっ! ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ### 勉強会の内容 + みんなで手を動かして何か作る + みんなやってることを発表する <!-- .element: style="font-size:150%" --> Note: 難しくないよーこわくないよー ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> [![機械学習名古屋 第27回勉強会](https://i.imgur.com/25EW4aw.png) https://machine-learning.connpass.com/event/201902/](https://machine-learning.connpass.com/event/201902/)<!-- .element: style="font-size:0.7em" --> Note: 次回(本会)は2021/02/03っ ---- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> [![機械学習名古屋 研究会 #35](https://i.imgur.com/Y623oWr.png) https://machine-learning.connpass.com/event/202294/](https://machine-learning.connpass.com/event/202294/)<!-- .element: style="font-size:0.7em" --> Note: 次回(研究会)は2021/02/18っ --- <!-- .slide: data-background-color="rgba(102,130,223,0.3)" --> ご清聴ありがとうございます。 Note: ご清聴ありがとうございますっ!
{"metaMigratedAt":"2023-06-15T18:36:57.260Z","metaMigratedFrom":"YAML","title":"そろそろ Julia (仮)","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"league\"}","contributors":"[{\"id\":\"80062a4b-8dad-49ac-95bf-848ce0686e9e\",\"add\":15874,\"del\":17897}]"}
    1316 views