はじめに(読み飛ばしていいです)
中学生のころ、数学 B の参考書を買った。私がプログラミングというものに興味を持ったのは、間違いなくこの本がきっかけである。その参考書には BASIC についての記載があった。最初見たときはまったく意味が分からなかった。紙面に書かれているソースコードを読んで、頭の中で追えるようになった頃には、プログラミングの虜になっていた。BASIC の構文を一通り学習し終わった私は、次に C 言語に手を染めた。当時読んだ本に「多くの言語は C 言語っぽい構文で書ける」と書いていたからだ。そんな単純な理由で、私は C 言語を吸い始めた。
C 言語を学び始めてから間もなく、疑問に思ったことがある。「ソースコードを実行したら期待通りの動きをするけれど、C 言語のコンパイラってどんな仕組みで動いているんだろう?」インターネットで調べてみると、どうやらコンパイラは「字句解析」や「構文解析」をいい感じに使ってできているらしい、ということが分かった。いろんな web サイトを見ながら、見よう見まねで「電卓プログラム」を作った。「この道のずっと向こう側には C 言語を作った人がいるんだ」という感覚があり、なんだかワクワクしたのを覚えている。
時が経ち、初めて MySQL を使った時のことである。再び私は疑問に思った。「MySQL ってどんな仕組みで動いてるんだろう?」インターネットで調べてみてもそれらしき情報は見つからなかった。より正確に言うと「三層スキーマ」や「レコード」といった概念の説明はわんさか出てくる。しかし、MySQL を作る方法(何を以て「作る」とするのかは議論の余地しかないが)については、ついに見つけることができなかった。
この記事は、言うなればリベンジである。私はあのとき SQL の謎に挑み、そして敗れたのだ。私はあの頃ほとんど何も変わっていない。変わっているとするなら、こんな本筋と全く意味のない文章をつらつらと書き連ねられるようになったことくらいである。
冗談はこれから言っていくとして、私は今すぐにでも SQLite のソースコードを読みたいのだ!
とりあえずソースコードをダウンロード
SQLite Source Repositoryを見て、最新のソースコードを ZIP ファイル形式でダウンロードした。デスクトップに内容を展開してみると全体のファイルサイズが 100MB くらいあってビビる。
/VERSION
というファイルに3.37.2
と書いてある。おそらくこれがバージョンなのだろう。
目標とかやりたいこととか
- 当面の目標は「Qiita へ定期的に記事を投稿する」にします。
- そのための口実として SQLite のソースコードを吸っていく予定です。
私の能力
私の属性はおおむね以下のとおり。
- C 言語で書かれたソースコードはちょっとだけ読める(仕事では使ったことはない)
- OSS のソースコードを読んだことない
- 英語の知識は中学一年生で止まっている
- ニホンゴヨクワカラナイ
迷子
このままだとソースコードの森で迷子になってしまいそうだ。
とりあえず、次回はどのソースファイルから読めばいいかを考えてみる。
「はじめに」に力を入れすぎたので今回はここまで。