Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonのじゃないけれど 本を書いた話
Search
GOTOH Shunsuke
July 08, 2023
Technology
0
430
Pythonのじゃないけれど 本を書いた話
Pythonのじゃないけれど
本を書いた話
GOTOH Shunsuke
July 08, 2023
Tweet
Share
More Decks by GOTOH Shunsuke
See All by GOTOH Shunsuke
JuliaでApp(仮) for JuliaTokai #23
antimon2
0
110
関数型まつりレポート for JuliaTokai #22
antimon2
0
230
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
1.3k
FP in Julia « SIDE: J » for JuliaTokai #21
antimon2
1
190
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
330
あなたの知らない(概ね知らなくても良い)Juliaの世界 for JuliaLangJa 年末 LT 大会 2024
antimon2
0
160
Julia 新 LTS v1.10 解説 for JuliaTokai #20
antimon2
1
360
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
1
270
Julia クイズ ~API編~ for JuliaTokai #19
antimon2
1
220
Other Decks in Technology
See All in Technology
半年で、AIゼロ知識から AI中心開発組織の変革担当に至るまで
rfdnxbro
0
110
WordPress は終わったのか ~今のWordPress の制作手法ってなにがあんねん?~ / Is WordPress Over? How We Build with WordPress Today
tbshiki
2
860
モダンデータスタックの理想と現実の間で~1.3億人Vポイントデータ基盤の現在地とこれから~
taromatsui_cccmkhd
1
100
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
190
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
140
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
1.4k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
7
1.6k
2025-12-18_AI駆動開発推進プロジェクト運営について / AIDD-Promotion project management
yayoi_dd
0
140
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
120
AIの長期記憶と短期記憶の違いについてAgentCoreを例に深掘ってみた
yakumo
4
460
Microsoft Agent 365 についてゆっくりじっくり理解する!
skmkzyk
0
410
AI との良い付き合い方を僕らは誰も知らない
asei
0
170
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
860
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Amusing Abliteration
ianozsvald
0
63
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandezseo
1
1.3k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
39
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
25
Odyssey Design
rkendrick25
PRO
0
420
sira's awesome portfolio website redesign presentation
elsirapls
0
87
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
ご清聴ありがとうございます。