Menu
Coddy logo textTech
学習パス

Luaのデータ構造とアルゴリズム

Luaにあるデータ構造はテーブルひとつだけなので、このパスの構造はすべてテーブルから作ります。配列部からスタックを、2つのインデックスでキューを、テーブルを指すテーブルで木を。そのひとつひとつをLuaで組み上げ、それを使ってソート、再帰、グラフ探索を行い、最後は採点付きの面接問題で締めくくります。無料、ブラウザ完結、ほとんどのコースに修了証が付きます。

377 レッスン228 チャレンジ702 クイズの問題

  • 初心者向け
  • sparkles iconAIによるコーディングサポート
  • hint icon実践的なインタラクティブレッスン
  • volume On icon全レッスンに音声ナレーション付き
  • quiz icon知識を確かめるクイズ
  • certificate iconパス全体で23枚の無料修了証

LuaのDSA、ステップごとに

38 コース377 レッスン228 チャレンジ702 クイズの問題

各ステップは、すでにあるCoddyのコースの組み合わせで、どの「開始」ボタンもコースをLuaで開きます。まだLuaで教えていない3つのコースは、ステップの後にまとめて載せています。

  1. 1
    このステップを始める開始スタック、キュー、二分木、ハッシュテーブル、連結リスト。それぞれをLuaでゼロから実装し、実際に問題を解くのに使います。Luaのテーブルはそもそもハッシュテーブルなので、このステップでは、テーブルが何をしてくれているのか、そしてそれをほかの4つの形にどう作り変えるのかがわかります。開始
  2. 2
    このステップを始める開始双方向連結リスト、ヒープと優先度付きキュー、トライ木、グラフ、そして自己平衡するAVL木。Luaではトライ木のノードは次の文字をキーにしたテーブルにすぎず、グラフは隣接リストのテーブルなので、どの構造も、その考え方以上には複雑になりません。開始
  3. 3
    このステップを始める開始バブル、選択、挿入、マージ、クイック、ヒープ、計数、基数ソートを、Luaで書き、可視化ツールで眺めます。Luaのリファレンスマニュアルにあるとおり、table.sortは安定ではありません。このステップを終えれば、ソートがなぜ安定性を手放すのか、そしてタイブレーク用のインデックスでそれをどう取り戻すのかがわかります。開始
  4. 4
    このステップを始める開始Luaでの再帰のチャレンジ問題。Luaには真の末尾呼び出しがあります。return f(x)のような末尾位置での呼び出しでは、呼ばれた関数が呼び出し元のスタックの領域を再利用するので、末尾再帰のループはスタックを伸ばしません。ふつうの深い再帰は、やはりスタックオーバーフローで終わります。動的計画法とビット演算は、それぞれPythonとC++で教えているため、ステップの後にまとめて載せています。開始専用ページ
  5. 5
    このステップを始める開始幅優先探索と深さ優先探索、ダイクストラ法、ベルマン・フォード法、トポロジカルソート、クラスカル法とプリム法を、ステップ2で作ったグラフの上でLuaで学びます。Luaには優先度付きキューがないので、ダイクストラ法に必要なのはステップ2のヒープです。そして幅優先探索には、table.remove(t, 1)を決して呼ばないキューが必要です。開始
  6. 6
使える機能
コーディングを学ぶために使うすべて

Learn by Doing

Write real code, query databases, build websites, and master AI prompts. Our interactive lessons cover every skill modern developers need.

playground.js
Code Editor
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Input
"Alex"
Output
"Hello, Coddy! Alex"

Build Your Coding Streak

Stay consistent and watch your progress grow! Track your daily coding habit, protect your streak with freeze days, and earn rewards for showing up every day.

12 days streak

Return tomorrow to keep your streak!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Double or Nothing

Day 5 of 7

fire Freeze icon

Streak Freeze

2 left

Code Anywhere, Anytime

Take your coding journey on the go! No setup, no downloads - just open and start coding. Available on iOS, Android and Web with 4.9 star ratings.

Python
7Streak
250Score
5Energy
Variables
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
CONTINUE
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Journey
Goals
Leaderboard
Profile
4.9
StarStarStarStarStar
Rating

You're Not Alone in This

Compete on global leaderboards, invite friends to earn rewards, and celebrate each other's wins. Coding is better with friends!

Challenger League
Challenger LeagueTop 7 advance
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconPromotion zoneleaderboard Arrow Up icon

Every way to learn

Read, listen, test yourself, ask the AI, or look up anything you've already covered. Every lesson meets you where you are.

Intro to Variables
Audio

A variable is a named container that stores a value you can reference later in your program.

In Python, you create one by writing the name, an equals sign, then the value you want to store.

The value can change over time - reassigning the name simply points it to a new value.

1xSarah

Prove Your Skills

Earn certificates for every course you complete. Add them to your LinkedIn profile and resume to showcase your coding expertise to employers.

CoddyCertificate of Completion
This certifies thatJohn Doehas successfully completed
python iconPython Fundamentals
Verified
DateJan 2026
LinkedInAdd to LinkedIn

LuaのDSAをCoddyで学ぶ理由

  • ひとつの構造から、すべての構造を。Luaのテーブルは配列部とハッシュ部をひとつにしたもので、ほかには何も組み込まれていません。リスト型もセットもキューもヒープもありません。Luaではどの構造もテーブルを指すテーブルでできていて、連結リストや木が本当は何なのかを、これ以上なくはっきりと見せてくれます。
  • Roblox、ゲーム、プラグインのために。LuaはRoblox(Luauとして)、ゲームのスクリプト、Neovimの設定、Redisのスクリプトを動かしています。そしてゲームのコードはデータ構造のコードです。インベントリはハッシュテーブル、ターン順はキュー、経路探索はグラフ探索です。Luaでデータ構造を学ぶことは、すでにスクリプトを書いている言語でそれらを学ぶことです。
  • パスのほぼすべてをLuaで。データ構造、ソート、グラフアルゴリズム、再帰のチャレンジ、面接パックは、すべてLuaで教えています。別の言語で教える3つのコースは、それぞれへのリンクとともにステップの後にまとめて載せています。動的計画法とPython面接シリーズ(Python)、そしてビット演算(C++)です。Luaに残るものはすべて、最初のスタックから最後の面接問題まで、テーブルでできています。
  • 面接と同じ形で採点。どのレッスンもテストケースで確認されるLuaのチャレンジで終わり、失敗したときはBugsyがあなたのコードを読み、答えを教えずに修正の方向へ導きます。ほとんどのコースで無料の修了証が発行され、それぞれ専用URLで検証できます。

LuaでのDSA学習についてよくある質問

Luaはデータ構造とアルゴリズムの学習に向いていますか?

学ぶためなら、意外なほど向いています。材料がテーブルしかないので、どの構造も明示的になり、コードも短く済みます。注意点は、テーブルがミスを黙って許してしまうことです。配列は慣例として1から始まり、存在しないキーはエラーではなくnilを返し、長さ演算子#tが信頼できるのはnilの穴のないシーケンスに対してだけです。Luaで行われる面接はほとんどないので、面接が目標なら、面接パックはそこで使う言語でも用意されています。

Luaのテーブルからスタックとキューを作るにはどうすればよいですか?

スタックは、配列部を片側から使うものです。table.insert(t, x)でプッシュし、table.remove(t)でポップします。キューにはもう少し注意が要ります。table.remove(t, 1)は残りのすべての要素を1つずつ前にずらすので、デキューのたびにO(n)かかるからです。代わりにfirstlastの2つのインデックスを持ちましょう。last + 1に追加し、firstから読み出し、そのスロットをnilにして進めれば、デキューは定数時間になります。ステップ1では、その両方を作ります。

Luaでは、なぜ#tがときどき間違った長さを返すのですか?

#はテーブルの境界(border)を返すからです。境界とは、t[n]nilではないがt[n + 1]はそうであるようなインデックスnのことです。正しいシーケンスには境界がちょうど1つあり、それがその長さです。途中にnilを入れると境界が複数になりうるため、#はそのどれを返してもかまいません。ですから、#で長さを測る配列には決してnilを入れないようにし、2つのインデックスを使うキューのように隙間のある構造では、サイズを自分で管理しましょう。

Robloxのスクリプトでもデータ構造は重要ですか?

はい。ゲームが一握りのオブジェクトを超えて大きくなれば重要です。インベントリはハッシュテーブル、スポーンやターンの順番はキュー、クールダウンの一覧は優先度付きキューにでき、マップ上の経路を見つけるのはグラフ探索です。Robloxのスクリプトを書く言語であるLuauはLua 5.1から派生していて、テーブル、1始まりの配列、#演算子を受け継いでいるので、ここで作るものはそのまま持ち込めます。

このパスで、Luaで教えていないコースはどれですか?

3つです。動的計画法とPython面接シリーズはPythonで、ビット演算はC++で教えています。これらはステップの後にまとめて載せてあり、それぞれのリンクからその言語でコースを開けます。Luaならメモはテーブルです。ビット演算子が加わったのはLua 5.3になってからで、C++の&|<<>>があり、XORとNOTはどちらも~と書きます。

このパスを始める前に、Luaを知っている必要がありますか?

少なくとも、テーブル、関数、ループ、ローカル変数は必要です。オブジェクトのように振る舞う構造を作りたいなら、メタテーブルも知っていると役立ちます。初めて見るものがあれば、まずCoddyのLuaコースが無料でそれらを扱います。このパスは、そのコースが終わるところから始まります。

他の学習パス

同じコースを別の職種向けに並べたものです。進捗は引き継がれ、あるパスで修了したコースは、それを含むすべてのパスで修了扱いになります。

すべての学習パス
Coddy programming languages illustration

データ構造とアルゴリズムパスを無料で始める

学習を始める