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
GOTOH Shunsuke
July 08, 2023
Technology
470
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
260
JuliaでApp(仮) for JuliaTokai #23
antimon2
0
180
関数型まつりレポート for JuliaTokai #22
antimon2
0
300
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
1.6k
FP in Julia « SIDE: J » for JuliaTokai #21
antimon2
1
260
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
390
あなたの知らない(概ね知らなくても良い)Juliaの世界 for JuliaLangJa 年末 LT 大会 2024
antimon2
0
220
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
450
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
320
Other Decks in Technology
See All in Technology
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
6.9k
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
680
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
550
ホームラボ紹介
y_sera15
0
130
ブラウザ研修 2026
recruitengineers
PRO
5
800
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
450
[ChatGPT Work LT]事務作業が苦手な人のための バックオフィスの「半」自動化
chimaki_iot
0
250
AIエージェントを前提としたプラットフォーム エンジニアリング:GKEで作るAgent-Ready Golden Path
legalontechnologies
PRO
2
220
組織にどうSREを根付かせるか?〜IVRyの場合〜
abnoumaru
0
330
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
名古屋の市バスGTFS-JPデータ×スガキヤ 最寄りバス停検索をAmazon ElastiCache Serverless for Valkeyで最適化する
usanchuu
1
520
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
350
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Code Review Best Practice
trishagee
74
20k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
200
Chasing Engaging Ingredients in Design
codingconduct
0
260
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
250
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Why Our Code Smells
bkeepers
PRO
340
58k
Scaling GitHub
holman
464
140k
Six Lessons from altMBA
skipperchong
29
4.4k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to make the Groovebox
asonas
2
2.3k
A better future with KSS
kneath
240
18k
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
ご清聴ありがとうございます。