Qt チュートリアル Gitについて 語りますよ
みなさんこんにちは!Qtのチュートリアルのコーナーです。
今回は、QtでGitを扱う方法について詳しく見ていこうと思いますが、その前に、そもそもGitって何?っていうところからスタートしていきますよ!
今日は私の一意見であって、ざらっとしたイメージを掴んでいただきたいと思って書きました。よろしくお願いします。
Gitって何?
一言でいうと、バージョン管理システムです。
じゃあ、バージョンって何?ってなるんですけど、私たちが書くソースコードには、バージョンが付きます。例えば、最初は1.0.0から始まります。このソースコードに自分のコードを書き加えるたび、1.1.0とか、バージョンアップしていきますよね。この3桁の数値にも意味があります。最初の1桁目が、大きな変更の場合です。QtはQt3くらいから段々注目されてきたのかな。(Qt1とかQt2っていうのは聞いたことがありません。)本がぽつぽつ出始めたのが、Qt3~Qt4でした。そして、Qt5では、それなりに情報も増えてきまして、Qt6の今は、世界でもその地位をかなり高めた状態になっています。(多分)
今Qtは6.9.1ですよね?これがQtのバージョンです。だから、もうすぐQt7の時代がやってくるんですよ!
というわけで、バージョンは、そのソースコードがどれほど改変されてきたのか、を示す指標になるわけです。
Qtは、オープンソースプログラムです。オープンソースに対する言葉で、クローズソースという言葉は聞いたことがありませんが、企業とかだと、自分達が書いたプログラムは、普通は非公開です。他者に自分達の技術を盗まれたくないからです。
しかし、Qtは秘密にせずこれをあえて公開しています。そして、公開するだけではなく、多くの有志の人たちが、そのプログラムをどんどん改変していきます。そして、彼らの開発を連結していって、このような巨大なライブラリになっているわけです。
素人が集まって何ができるの?って、最初は思いますかね。いや、素人ではないのです。その道の愛好家、マニア、オタク、ギーク、本当に、そんなことよく知ってるな!と感心するくらいの人が集まって開発をしていたり、人それぞれ、考えることが異なるわけで、様々なアイデアが出されることになります。そして、何よりも良いのが、バグの発見効率です。どれだけ熟練のプログラマでも、自分の開発したコードをテストするのは、非常に大変で、時間のかかる作業です。多くの人が携わることによって、問題をどんどん引き起こし、コードの不十分な点とぶち当たってくれると、それだけライブラリの信頼性が高まるのです。
それがオープンソースの強みです。企業内だけだったら、企業内の頭脳で勝負しなければなりませんし、人的リソースが限られる分、開発スピードも遅い上、バグとの遭遇率も下がります。
オープンソースであれば、開発に100万をこえる人が関わることもあったりするわけで、その中には学者さんなんかも含まれたりするわけですし、様々な専門的知識を持った人だってやってくることがあるわけだし・・・。
バージョンを指定する必要性
バージョンを指定する必要性は、言わずもがななところはあります。最新のバージョンが何かを特定できるからです。
もう一つ意味があります。実は、プログラムは、他のプログラムに利用されることが普通です。実はQtも、様々なプログラムにお呼ばれしています。その時に、私のプログラムはQt6.4を使っています。という場合、Qt6.9をインストールしていて、これを使ってください、といっても、そのプログラムは動きません。Qt6.9じゃなくて、6.4をインストールして!と言われるだけです。このように、プログラムのバージョン指定、という形で特定すれば、どの段階のソースコードを使えばいいのかわかりますよね。バージョンは、そのソースコード自体の背番号みたいなものなのです。
Gitの必要性
ちょっと脱線しましたが、じゃあ、一方で、こんなにたくさんの人たちが一緒に開発するとどうなると思いますか?
Aさんが開発したコードと、Bさんが開発したコード、簡単に考えて、全く違うものになることだって、ありえます。これが2人ならばまだしも、何万人もいたりすると、とてもじゃないですが管理ができません。
そこで、Gitを使います。分散管理システムです。Aさんが開発したコードと、Bさんが開発したコードをリポジトリという単位で分けてストックしていきます。Aさんはaというリポジトリで開発を行っていき、Bさんはbというリポジトリで開発を行っていく。そして、Aさんはめどが立ったら、aというリポジトリを、どんどんどんどん更新していきます。上書きですね。Bさんも同様です。上書きと言っても、Gitのすごいところは、更新前の内容が全て残っているというところです。ですから、あ~やばい!後戻りしたくなった!!!ってなったら、自分のコードを前のコードに戻すことができます。
開発をしていくと、途中で、どこでこんな不具合が入り込んでしまったんだろう?と、自分でもわからなくなることがよくあります。しかし、前の正常に動いていた時のコードが、リポジトリに入っていると、それをダウンロードするなりして、見比べれば、すぐに問題の特定に役立つのです。
で、ある程度まとまったところ、いい節目のところまで来たな!と思ったら、AさんとBさんのコードを連結して、1つのプログラムにしてしまいます
。で、もちろんですが、AさんもBさんも、完全にコミュニケーションレスで、自分勝手に開発を進める、ということはおそらくありません。(おそらくね。)ある程度の目標を立てて、そこに向かって役割分担をしているのです。そうじゃないと、どっちかがすごい頑張って来たのに、あなたのコードは完全に無駄なので要りません。ということになりますからね。そして、そういう討論の場も、githubとか、gitのサイトでは設けられています。
そうしてやってきて、最低でも691回くらい連結されてきたのが、バージョン6.9.1のQtなのです。裏を返せば、Qtもgitで管理されていますし、オープンソースソフトウェアですから、gitからダウンロードし、あなたも開発に加わることができるわけです。
で、もちろんQtのみならず、いろいろなオープンソースソフトウェアがあります。OSのLinuxなんていうのも、オープンソースソフトウェアであり、様々な人が、開発に携わっています。まぁ、これだけでGitの全てを理解することはできません。実際にどういうものか使ってみないとね。
Gitに頼りたくないと思う誘惑
Gitは無くても開発はできます。自分でローカル環境にファイルをいくつも作って、前のものと見比べたりして、自分で管理する、ということも、もちろん可能です。Gitというなにやらややこしい仕組みを導入して、小難しいコマンドを打って管理をするのは、なんだか嫌だ、と考えて、ついつい導入を先延ばしにしたくなります。
しかし、それは非常にもったいないので、やめておいた方がいいでしょう。これからあなたが開発をしていく中で、ソースコードの管理は、非常に煩雑になっていくことが予想されます。ただ、素人である場合は、それほど困ることがないので、余計に、Gitを後回しにしたくなります。ここが、中々、難しいところです。早くコードを書いていきたいのに、Gitなんて学んでたら、時間が掛かる一方だ・・・。
そう思われることもあるかもしれません。そうですね。一度その良さを味わわないと、なかなか導入しようと思えないですね。
というわけで、これを機会に、Gitについても深く学んでいき、プロジェクトを効率的に管理できるようにしていきましょう。そのための記事も書いていきたいと思いますよ!
(と言っても、個人の開発を行う方を念頭に書いていますので、そこまで深入りすることはありません。が、個人で開発をする場合でも、Gitはやはり学んでおくべきです。)
次から、Qtでgitを使っていけるように、どんどん話を展開していきたいと思います。自分の勉強にもなりますので、Goodです!
(本記事の内容は、上記の本とは何の関係もありません。)
この記事が気に入ったらチップで応援してみませんか?
