【SALZ製作日誌】2020.07.02 元プログラマー、ついにGitHubに触れる。
今から20年前ぐらいまで、MS-DOSやWindowsのアプリケーションの開発をしておりました。そのため、構造化されていないBASICでプログラムを書いたり、Cでポインタやハンドラ、関数へのポインタを扱ったりするのは楽勝です。C++はクラスは利用できるけれど、チームで利用する端正なクラス定義を行ったりするあたりから、スキル的に怪しくなってきています。勉強しなきゃと思いながら、プログラマーとしてのキャリアを終えてしまいました。
件のJavaScriptのコールバック関数あたりは、思うように動かせなくてもう泣きそうでした。動かすうちに、どんどんコールバック関数が増殖していて、収拾がつかなくなってしまいました。
シングルタスクのOSで、MacintoshのMultiFinderにあこがれて、疑似マルチタスク処理を行っていた頃の話はもう若い人には伝わらないでしょう。
20年のブランクを経て、ESP32でマルチタスクができてしまう現実を知ったとき、技術の進歩を身を持って感じました。
ソース管理について
ソース管理については、私がプログラマから抜け出そうとしていた90年代の終わり、Microsoft Visual Source Safeを使い始め、「チェックイン」「チェックアウト」をしながら、サーバーへソースを更新していました。
最近のソフト開発では、Githubというサービスがよく使われているということは聞いておりました。「リポジトリ」「コミット」「プルリク」なんて言葉が飛び交っていても、私には全く理解できず聞き流していました。
ArduinoIDEでプログラムを組んでいても、ライブラリやツールなど必要なものはすべてGitHubにあり、そこからダウンロードしてきます。このとき、「クローンコピー」していますが、これも意味を理解しないまま、手順に従って行っておりました。
これは何とかしなければと思い、年初のToDoに「Git、GitHubの理解」と書いていました。(この日記で調べ物をしているうちに見つけました。)なので、おそらく、ちょっと覗いてみる程度のチャレンジをしていたのではないでしょうか。もうすでに記憶にも残っていませんでした。
まあ知らなくてもいいか。
とうそぶいてみるものの、台湾のIT担当大臣オードリー・タンさんが東京都のコロナ対策Webの手直しをGitHubで行って話題になったり、AIで古文書を解析する研究をするカラーヌワット・タリンさんのツイートを拝見したりするにつけ、コンピュータ技術者のたしなみとして、
GitHubの理解はマストである
と思うようになりました。
自動潅水装置の製作というテーマからどんどんそれていっている感じもしてきましたが、SALZ製作の裏テーマ、コンピュータ技術者としてスキルアップ活動として、これは何とかモノにしたい。しなければならない。とにかく、はじめて見ることにしました。
GitHubの登録
GitHubのアカウント取得は特に難しくありません。
サイトへ行き、ユーザー名、メールアドレス、パスワードを決めるだけで、アカウントの作成ができます。
たまに見かける猫のようなアイコンが出てきました。ここまではとてもスムーズでした。
ただ目的もなく、勉強したいと思って始めたものの、ここから先、何をどうしたいか、何がどうなったのか、何が面白いのか、まったくわかりませんでした。
練習でObnizのプログラムを入れてみましたが、それをどうしたものか、そこから進まなくなりました。
GitHubはそっと蓋をしておこう。。。
いつか使えるようになる日が来るかもしれない。
そんなこんなで時間がしばらく流れました。
盆栽用自動潅水機を作るため、Obnizから始めたマイコンは世代を重ねるにつれ、ESP32、M5Atom Matrixと変遷し、使用言語もJavaScriptからC言語に変わりました。オンラインで組む必要もなく、ローカルのハードディスクでプログラミングできます。
Arduino IDEでプログラムを組んでいると、あちこちでソースをいじりたくなります。
最初はノートPCで組んでいたものが、だんだん楽しくなってきて、隙間時間を見つけて、デスクトップPCで作ったり、あちこちの環境でプログラムを組んでいると、別の環境で作ったプログラムの続きをやりたくなってしまいます。
USBメモリにプログラムを入れて持ち歩く方法を思いつきました。でもやめました。USBメモリを忘れた時点で、何もできなくなります。
ではDropBoxではどうでしょう。最近、無料ユーザーは3クライアントに制限されていることを知りました。そのため、この手のドライブもあまり使い勝手が良いものではなくなってきています。
そこで、Evernoteにソースを貼って、行き来させていたのですが、何かエレガントさに欠けています。
特に不自由さはないものの、これはちょっと違うな。という感覚があります。
世の中にはもっとスマートな方法があるはずだ。と思い続けていました。
そこでピンときました。
GitHubを使えば、自分の今使っているPCで、いつでもつまみ食い感覚でプログラムできるのではないかと。
思い立った時に、GitHubから最新のソースと落としてきて、手直しして、出来上がったらアップして。
修正がバッティングしても、その違いを分かりやすく教えてくれる。きっとそれぐらいはできるはず。
これだ!これしかない!ようやく私の中で、GitHubに対する熱い想いがこみ上げてきました。
「Arduino」「GitHub」で検索すると、uessayさんのページに当たりました。
を参考にして、進めてみることにしました。
まさに、やりたいことはこれなのです。
読み進めていくと、壁に当たりました。
「Soucetree」というツールを使う模様。何のためのツールなのか分からない。
今度は「Soucetree」について調べます。
実際にインストールして試しました。
WindowsとMac向けの無料Gitクライアントであることが分かりました。
ひとつ進んだ感じです。
ただ「無料Gitクライアント」にひっかりを感じます。
Gitクライアントとは何か?GitHubとは異なるのか?
「GitHub」「Git」は別物
これが分かっていないため、訳が分かっていなかったのです。
では「Git」とは何か?
ありがとうございます。ようやくわかってきました。
まず「Git」ありき。ローカルでソース管理をするときに、Gitを用いています。がまず最初。
そして、「GitHub」がGitをクラウドで扱えるようにしたWebサービスのことだそうです。
ということは、「GitHub」を使いたい。と思った時点で、ローカルのソース管理用のGitを準備する必要があるということで、そしてさらに。。。
「Git」はコマンドで操作するようで、unixに慣れ親しんだ方にとっては馴染みがいいようです。
私にとっては懐かしい画面、unixのシェル画面が出てきました。
「ls」とか「rm」とかしか知らない私にとっては、これであれこれするのはしんどいです。
この、「Git」をGUI(グラフィカル・ユーザー・インターフェース)化するためのツールが「Soucetree」というわけです。
私の中では、こんな理解です。
「Git」<--->「Sourcetree」<--->「GitHub」
とてもすっきりしました。
と同時にとてもがっかりしました。
一言でいうと、大げさすぎます。
Arduino IDEでちょっと書いたSketchを管理する程度なのに、これはちょっと大げさすぎます。
大規模開発を生業とされている方にはよいかもしれません。オープンソースを日常的に使う方にもよいでしょう。
しかし、私はそこまで求めていません。
ちょっとしたソース管理をお手軽に利用したいだけなのです。もう忘れかけたunixコマンドは使いたくありません。「Soucetree」でGUIされようとも、ローカル、クラウドでリポジトリを2重管理するのはちょっとやりすぎだと思います。
やっぱもういいか。GitHubはやめておこう。
と思いながら、情報を集めていると、「GitHub Desktop」なるものが、「GitHub」で配布されているではありませんか。
ああ。これだ。まさにこれだ。
これをインストールするだけで、ローカルで「Git」を入れなくても使えるようなのです。ということは「Sourcetree」も不要。ずいぶんとすっきりします。
「GitHub Desktop」<--->「GitHub」
note.comにソースをアップしていますが、他の方のページを見ていると、ソースをGitHubへアップして、そのリンクを張っているケースがあり、ああ、こうやって使うんだと、理解してきました。
情報収集をするにつれ、「GitHub」がここ1、2年で変わってきていることを知りました。
Microsoftに買収されていたんですね。そして、以前は無料ユーザーではできなかったプライベート・リポジトリが作成できるように変わったようです。
いい時代にGitHubに出会えました。
ここからがスタート。GitHubを用いて効率よく開発できるようにがんばります。
今回は、SALZの話が全くなくてちょっと恐縮しております。
最後にちょっとだけ、盆栽の話を。
うちの棚場の写真です。
毎朝、水やりしながら樹の状態を確認しています。
楽しいですよ。
最後まで読んでくださり、ありがとうございます。
#盆栽
#bonsai
#ソース管理
#Git
#GitHub
#GitHub Desktop
#SourceTree
#SALZ
#製作日誌
この記事が気に入ったらサポートをしてみませんか?