『実践Julia入門』
https://gyazo.com/909f623d9cd27e7bd72750380edeefdb
サンプルコードが利用できる
REPLにコピペして使うことが想定されている
プロジェクト環境をactivateして起動する
$ julia --project=@.
【入門編】
第1章 Juliaのインストールと開発
1-1. Juliaの特徴
1-1-1. Juliaは高速!
1-1-2. Juliaは動的!
1-1-3. Juliaは動的型付け!
1-1-4. Juliaは多重ディスパッチ!
1-1-5. 直感的な記述!
1-1-6. 真のマクロ!
1-1-7. 並行・並列プログラミング!
1-1-8. 組み込みパッケージマネージャ!
1-2. Juliaのインストール
1-2-1. Juliaの公式バイナリをインストールする
Windows (Windows10,Windows11)
macOS (x86,ARM)
Linux
1-2-2. juliaupを利用したインストール
juliaupのインストール(Windows10,Windows11)
juliaupのインストール(Linux,macOS等)
juliaupによる Juliaのインストール・更新(Windows/Linux/macOS共通)
コラム. 安定版とLTS版
1-3. Juliaを REPLで使用する
1-3-1. Julia モード
1-3-2. ヘルプモード
1-3-3. シェルモード
1-3-4. パッケージモード
1-3-5. 履歴検索機能
1-4. Juliaを JupyterLabで使用する
1-4-1. JupyterLabおよび IJuliaのインストール
IJuliaを利用して JupyterLabをインストールする
JupyterLabを Pythonのパッケージマネージャからインストールする
デスクトップアプリとしてインストールする
Julia カーネルを追加する
1-4-2. JupyterLabによる Juliaの実験
1-4-3. 各種クラウドサービス(ノートブック環境)での Juliaの利用
コラム. Pluto.jl
1-5. Juliaをエディタで使用する
1-5-1. Visual Studio Code(VSCode)とJuliaプラグインの導入
第2章 Juliaの基本文法
2-1. リテラル
2-1-1. 数値リテラル
整数値
浮動小数点数値
有理数/複素数
2-1-2. 文字リテラル/文字列リテラル
文字
文字列
2-1-3. 正規表現リテラル
2-1-4. 非標準文字列リテラル
2-1-5. 範囲リテラル
2-1-6. 配列リテラル
ベクトル(1次元配列)
行列(2次元配列)
多次元配列(Julia v1.7以降)
ベクトル・行列の結合
多次元配列の結合(Julia v1.7以降)
2-1-7. タプルリテラル/名前付きタプルリテラル
2-1-8. その他のリテラル
2-2. 変数/定数
コラム. Juliaの定数は実は変更できる
2-3. 演算子
2-3-1. 算術演算子
除算演算子
冪乗演算子
2-3-2. ビット演算子
2-3-3. 論理演算子
2-3-4. 文字列操作演算子
2-3-5. 代入演算子
2-3-6. 比較演算子
同値演算子
等価演算子
包含演算子
比較演算子の連鎖
2-3-7. その他の演算子
2-3-8. 演算子の優先順位
コラム. 演算子に使用できるUnicode文字
2-4. 関数
2-4-1. 関数呼び出し
関数呼び出しの基本
キーワード引数
引数展開
2-4-2. 関数定義
関数定義の基本
無名関数
関数の多重定義
可変長引数
オプショナル引数/キーワード引数
型アノテーション
return文
2-4-3. 関数適用演算子
2-5. 制御構文
2-5-1. 条件分岐
2-5-2. 繰り返し
2-5-3. 例外処理
2-6. その他の構文
2-6-1. 内包表記
2-6-2. ドット構文
2-6-3. Doブロック構文
2-6-4. beginブロックとletブロック
2-7. 型の基本
2-7-1. プリミティブ型
プリミティブ整数型
プリミティブ浮動小数点数型
その他の標準プリミティブ型
2-7-2. 複合型
2-7-3. コレクション型
配列
辞書
集合
タプル/名前付きタプル
2-7-4. 文字列型
2-7-5. 型アノテーション
2-8. モジュール
2-8-1. importとusing
2-8-2. 標準モジュールとモジュールのネスト
2-8-3. モジュールの定義
【基本編】
第3章 Juliaの標準ライブラリ関数
3-1. 便利な標準関数たち
3-1-1. 演算系(1) 除算・剰余算系
整数除算関数
整数剰余算関数
整数除算・剰余算複合関数
値域を指定した整数剰余算関数と整数除算関数
整数除算・剰余算関数についての補足
コラム. mod1()関数の使い途
その他の除算・剰余算関連関数
3-1-2. 演算系(2) 結合演算
積和演算
冪剰余演算
3-1-3. 演算系(3) その他の演算系関数
3-1-4. 数学系(1) 三角関数,指数関数,対数関数
3-1-5. 数学系(2) その他の数学関数
3-1-6. 文字列関連関数
文字・文字列情報取得関数・演算子
文字・文字列比較関数・演算子
文字列操作関数・演算子
文字列検索・置換関数
Juliaの正規表現
パターンに指定出来るもの
3-1-7. 配列・集合演算
コレクション情報取得関数・演算子
配列関連関数・演算子(1) 配列生成関連
配列関連関数・演算子(2) 配列加工・更新
コラム. 破壊的操作
配列関連関数・演算子(3) ベクトル・行列関連
配列関連関数・演算子(4) デック(両端キュー)
配列関連関数・演算子(5) 集計・畳み込み関連関数
配列関連関数・演算子(6) 検索関連関数
辞書関連関数
集合関連関数・演算子
タプル・名前付きタプル関連関数
3-1-8. その他「あると便利」がある関数
3-1-9. 演算子は関数
3-2. 標準ライブラリ
3-2-1. Printf
コラム. @printfはなぜマクロ?
3-2-2. Dates
3-2-3. Statistics
3-2-4. LinearAlgebra
3-3. 関数・引数の組合せ
3-3-1. 文字列→数値変換
3-3-2. 数値の丸め処理
3-3-3. all() / any()
3-3-4. 引数にジェネレータ式を指定出来るその他の例
第4章 型システム
4-1. Juliaの型システムの概要
4-2. 公称型システムとサブタイピング
4-2-1. 公称型システム
4-2-2. 基本型と派生型
4-2-3. 型階層
コラム. 参考:公称型ではない型システム
4-2-4. 抽象型と具象型
4-2-5. Any型
4-3. パラメトリック型
4-3-1. パラメトリック型
4-3-2. 型パラメータに指定出来るもの
4-3-3. パラメトリック型のサブタイピング
4-3-4. UnionAll型
4-3-5. パラメトリック抽象型
4-4. 型制約
4-4-1. 型制約とは
4-4-2. 制約の種類
4-4-3. 型制約とサブタイピング
4-5. ユーザ定義型
4-5-1. ユーザによる型の定義
4-5-2. コンストラクタ定義
4-6. 特殊な型
4-6-1. Tuple型・NamedTuple型
4-6-2. Union型
4-6-3. ボトム型
4-6-4. シングルトン型
4-6-5. Type{T}型セレクタ
4-6-6. 型エイリアス
第5章 多重ディスパッチ
5-1. 多重ディスパッチとは?
5-2. 多重定義
5-2-1. 関数の定義(おさらい)
5-2-2. 型シグニチャ
5-2-3. 実例
5-2-4. メソッドの曖昧さの解決
コラム. キーワード引数と多重ディスパッチ
5-3. ポリモーフィズム
5-3-1. Juliaのポリモーフィズム
コラム. Juliaと部分型多相
5-3-2. 実例
5-4. 演算子オーバーロード
5-4-1. 演算子オーバーロードも多重ディスパッチ
5-4-2. 実例
5-4-3. 型昇格ルール
5-5. 糖衣構文
5-5-1. 糖衣構文(の多く)も多重ディスパッチ
5-5-2. 例
例1. インデクシング関連
例2. プロパティ
例3. 後置演算子 '~
5-6. Holy トレイト
5-6-1. Holy トレイトとは?
5-6-2. 実例: IndexStyle
5-7. その他の実用例
5-7-1. sort()のアルゴリズム指定
5-7-2. Val{N}によるディスパッチ
第6章 イテレーション
6-1. Juliaのイテレーションの仕組み
6-1-1. イテレーションも糖衣構文
6-1-2. iterate()関数
6-1-3. Base.IteratorSizeと Base.IteratorEltype
Base.IteratorSize
Base.IteratorEltype
6-2. イテレーションプロトコルの実装
6-2-1. サイズが決まっているパターン
例1. 配列( AbstractArray )の派生型とする場合(推奨)
例2. 配列( AbstractArray )の派生型としない場合
6-2-2. 長さが不定のパターン
例. コラッツの予想
その他の例
6-2-3. 無限列挙
例. フィボナッチ数列
6-3. Iteratorsサブモジュール
コラム. Iterators.~のイテレータ型とそのトレイト実装
第7章 ブロードキャスティング
7-1. ブロードキャスティングとは?
7-1-1. ドット構文(おさらい)
7-1-2. ブロードキャスティング
7-1-3. @.マクロ
7-1-4. ブロードキャスティングの特徴
7-2. ブロードキャスティングの実装
7-2-1. ドット構文も糖衣構文
7-2-2. ブロードキャスティングの仕組み
Broadcast.broadcasted()と Broadcast.materialize()
Broadcast.broadcastable()
Broadcast.BroadcastStyle
7-3. ブロードキャスティングの適用
実例(1) 配列の派生型
実例(2) イテレーションプロトコルを実装した型
コラム. もっと柔軟なブロードキャスティング計算適用へのヒント
第8章 メタプログラミング
8-1. 用語の説明・おさらい
8-2. メタプログラミングとは?
8-3. Expr型とシンボル
8-3-1. AST
8-3-2. Expr型
8-3-3. シンボル
8-3-4. QuoteNode
8-4. 解析と評価
8-4-1. Meta.parse()
8-4-2. eval()
8-4-3. 式展開
8-4-4. コードの動的生成
8-5. マクロ
8-5-1. Juliaのマクロ呼び出し
8-5-2. マクロの定義
8-5-3. マクロの動作原理
8-5-4. 衛生的なマクロ
8-5-5. 実例
8-5-6. 非標準文字列リテラルとコマンドリテラル
8-6. 生成関数
8-6-1. 生成関数 (Generated Function) とは
8-6-2. 生成関数の特徴と注意点
8-6-3. 実例
第9章 並行・並列処理
9-1. タスクとチャネル
9-1-1. タスク
9-1-2. 通知
9-1-3. チャネル
9-1-4. タスク・チャネル による並行処理
コラム. ネット検索の例が並行動作する理由
9-2. スレッド
9-2-1. Juliaでスレッドを利用する
9-2-2. スレッドの基本
Threads.@threadsマクロ
Threads.@spawnマクロ
Threads.@threadsと Threads.@spawnの使い分け
Channel(spawn=true)
Threads.foreach()
9-2-3. 実用例
ソートアルゴリズムの並列化
Iterators.mapのマルチスレッド化
9-2-4. スレッドセーフ
Threads.@atomicマクロ(Julia v1.7以降のみ)
ロック機構による排他制御(1)
ロック機構による排他制御(2)
コラム. デッドロック
9-3. マルチプロセス
9-3-1. Juliaのマルチプロセシング
9-3-2. マルチプロセスの基本
@everywhere
remotecall()
pmap()
RemoteChannel
SharedArray
@distributed
コラム. 分散処理
第10章 パッケージマネージャ
10-1. Juliaのパッケージマネージャ
10-1-1. REPLのパッケージモード
10-1-2. Project.toml / Manifest.toml
10-1-3. Pkg標準ライブラリ
コラム. Juliaのパッケージ管理の単位
10-2. 基本的な使い方
パッケージの追加・更新・削除
パッケージの固定・固定解除,開発モード・開発モード解除
その他のパッケージ関連コマンド
パッケージレジストリ関連コマンド
10-3. 環境の管理
10-3-1. 環境(仮想環境)
10-3-2. プロジェクト
10-3-3. パッケージディレクトリ
10-3-4. パッケージディレクトリの共有・公開
10-4. パッケージ開発の基本
10-4-1. PkgTemplates.jlによるパッケージディレクトリの生成
10-4-2. 構成ディレクトリ・ファイルについての補足
テストの追加
パッケージのビルドフェーズの追加
10-4-3. 公式パッケージ化のヒント
コラム. JupyterLab上での操作
【実践編】
第11章 数値計算
11-1. Juliaで数値計算
11-2. NLsolve.jlによる非線形方程式の求解
11-3. DifferentialEquations.jlによる常微分方程式の数値的解法
11-4. その他の外部パッケージ情報
数値計算全般
最適化関連
微分方程式関連
その他
第12章 データ解析
12-1. Juliaでデータ解析
12-2. 基本的な道具の使い方
12-2-1. 可視化(データプロット)の基本
コラム. Plots.jlのレシピ機能
12-2-2. データフレームの基本
12-3. 実例:ネット上に公開されているデータの読み込みと簡単な解析
12-4. 発展的な情報
統計・データ解析全般
データプロット関連
データフレーム・データ操作関連
13章 機械学習
13-1. Juliaで機械学習
13-2. MLJ.jl
13-3. Flux.jl
13-4. 発展的な情報
機械学習全般
深層学習(Deep Learning)関連
MLJ.jl関連
Flux.jl関連