書店員向け情報 HELP
1から始める Juliaプログラミング
- 初版年月日
- 2020年4月17日
- 書店発売日
- 2020年3月27日
- 登録日
- 2020年2月14日
- 最終更新日
- 2020年3月19日
紹介
「Pythonのように書けて,Cのように動く」新しいプログラミング言語Juliaの基本的な文法や使い方から,実践的な内容として,標準ライブラリには含まれない数値計算やデータの可視化などのパッケージの活用まで解説する。
◆対象者◆
* Juliaに興味を持ち,初めて触れるプログラミング学習者
* 科学技術計算を高速かつ手軽に行いたい学生や研究者
◆書籍の特徴◆
Juliaは2012年に開発版が公開され,2018年に安定版のバージョン1.0がリリースされた新しいプログラミング言語である。JuliaはPythonやRなどのスクリプト言語のように手軽に使用できながら,Cなどの高速なプログラミング言語にも匹敵する実行速度をもち,科学技術計算分野を中心に大きな注目を集めている。2019年には,米国の工業・応用数学に関する学会であるSIAM(Society for Industrial and Applied Mathematics)が4年ごとに選ぶJ. H. Wilkinson賞をJulia開発者らが受賞し,英国の科学誌NatureではJuliaの特集記事も組まれた。Juliaのダウンロード数も同年大きく数を伸ばし,人気は今後も高まっていくものと考えられる。
このように欧米ではJuliaが注目を集め,関連書籍が多数出版されている一方で,2020年初めの時点では,日本語で書かれたJuliaの書籍はほとんど出版されておらず,インターネット上でもJuliaを体系的に解説する日本語の資料は見つからない。本書は,Juliaを最初期から使用してきた二人の著者による,Julia初学者に向けた解説書である。内容はJuliaの初歩から実践的なテクニックまでをコンパクトにまとめている。まず1章でJuliaのセットアップと実行の仕方を説明し,2章では基本構文を始めとして,関数・データ型・メタプログラミング・パッケージなど,基礎的な言語機能を解説する。3章では,線形代数・入出力・PythonやRとの連携・可視化など,ライブラリの実用的な使い方を見る。最後の4章では,Juliaのプログラムを高速化するのに必要なプロファイリングの方法と最適化のポイントを確認する。
本書を読むに当たり,初歩的なコンピュータ操作の知識があれば十分ではあるが,PythonやMATLABなど,他のプログラミング言語の知識があれば大いに役立つだろう。特にMATLABやGNU Octaveとは構文的に共通する部分が多いので,Juliaの習得にかかるコストは低くなる。プログラミング学習者は,自分の使うプログラミング言語の不足を補うために本書を通じてJuliaを学習すると良いだろう。また,数値計算や機械学習などの科学技術計算を高速かつ手軽に行いたいと考えている学生や研究者には是非ともJuliaを試してほしい。本書はそのような読者にも大いに役立つと信じている。
目次
1.Julia入門
1.1 次世代のプログラミング言語Julia
1.1.1 Juliaとは
1.1.2 本書の構成
1.1.3 なぜJuliaが必要なのか?
1.2 インストール
1.2.1 REPL
1.2.2 Jupyter Notebook
1.2.3 エディタとIDE
1.3 Juliaの情報
1.3.1 Julia公式ページ
1.3.2 Juliaのソースコード
1.3.3 Julia Discourse
1.3.4 JuliaCon
1.3.5 JuliaTokyo
2.Juliaの言語機能
2.1 Juliaの基本
2.1.1 変数
2.1.2 プリミティブ型
2.1.3 任意精度演算
2.1.4 定数
2.1.5 基本的な演算子
2.1.6 更新演算子
2.1.7 複素数
2.1.8 文字列
2.1.9 Unicode文字列
2.1.10 文字列の関数
2.1.11 正規表現
2.2 制御構文
2.2.1 条件評価
2.2.2 短絡評価
2.2.3 ループ
2.2.4 try/catch/finally
2.3 関数
2.3.1 可変長引数
2.3.2 オプショナル引数
2.3.3 キーワード引数
2.3.4 匿名関数
2.4 型
2.4.1 型の宣言
2.4.2 型の階層関係
2.4.3 Nothing型
2.4.4 複合型
2.4.5 Union型
2.4.6 パラメトリック型
2.4.7 パラメトリック型の階層関係
2.4.8 抽象型のパラメトリック型
2.5 コレクション
2.5.1 タプル
2.5.2 名前付きタプル
2.5.3 リスト
2.5.4 辞書
2.5.5 集合
2.5.6 コレクション共通の関数
2.5.7 コレクションのイテレーション
2.6 多次元配列
2.6.1 初期化
2.6.2 基本的な操作
2.6.3 インデクシング
2.6.4 多次元配列の演算
2.6.5 ブロードキャスティング
2.6.6 map,reduce,filter
2.6.7 サブ配列
2.7 モジュール
2.7.1 モジュールの機能
2.7.2 既存モジュールの利用
2.7.3 using文の注意点
2.7.4 新しいモジュールの定義
2.7.5 モジュールの相対パス指定
2.7.6 ファイルの分割
2.7.7 他のモジュールで定義された関数の拡張
2.8 メタプログラミング
2.8.1 シンボル
2.8.2 構文木の表現
2.8.3 構文木の補間
2.8.4 構文木の評価
2.8.5 マクロの機能
2.8.6 標準ライブラリにあるマクロ
2.8.7 マクロの定義
2.8.8 識別子の変換規則
2.9 C言語の呼出し
2.9.1 ccall構文
2.9.2 ポインタの受渡し
2.9.3 構造体の受渡し
2.10 外部プログラムの呼出し
2.10.1 コマンドの作成・実行
2.10.2 コマンド実行の注意点
2.10.3 パイプライン処理
2.10.4 より発展的なコマンドの作成方法
2.11 パッケージ
2.11.1 パッケージ管理の基本
2.11.2 プロジェクトのパッケージ管理
2.11.3 プロジェクトの有効化
2.11.4 パッケージの作成
3. Juliaライブラリの使い方
3.1 線形代数
3.1.1 ベクトルの演算
3.1.2 行列の演算
3.1.3 行列の種類
3.1.4 行列分解
3.1.5 BLAS
3.2 ファイル入出力
3.2.1 ファイルとストリーム
3.2.2 シリアライズとデシリアライズ
3.2.3 JLD2
3.2.4 JSONファイルの入出力
3.2.5 XMLファイルの入出力
3.3 他言語の呼出し
3.3.1 Pythonの呼出し準備
3.3.2 Python関数の呼出し
3.3.3 Pythonモジュールの利用
3.3.4 Rの呼出し準備
3.3.5 R関数の呼出し
3.3.6 Rオブジェクトの操作
3.3.7 REPLのRモード
3.4 ドキュメンテーション
3.4.1 docstringの読み方
3.4.2 Markdown
3.4.3 関数のdocstring
3.4.4 関数以外のdocstring
3.4.5 Documenter.jl
3.4.6 Documenter.jlの使用例
3.5 可視化
3.5.1 PyPlot.jlのインストール
3.5.2 基本的なプロット
3.5.3 プロットの編集
3.5.4 サブプロットの作成
3.5.5 オブジェクト指向インタフェース
4.Juliaの高速化
4.1 プロファイリング
4.1.1 高速化の事前準備
4.1.2 実行時間の計測
4.1.3 実行時間のプロファイリング
4.1.4 メモリ割当てのプロファイリング
4.2 最適化しやすいコード
4.2.1 コードの書き方による性能差
4.2.2 コンパイラの概要
4.2.3 型に不確実性のあるコード
4.2.4 グローバル変数への参照
4.2.5 コレクションや構造体での型不確実性
4.2.6 メモリレイアウト
4.3 メモリ割当ての削減
4.3.1 配列のメモリ割当て
4.3.2 配列の再利用
4.3.3 ブロードキャスティングによるメモリ削減
4.3.4 特殊な配列型の利用
4.4 コンパイラへのヒント
4.4.1 境界チェックの省略
4.4.2 浮動小数点数演算の高速化
4.4.3 関数のインライン化
4.4.4 @simdマクロによる並列処理
索引
上記内容は本書刊行時のものです。
