TECH PLAY

実践Julia入門

3,960円 (税込)

楽天

実践Julia入門

書籍情報

発売日:

著者/編集:後藤 俊介

出版社:技術評論社

発行形態:単行本

書籍説明

内容紹介

文法の基礎から数値計算、データ解析、機械学習の実践例まで総合的な開発に耐えうる“貪欲”な言語の特徴を詳解。

目次

【入門編】 #第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関連

著者情報

後藤 俊介

後藤俊介 有限会社来栖川電算所属のエンジニア。JuliaTokai、機械学習名古屋などのコミュニティ活動に携わり、Juliaについての情報を発信している。 Twitter ID:@antimon2

後藤, 俊介

後藤俊介

後藤俊介 有限会社来栖川電算所属のエンジニア。JuliaTokai、機械学習名古屋などのコミュニティ活動に携わり、Juliaについての情報を発信している。 Twitter ID:@antimon2