ジャーニー
Luaを学ぶ
無料のインタラクティブなオンラインLua講座。毎レッスンで実際にLuaを書きながら、構文、tables、関数、metatables、そしてRobloxスクリプティングやゲームエンジン開発に必要な基礎を学びます。nilではまったときはAIヒントが助けてくれ、修了すれば無料の修了証明書がもらえます。
52,312+ 人のcoddersが登録中
- 初心者向け
AIによるコーディングサポート
実践的なインタラクティブレッスン
全レッスンに音声ナレーション付き
知識を確かめるクイズ
無料の修了証明書
シラバス
セクション 1
Fundamentals
セクションを始める開始開く閉じるThe first section in Lua for absolute beginners.はじめに
3 レッスン216- 01プログラミング言語についてチャレンジ
- 02Hello World!チャレンジクイズ音声
- 03コメントクイズ音声
変数とデータ型
8 レッスン754- 01変数とは?チャレンジクイズ音声
- 02数値チャレンジクイズ音声
- 03文字列チャレンジクイズ音声
- 04真偽値チャレンジクイズ音声
- 05値「nil」チャレンジクイズ音声
- 06type() 関数チャレンジクイズ音声
- 07命名規則クイズ音声
- 08復習:キャラクタープロフィールチャレンジ
演算子 1:算術と結合
6 レッスン636- 01算術演算子チャレンジクイズ音声
- 02剰余演算子チャレンジクイズ音声
- 03べき乗演算子チャレンジクイズ音声
- 04文字列の結合チャレンジクイズ音声
- 05演算子の優先順位チャレンジクイズ音声
- 06まとめ:簡単な計算チャレンジ
演算子 2:比較と論理
8 レッスン651- 01等価演算子チャレンジクイズ音声
- 02比較演算子チャレンジクイズ音声
- 03'and' 演算子チャレンジクイズ音声
- 04'or' 演算子チャレンジクイズ音声
- 05'not' 演算子チャレンジクイズ音声
- 06短絡評価クイズ音声
- 07Truthy と Falsy な値クイズ音声
- 08まとめ:シンプルな論理チャレンジ
基本の出力
9 レッスン954- 01リテラルの出力チャレンジクイズ音声
- 02変数の出力チャレンジクイズ音声
- 03複数の値の出力チャレンジクイズ音声
- 04文字列と変数の結合チャレンジクイズ音声
- 05tostring() 関数チャレンジクイズ音声
- 06入力チャレンジクイズ音声
- 07キャストチャレンジクイズ音声
- 08復習 - ステータスレポートチャレンジ
- 09復習 - 120までチャレンジ
プロジェクト:キャラクターのステータス表示
プロジェクト5 レッスン1- 01ウェルカムメッセージチャレンジ
- 02キャラクターのステータスの宣言プロジェクト
- 03基本ステータスの表示プロジェクト
- 04Booleanフラグの追加プロジェクト
- 05最終まとめプロジェクト
基本的な条件分岐
4 レッスン423- 01if-then文チャレンジクイズ音声
- 02if-then-else文チャレンジクイズ音声
- 03elseif文チャレンジクイズ音声
- 04まとめ - 宝箱チャレンジ
文字列操作の基本
6 レッスン638- 01string.len()チャレンジクイズ音声
- 02string.upper と string.lowerチャレンジクイズ音声
- 03string.sub()チャレンジクイズ音声
- 04string.rep()チャレンジクイズ音声
- 05string.find()チャレンジクイズ音声
- 06まとめ:ユーザー名のフォーマットチャレンジ
関数の基礎
6 レッスン636- 01関数の宣言チャレンジクイズ音声
- 02関数の呼び出しチャレンジクイズ音声
- 03引数を持つ関数チャレンジクイズ音声
- 04複数の引数を持つ関数チャレンジクイズ音声
- 05return 文チャレンジクイズ音声
- 06復習:面積計算機チャレンジ
テーブル パート1:リスト形式
8 レッスン752- 01テーブルとは?クイズ音声
- 02テーブルの作成チャレンジクイズ音声
- 03インデックスによる要素へのアクセスチャレンジクイズ音声
- 04インデックスによる要素の変更チャレンジクイズ音声
- 05長さ演算子「#」チャレンジクイズ音声
- 06table.insert()チャレンジクイズ音声
- 07table.remove()チャレンジクイズ音声
- 08まとめ:パーティーメンバーの管理チャレンジ
テーブル 2:辞書形式
7 レッスン648- 01キーと値のペアクイズ音声
- 02辞書形式のテーブルの作成チャレンジクイズ音声
- 03アクセス - ブラケット記法チャレンジクイズ音声
- 04ドット記法によるアクセスチャレンジクイズ音声
- 05ペアの追加と変更チャレンジクイズ音声
- 06nil によるペアの削除チャレンジクイズ音声
- 07まとめ - アイテムのプロパティチャレンジ
ループの基本
6 レッスン636- 01while ループチャレンジクイズ音声
- 02repeat-until ループチャレンジクイズ音声
- 03数値指定の for ループチャレンジクイズ音声
- 04ステップ指定の for ループチャレンジクイズ音声
- 05break 文チャレンジクイズ音声
- 06まとめ:カウントダウンチャレンジ
プロジェクト:簡易ポーションショップ
プロジェクト6 レッスン1- 01プロジェクトのセットアップチャレンジ
- 02ポーションの追加プロジェクト
- 03在庫の表示プロジェクト
- 04在庫の合計金額の計算プロジェクト
- 05特定のポーションの検索プロジェクト
- 06ポーションの販売プロジェクト
変数のスコープ
5 レッスン330- 01グローバル変数クイズ音声
- 02ローカル変数チャレンジクイズ音声
- 03ローカル変数を使う理由クイズ音声
- 04スコープとブロックチャレンジクイズ音声
- 05復習 - スコープパズルチャレンジ
最終チャレンジ
3 レッスン3- 01復習 - プレイヤーターンチャレンジ
- 02復習 - シンプルなデータベースチャレンジ
- 03復習 - 偶数の合計チャレンジ
セクション 2
Logic & Flow
セクションを始める開始開く閉じるDevelop problem-solving skills and create dynamic, interactive programsテーブルの高度なイテレーション
4 レッスン423- 01pairs() を使ったイテレーションチャレンジクイズ
- 02ipairs() を使ったイテレーションチャレンジクイズ
- 03pairs() と ipairs() の比較チャレンジクイズ
- 04まとめ:キャラクターシートチャレンジ
テーブルライブラリのその他の関数
5 レッスン430- 01table.concat()チャレンジクイズ
- 02テーブルの作成と unpack()チャレンジクイズ
- 03table.sort()チャレンジクイズ
- 04関数を使ったカスタムソートクイズ
- 05まとめ - ハイスコアボードチャレンジ
関数の高度な概念
6 レッスン539- 01複数の戻り値を返すクイズ
- 02可変長引数関数 (...)チャレンジクイズ
- 03第一級の値としての関数チャレンジクイズ
- 04無名関数チャレンジクイズ
- 05クロージャとは?チャレンジクイズ
- 06おさらい - シンプルなイベントハンドラーチャレンジ
メタテーブル入門
8 レッスン757- 01メタテーブルとは?クイズ
- 02setmetatable と getmetatableチャレンジクイズ
- 03__index メタメソッドチャレンジクイズ
- 04__newindex メタメソッドチャレンジクイズ
- 05__tostring メタメソッドチャレンジクイズ
- 06算術メタメソッド パート1チャレンジクイズ
- 07算術メタメソッド パート2チャレンジクイズ
- 08まとめ:読み取り専用テーブルチャレンジ
プロジェクト:テキストアドベンチャーエンジン
プロジェクト8 レッスン1- 01プロジェクトのセットアップ:部屋の作成チャレンジ
- 02部屋の連結プロジェクト
- 03プレイヤーの状態プロジェクト
- 04ゲームループプロジェクト
- 05ユーザー入力の処理プロジェクト
- 06プレイヤーの移動プロジェクト
- 07無効な移動の処理プロジェクト
- 08出口の表示プロジェクト
エラー処理
3 レッスン216- 01error() 関数クイズ
- 02pcall() による保護された呼び出しチャレンジクイズ
- 03まとめ - 安全な割り算チャレンジ
高度な文字列操作
6 レッスン641- 01string.gsub() による置換チャレンジクイズ
- 02文字列パターンの基礎チャレンジクイズ
- 03string.find()チャレンジクイズ
- 04string.match()チャレンジクイズ
- 05string.gmatch() による反復処理チャレンジクイズ
- 06復習:ログファイルパーサーチャレンジ
プロジェクト:連絡先リスト
プロジェクト7 レッスン1- 01プロジェクトのセットアップチャレンジ
- 02メインループプロジェクト
- 03連絡先の追加プロジェクト
- 04連絡先の一覧表示プロジェクト
- 05連絡先の検索プロジェクト
- 06連絡先の削除プロジェクト
- 07無効な入力の処理プロジェクト
コルーチン入門
7 レッスン638- 01コルーチンとは?クイズ
- 02coroutine.create と resumeチャレンジクイズ
- 03coroutine.yield() による中断チャレンジクイズ
- 04resume と yieldチャレンジクイズ
- 05コルーチンの状態確認チャレンジクイズ
- 06復習 - 数値ジェネレーターチャレンジ
- 07復習 - ベクトル演算チャレンジ
セクション 3
Object Oriented Programming
セクションを始める開始開く閉じるDiscover how to organize code with classes, objects, and reusable structures「self」の概念
5 レッスン532- 01関数を持つテーブルチャレンジクイズ
- 02明示的な「self」チャレンジクイズ
- 03コロン構文チャレンジクイズ
- 04ドット vs コロンチャレンジクイズ
- 05まとめ:動く点チャレンジ
クラスプロトタイプパターン
6 レッスン641- 01プロトタイプの概念チャレンジクイズ
- 02__index によるリンクチャレンジクイズ
- 03:new() コンストラクタチャレンジクイズ
- 04属性の初期化チャレンジクイズ
- 05独立したインスタンスチャレンジクイズ
- 06まとめ:車の工場チャレンジ
オブジェクトの状態と振る舞い
7 レッスン748- 01インスタンス変数チャレンジクイズ
- 02ゲッターメソッドチャレンジクイズ
- 03セッターメソッドチャレンジクイズ
- 04算出プロパティチャレンジクイズ
- 05文字列のフォーマットチャレンジクイズ
- 06等価性のチェックチャレンジクイズ
- 07まとめ - 生徒の成績チャレンジ
プロジェクト:デジタル銀行
プロジェクト7 レッスン1- 01プロジェクトのセットアップチャレンジ
- 02入金メソッドプロジェクト
- 03出金メソッドプロジェクト
- 04残高の取得プロジェクト
- 05口座情報プロジェクト
- 06資金移動プロジェクト
- 07銀行システムの最終テストプロジェクト
OOPにおける演算子のオーバーロード
5 レッスン531- 01オブジェクトの加算チャレンジクイズ
- 02オブジェクトの減算チャレンジクイズ
- 03オブジェクトの結合チャレンジクイズ
- 04オブジェクトの比較 (<, >)チャレンジクイズ
- 05まとめ - ウォレットの計算チャレンジ
継承の基本
6 レッスン643- 01継承のセットアップチャレンジクイズ
- 02メソッドの継承チャレンジクイズ
- 03コンストラクタの拡張チャレンジクイズ
- 04子クラスのメソッドの追加チャレンジクイズ
- 05共有と固有チャレンジクイズ
- 06まとめ:図形の階層構造チャレンジ
ポリモーフィズムとオーバーライド
6 レッスン640- 01メソッドのオーバーライドチャレンジクイズ
- 02親メソッドの呼び出しチャレンジクイズ
- 03ダックタイピングチャレンジクイズ
- 04共通インターフェースチャレンジクイズ
- 05型のチェックチャレンジクイズ
- 06まとめ:従業員の役割チャレンジ
カプセル化
6 レッスン644- 01命名規則チャレンジクイズ
- 02プライバシーのためのクロージャチャレンジクイズ
- 03クロージャを介したアクセスチャレンジクイズ
- 04読み取り専用テーブルチャレンジクイズ
- 05バリデーションロジックチャレンジクイズ
- 06まとめ:セキュアな保管庫チャレンジ
コンポジションとミックスイン
6 レッスン642- 01Has-A関係チャレンジクイズ
- 02委譲チャレンジクイズ
- 03シンプルなミックスインチャレンジクイズ
- 04複数のミックスインの適用チャレンジクイズ
- 05ミックスイン vs 継承チャレンジクイズ
- 06まとめ:ロボットの組み立てチャレンジ
プロジェクト:図形マネージャー
プロジェクト7 レッスン1- 01プロジェクトのセットアップチャレンジ
- 02Rectangleクラスプロジェクト
- 03Circleクラスプロジェクト
- 04Perimeterメソッドプロジェクト
- 05Shapeコレクションプロジェクト
- 06合計面積プロジェクト
- 07図形のフィルタリングプロジェクト
デザインパターン (Lite)
5 レッスン532- 01ファクトリ関数チャレンジクイズ
- 02シングルトンテーブルチャレンジクイズ
- 03イテレータパターンチャレンジクイズ
- 04オブザーバー (リスナー)チャレンジクイズ
- 05まとめ - Logger Factoryチャレンジ
最終チャレンジ
4 レッスン4- 01復習 - インベントリシステムチャレンジ
- 02復習 - ユーザーマネージャーチャレンジ
- 03復習 - スコアトラッカーチャレンジ
- 04最終 OOP チェックチャレンジ
CoddyでLuaを学ぶ理由
- 本物のLuaコードをブラウザで実行できます。Luaインタプリタのインストールもツールチェーンの設定も不要。各レッスンではあなたのLuaスクリプトをサーバー側で実行し、出力をその場で表示します。
- 実際に使われる形のLua。変数、制御フロー、関数、テーブル(Luaで唯一のデータ構造)、文字列操作、metatableとOOPパターン、エラー処理。Roblox、Love2D、組み込みスクリプティングに必要なLuaの基礎です。
- AIヒントが答えを丸見せにせず、Luaスクリプトのデバッグやエラーの読み解きをサポートします。nilインデックスや1始まりの配列といったよくあるつまずきも、学びのきっかけになります。
- コース修了で無料のLua修了証明書がもらえます。Robloxのゲームやmod、組み込みスクリプトのプロジェクトと並べて、しっかりとした実力の証明になります。
Lua学習についてのよくある質問
Luaは何に使われますか?
Luaは主に、より大きなアプリケーションに組み込まれるスクリプト言語として使われています。特にゲームエンジンでよく使われ、Robloxのスクリプト(LuauはRoblox向けのLua方言です)、Love2D、World of Warcraftのアドオン、Defold、Garry's ModなどはすべてLuaを採用しています。ゲーム以外でも、設定ファイル、自動化、組み込みシステムなどで広く使われています。
Luaは習得しやすいですか?
Luaは小さくてシンプルなプログラミング言語のひとつで、リファレンスマニュアル全体が短いPDFに収まるほどです。主要なデータ構造も基本的にひとつ(テーブル)だけ。多くの初心者は、最初の1時間以内に動くLuaプログラムを書き上げます。難しめの部分(metatables、closures、coroutines)はあとから少しずつ登場するので、無理なく身につけられます。
Roblox のために Lua を学ぶべき?
はい。Roblox のゲームでスクリプトに使えるのは Lua(正確には Roblox 独自の Luau 方言)だけです。本コースでは Luau のベースとなっている Lua のコア部分(変数、テーブル、関数、metatables、OOP パターン)をひと通り扱うので、修了すれば Roblox スクリプティングへの土台がしっかり身につきます。
Luaの習得にはどれくらいかかりますか?
Luaの基礎(変数、条件分岐、ループ、関数、テーブル)は、毎日練習すれば1〜2週間で身につきます。metatableやクロージャ、Luaでのオブジェクト指向パターンに慣れるまでには、さらに2〜4週間ほどかかるのが一般的です。そこからRoblockや他のゲームエンジンでLuaを実際に使いこなすとなると、言語そのものとはまた別の学習曲線が待っています。
Luaを無料でオンライン学習できますか?
はい。インタラクティブなLuaコースは無料で、レッスン、コーディング演習、クイズ、修了証まですべて含まれています。Luaはサーバー側で動くので、コードを書き始めるためにLuaやゲームエンジンをローカルにインストールする必要はありません。
Luaコースを修了すると修了証はもらえますか?
はい。Luaコースを修了すると無料の修了証が発行され、履歴書に記載したり、これまでに作ったRobloxのゲームやMod、スクリプトプロジェクトと一緒にLinkedInでシェアしたりできます。