Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonのじゃないけれど 本を書いた話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
GOTOH Shunsuke
July 08, 2023
Technology
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pythonのじゃないけれど 本を書いた話
Pythonのじゃないけれど
本を書いた話
GOTOH Shunsuke
July 08, 2023
More Decks by GOTOH Shunsuke
See All by GOTOH Shunsuke
JuliaTokaiとしてはこれが最後かもしれない(仮) for NGK2026S
antimon2
0
250
JuliaでApp(仮) for JuliaTokai #23
antimon2
0
170
関数型まつりレポート for JuliaTokai #22
antimon2
0
280
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
1.5k
FP in Julia « SIDE: J » for JuliaTokai #21
antimon2
1
250
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
380
あなたの知らない(概ね知らなくても良い)Juliaの世界 for JuliaLangJa 年末 LT 大会 2024
antimon2
0
210
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
440
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
310
Other Decks in Technology
See All in Technology
FPC(フレキシブル)基板にZephyr実装してみた。
iotengineer22
0
100
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
Lightning近況報告
kozy4324
0
180
GitHub Copilot app最速の発信の裏側
tomokusaba
1
180
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
140
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.3k
不要なレビューをAIにまかせて AIコーディングの環境改善を加速した
shoota
1
220
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
410
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
530
人材育成分科会.pdf
_awache
4
300
AI駆動開発を通して感じた、 AI時代のデザイナーの役割変化
whisaiyo
4
2.3k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
211
24k
Mind Mapping
helmedeiros
PRO
1
250
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Are puppies a ranking factor?
jonoalderson
1
3.6k
Paper Plane
katiecoart
PRO
1
51k
We Are The Robots
honzajavorek
0
250
Faster Mobile Websites
deanohume
310
31k
Accessibility Awareness
sabderemane
1
140
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
How to make the Groovebox
asonas
2
2.2k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
Transcript
Pythonのじゃないけれど 本を書いた話 2023/07/08 Python東海 第43回勉強会 antimon2(後藤 俊介)
お品書き • お前誰よ? • Juliaの紹介 • 書籍を執筆しました! • 経緯 •
公開サンプルコードに JupyterLab を採用した 理由
お前誰よ?
自己紹介 • 名前:後藤 俊介 • 所属:有限会社 来栖川電算 • コミュニティ:🌟機械学習名古屋, 🌟JuliaTokai,
⭐Python東海, ⭐jl.dev, … • 言語:Julia, Python, Scala(勉強中), … • SNS等: (@antimon2) • SNS等(2): (@antimon2.jl) • Julia 本 執筆しました!🆕
https://www.kurusugawa.jp
https://twitter.com/antimon2/status/1632998963505938432
簡単な Juliaの紹介
None
Julia とは?(1) • The Julia Language • 最新 v1.9.2(2023/07/05) ◦
LTS:v1.6.7(2022/07/19) ◦ 次期:v1.10.0-α1(2023/07/06) • 科学技術計算に強い! • 動作が速い!(LLVM JIT コンパイル)
Julia とは?(2) • Rのように中身がぐちゃぐちゃでなく、 • Rubyのように遅くなく、 • Lispのように原始的またはエレファントでなく、 • Prologのように変態的なところはなく、
• Javaのように硬すぎることはなく、 • Haskellのように抽象的すぎない ほどよい言語である 引用元:http://www.slideshare.net/Nikoriks/julia-28059489/8
Julia とは?(3) • C のように高速だけど、 Ruby のようなダイナミズムを併せ持っている • Lisp のような真のマクロを持ちながら、
MATLAB のような直感的な数式表現もできる • Python のように総合的なプログラミングができて、 R のように統計処理も得意で、 Perl のように文字列処理もできて、 MATLAB のように線形代数もできて、 shell のように複数のプログラムを組み合わせることもできる • 超初心者にも習得は容易でありながら、 ハッカーの満足にも応えられる • インタラクティブな動作環境もあって、コンパイルもできる (Why We Created Julia から抜粋・私訳)
要するに • 動的言語なのに速い! • 文法も覚えやすい! • 数値計算に強い!
Julia の主な特徴 • 多重ディスパッチ • 動的型システム • 並行・並列処理、コルーチン • 組込パッケージマネージャ
2020/07/10
発端 • 突然編集者の方から Twitter DM が届く • Qiita や Twitter
で Julia の 記事書いたり質問に答えていた のが目にとまった(らしい)
企画概要(当初の先方からの提案) • Juliaの入門的解説書。日本語でまとまった情報があまり提供されていない Juliaの仕様や特徴を理解してもらう。 • 前半ではリファレンス的に基本的な文法の解説をして、Juliaの仕様やコンセプ トを理解してもらう。 • 後半では数値計算や機械学習などをJuliaの長所を活かせる活用例を題材に、 効率的・実践的なコードの書き方を解説する。
• 「実は標準関数を使えば一発で解決できる問題に、面倒臭い書き方で対応して いる」ということがよくあるので、書籍全体を通じてそうした 誤解を解く知識 を随所に織り交ぜていく。
こちらからの逆提案 • Juliaの入門的解説書。日本語でまとまった情報があまり提供されてい ないJuliaの仕様や特徴を理解してもらう。(ここまでは同意) • 3部構成: ◦ 入門編:Juliaの仕様やコンセプトを理解してもらい、基本的な文法 の解説をして「Julia を使える」ようになってもらう
◦ 基本編:Julia の標準ライブラリ関数や固有の機能を詳解(>紹介) し、Julia を Juliaらしく使いこなす ことを目指す ◦ 実践編:実際の応用として執筆時点でホットな話題に着目し、より具 体的で実用的な実践への発展を目標とする
なんやかんや • 2023/03/15 刊行! https://twitter.com/antimon2/status/1635765451220459520
本日の本題はここから…
サンプルコード公開 • 刊行直前頃に、作り貯 めておいた Jupyter Notebook 形式のサ ンプルコードを Github で公開
https://github.com/antimon2/JuliaBook2023Samples.jl
サンプルコード公開 • 刊行直前頃に、作り貯 めておいた Jupyter Notebook 形式のサ ンプルコードを Github で公開
• (『“py”がつく』実績解除) https://github.com/antimon2/JuliaBook2023Samples.jl
JupyterLab • ご存じ Python ベースの Notebook 環境(IDE) • 言語カーネルを追加することで Python
以外の言語も扱える • もちろん Julia 用のカーネルも 存在(IJulia.jl) • てか Jupyter は 「Julia」+「Python」+「R」 から命名されたのは有名な話 ◦ “t” と “r” の間の “e” はどこから来 たの? 突っ込むところまでがセット w https://jupyter.org/
Pluto.jl • Pure Julia の Notebook 環 境 • シンプル・軽量を謳っている
• Julia の本だからこっちでも良 かったんじゃないの? ◦ というツッコミが入る可能性も当然 あったのですが… https://plutojl.org/
公開サンプルコードに JupyterLab を 採用した理由
JupyterLab vs Pluto.jl (1) JupyterLab (Jupyter Notebook) • セルごとの実行もできる(REPLと同じ感 覚)し、一括で実行もできる
• セルタイプを「Code」「Markdown」など と切り替えができる • 多機能で、多くの機能がキーボードショート カットでも操作できる 個人的にはセルのコピー機能が重宝してい る • ファイル形式は .ipynb 形式(各種メタ情報 や出力結果なども保持するJSON形式) Pluto.jl • セルの変更が、依存する他のセルに影響し 自動で再実行される (ノートブックを開いた直後は全て再実行が 走るので重い処理が書いてあると重い) • セルはJuliaの有効な式が入力できるだけ、 ただし `md”~”` で markdown を入力 できる(markdown文字列オブジェクト) • シンプルすぎてセルのコピー機能すらない (自分が知らないだけかもしれない…) • ファイル形式は .jl 形式(普通のJuliaソー スファイル形式、メタ情報はコメントとして 埋め込まれる) 基本機能の比較
JupyterLab vs Pluto.jl (2) JupyterLab (Jupyter Notebook) • セルの実行結果が特殊なオブジェクトの場 合は適切なレンダリング(例:画像(グラフプ
ロット含む)、表形式、Markdown等) • セルの先頭文字によって特殊入力(“?” で ヘルプ、“]” でパッケージモード等) • 『REPL でできることはほぼなんでもでき る』環境 ◦ module 定義できる ◦ ソフトスコープ(だったと思う、要確認) ◦ 複数行入力等 Pluto.jl • セルの実行結果が特殊なオブジェクトの場 合は適切なレンダリング(例:画像(グラフプ ロット含む)、表形式、Markdown等) • 特殊入力システムはない(“using XXX” 等 としたときそのパッケージが未導入なら勝 手に導入してくれる便利機能はあり) • 色々制限あり: ◦ module 定義できない ◦ ハードスコープ(だったと思う、要確認) ◦ 複数行入力したかったら明示的にブロック (begin~end)を記述する必要あり Julia の実行環境としての機能比較
JupyterLab vs Pluto.jl (3) • module が定義できない ◦ Julia の入門書として「module」の定義は当然必要になってくるがそれがサン
プルコードとして提供できない • 標準出力が直感的に表示できない(できなかった) ◦ 執筆時点 ◦ こちらは昨年辺りのバージョンで改善され普通に `println()` の結果がセル の下に表示されるようになった • REPL との感覚があまりに違いすぎる ◦ 書籍内のコードはほぼ全て「REPL に打ち込んで動かしてみる」という体で記述 していたのでそれに全く合わない Pluto.jl を採用しなかった決定的な理由
JupyterLab vs Pluto.jl (4) • REPL との感覚の差があまりない ◦ 書籍内のコードはほぼ全て「REPL に打ち込んで動かしてみる」という体で記述
していたのでそれとかなりよくマッチする • プレイグラウンドも充実している ◦ MyBinder、Google Colab、Studio Lab 等でオンラインで実行できる ◦ MyBinder と Studio Lab についてはリポジトリトップに launch ボタンも ◦ (なお Pluto.jl 形式のノートブックも MyBinder で実行できる) • REPL で実行する用の .jl ファイルも簡単に出力できた ◦ jupytext を利用 JupyterLab を採用した建設的な理由
結論 • Jupyter notebook (JupyterLab) やっぱよくできてる • 今回の要件には Jupyter notebook
形式が最適
補足(弁護) • Pluto.jl も「実験結果の共有」には便利だよ ◦ ノートブック編集画面の見た目そのままHTML化 ◦ HTML 形式で出力すると 元の
.jl ファイル (Pluto.jl ノートブック形式)のダウンロードもでき る • 要は目的による使い分け・棲み分け
まとめ
まとめ • Jupyter 良い! • Julia も良いよ!
おまけ
数学と物理における Juliaの活用 • 7/10-12 九州大学(福岡)に 行ってきます • Julia のチュートリアル講演して きます(3コマのうち後ろ2コマ、
約2時間(!)) • オンライン視聴できる(まだ申込 受け付けている)そうなので、ご 興味があればぜひ! https://akio-tomiya.github.io/julia_imi_workshop2023/
実践Julia入門 • 2023/03/15 刊行! • ご興味があればぜひ! https://twitter.com/antimon2/status/1635765451220459520
ご清聴ありがとうございます。