コース概要

Lua 入門

  • 歴史の概要
  • Lua の目標、特徴、非目標
  • Lua ドキュメントとチュートリアルのリソース
  • Lua インタープリターのインストール方法
  • LuaRocks のセットアップと使用方法

基本的な構文と意味論

  • 識別子
  • コメント、ブロックコメント
  • グローバル変数と厳格性の強制
  • ローカル変数
  • 単体プログラム、プログラム引数
  • コンパイル単位、チャンク、式、セミコロン

データ型とデータ構造

  • 基本型: nil, boolean, number, string
  • オブジェクト型: function, userdata, thread, table
  • 参照/オブジェクト vs 基本値
  • Lua におけるテーブルの重要性

テーブルとその多用途性の入門

  • テーブルとしての連想配列
  • テーブルとしての数値配列、シーケンス

基本的な制御構造

  • if then elseif else end
  • while ループ
  • repeat ループ
  • 単純な for ループ

エラーハンドリング

  • 戻り値 vs 例外
  • 戻り値を例外に変換する方法
  • 例外を戻り値に変換する方法
  • エラーレベル

例のプログラム

  • 多項式評価
  • 幅優先探索
  • 追加の演習問題

関数についての詳細

  • 名前付き引数
  • オブジェクト指向呼び出し
  • クロージャー
  • カリー化
  • 末尾呼び出し
  • 複数の代入と戻り値
  • 可変引数

イテレータとコルーチン

  • 汎用 for ループ
  • 状態のない vs 状態のあるイテレータ
  • イテレータとコルーチンの違い

メタテーブルとメタメソッド

  • set の例
  • __tostring メタメソッド
  • 算術メタメソッド
  • __index, __newindex メタメソッド
  • __len メタメソッド

モジュールとパッケージ

  • モジュールの使用方法
  • モジュールの作成方法
  • モジュールをパッケージに整理する方法

高度なテーブル

  • キューとスタック用のテーブル
  • グラフを記述するテーブル
  • 行列としてのテーブル
  • リンクリストとしてのテーブル
  • 文字列バッファ

例を通じたメタテーブル

  • プロキシ
  • 読み取り専用
  • メモ化
  • メモ化を用いた動的計画法
  • Fibonacci 数列の例

環境

  • グローバル変数と環境の関係
  • 自由変数
  • _ENV テーブルと _G テーブル

モジュールについての詳細

  • モジュール作成の異なるアプローチ
  • 動作を変更するモジュール
  • モジュール初期化と引数
  • 環境を使用して安全なモジュールを実装する方法

高度なイテレータとコルーチン

  • プロデューサー、コンシューマー、フィルター
  • コルーチンをラップしてイテレータを得る方法
  • リンクリスト用の状態のないイテレータ

Ecosystem への貢献

  • MoonRocks へのパッケージアップロード

Lua における関数型プログラミング

  • map 関数
  • reduce / fold 関数

オブジェクト指向プログラミング

  • オブジェクト指向の異なるアプローチ
  • 継承の異なるアプローチ

Lua 標準ライブラリの解説

コンパイル

  • コンパイル
  • 評価 (Eval)
  • 環境との関係
  • バイナリチャンク

ガベージコレクション

  • 弱テーブル
  • ファイナライザ、__gc メタメソッド

Lua バイトコードと仮想マシン

  • ソースコードからバイトコードの生成
  • バイトコードの読み込みと解析
  • Lua VM のソースコードの簡単な紹介

C モジュール

  • Lua から C を呼び出す方法
  • C モジュールの検索パスと読み込み

C から Lua を呼び出す

  • スタック
  • エラーハンドリング
  • 継続 (Continuations)

C からの Lua 値と型の処理

  • 配列
  • 文字列
  • Userdata
  • メタテーブル
  • オブジェクト指向呼び出し
  • 軽量 Userdata (Light userdata)

メモリ管理

  • アロケータ
  • GC API

Lua におけるスレッド

  • コルーチン vs スレッド
  • 実際のマルチスレッディングと Lua 状態

要求

少なくとも1つの他のプログラミング言語へのなじみがあること。プログラミング経験があること。オプションで他のスクリプト言語に親しみがあれば、Lua の理解がより容易になります。

 21 時間

参加者の人数


参加者1人当たりの料金

今後のコース

関連カテゴリー