小説Git 5: VS CodeのGit拡張機能

初めて使うGit、初めて使うコマンドラインインターフェイス(CLI)はどうでしたか?

緊張したかもしれませんし、もう懲り懲りだと思った方もいたかもしれませんが、ご安心ください。VS CodeのようなGit対応エディタを使うと、ターミナルを通さずにGitによるバージョン管理ができます。

まずはGit Graph(ギットグラフ)をインストールしてみましょう。❶アクティビティバー拡張機能をクリックし、❷検索フィールドに git graph と入力します。トップに出てくるGit Graphの❸インストールボタンをクリックするとインストールが終わります。

アクティビティバーでソース管理をクリックし、サイドパネル上部のツールバーを見ると、Git Graphのアイコンが増えています。前回作ったレポジトリを開いた状態でGit Graphのアイコンをクリックすると、エディターグループにGit Graphで管理されるレポジトリのコミット履歴が表示されます。

太字になっているのが、現在の状態です。小説Git 4を最後までやった方は、最後にcheckout(チェックアウト)した「プロローグ冒頭」のバージョンが太字になっているはずです。ではここで、最新のコミット「言い切りに変更」にチェックアウトして、ファイルの状態を最新版に変更してみましょう。

ターミナルは要りません。

「言い切りに変更」の行にあるを右クリックして、Checkout Branch を選んでください。

Git Graphの状態が変わります
ファイルも最新の状態に戻りました

実行すると、main言い切りに変更の両方が太字になります。ブランチについては、特別に章をあらためて解説します。

前回、git checkout 889989364af1369562f82a78d8f7662fa255bae3 で行ったチェックアウトはGit Graphを使うことで右クリックから実行できるようになりました。

それでは、もう少しだけGit GraphとVS Codeを見ていきましょう。

Git Graphで最新のコミット名をクリックしてください。操作方法は、アクティビティバーでソース管理をクリック❶し、Git Graphを表示❷させ、コミット名(ここでは「言い切りに変更」)を選択❸すると、コミット情報パネルが表示されます。

パネルの右ペインにはコミットのハッシュID(前回使った長い英数文字列です)、コミットしたユーザーの名前とメールアドレス、コミットの日時、コミットの名前が表示されます。

左ペインには、変更されたファイルが表示されます。前回はプロローグ.txtだけ編集しているので、一つしか表示されていません。

ここで プロローグ.txt ( +1 | -1) をクリックすると、このコミットと前回のコミットの違いを差分エディターで開いて見ることができます。

差分エディターで開いたところ
拡大表示

左が前回のコミットの時の状態で、右が新しくコミットしたファイルです。変更のあった行に色がついているのがすぐにわかりますが、その中でも変更した文字にはさらに濃い(明るい)ハイライトがついています。

VS CodeとGit Graphを使うことで、ほとんどターミナルに触ることなくGitを使うことができるようになります。

次回は実践的なファイルを使ってファイルを管理してみましょう。

コンテンツ一覧

  1. 小説Git 1:はじめに
  2. 小説Git 2:黒い画面でタタタターン
  3. 小説Git 3:VS Codeのインストールと最低限の設定
  4. 小説Git 4:Gitのインストール
  5. 小説Git 5: VS CodeのGit拡張機能

小説Git 4:Gitのインストール

お待たせしました。Gitのインストールを始めましょう。手順は以下の通りです。

  1. VS Codeでターミナルを立ち上げる
  2. Homebrewのインストール
  3. Gitのインストール
  4. 動作確認

HomebrewはMac OS用のオープンソースソフトウェアパッケージ管理ソフトウェアです。この説明で意味のわかる方は、1. Homebrewのインストールに進んでください。Windowsをお使いの方は、Google検索などで探してみてください。

小説Git 2:黒い画面でタタタターンでも書いたように、コンピューターの中には、アイコンがついていて独自のウインドウを持ち、マウスやタッチで操作できるグラフィカルユーザーインターフェイス(GUI)のアプリ以外にも、多くのソフトウェアが動いています。Gitも含め、それらの多くはプログラムのソースコードが公開されていて、誰でも組み立てて使うことのできるオープンソースソフトウェア(OSS)で、Homebrewは、そんなOSSをダウンロードしてインストールしたり、アップグレードしたりするソフトウェアです。

「なんだ、インストーラーみたいなものか」という印象を持たれたかもしれません。扱う上では「黒い画面で使うソフトをインストールするプログラム」程度に考えておけばいいでしょうが、起動したときに画面に流れる大量のログを見て驚かないように、少しだけ補足しておきます。

多くのOSSは、他の多数のOSSに依存しています。例えばプログラミング言語のPythonは以下のようなソフトウェアに依存しています。

python@3.9
├── gdbm
├── mpdecimal
├── openssl@1.1
│   └── ca-certificates
├── readline
├── sqlite
│   └── readline
└── xz

つまり、Pythonを動かすには、gdbm、mpdecimal、openssl@1.1とopenssl@1.1が依存しているca-certificates、readline、sqliteと、sqliteが依存しているreadline、xzの7つのOSSが必要になります。簡単に想像できると思いますが一つ一つをインストールしていくのでは大変ですし、何より間違いも起こります。

そこで、このような依存関係を管理するパッケージ管理ソフトウェアが必要です。ターミナルでbrew install python@3.9 と入力すると、Homebrewはレシピに従って依存する7つのソフトウェアを、必要なバージョンも確かめながらインストールします。

インストール中、ターミナルには自分が入力した覚えのないソフトウェアの名前がずらずらと並ぶことになりますが、怖がらずによく見てください。それはHomebrewが依存関係を解消するために必要なソフトウェアをかき集めているところなのです。

ちなみに、Gitの依存ツリーは以下の通り。

git
├── gettext
└── pcre2

多機能ぶりを考えると信じられないぐらいシンプルですが、それでもインストールすると、下記のログが画面を流れていきます。

==> Downloading https://ghcr.io/v2/homebrew/cor
Already downloaded: /Users/taiyo/Library/Caches/Homebrew/downloads/55b48329bd6c0c280bccbfcdd2e977bda9fba5fb7d7061e9323dae9142f3efb1--git-2.37.0.bottle_manifest.json
==> Downloading https://ghcr.io/v2/homebrew/cor
Already downloaded: /Users/taiyo/Library/Caches/Homebrew/downloads/f691c27a9f4a36e8760104c596627d982bffb4b52a2669cc5076462e12368191--git--2.37.0.monterey.bottle.tar.gz
==> Reinstalling git
==> Pouring git--2.37.0.monterey.bottle.tar.gz
==> Caveats
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the git-gui formula.
Subversion interoperability (git-svn) is now in the git-svn formula.

zsh completions and functions have been installed to:
/usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
/usr/local/share/emacs/site-lisp/git
==> Summary
🍺 /usr/local/Cellar/git/2.37.0: 1,552 files, 44.6MB
==> Running brew cleanup git…
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see man brew).

それでは、インストールです。小説Git 2で説明したVS Codeのインストールはお済みですか?

1. VS Codeでターミナルを立ち上げる

VS Codeを起動して、ウインドウのタイトルバーの右端に並んでいる❶パネル表示ボタン(下)をクリックしてパネルを表示させ、ウインドウの下部に現れるパネルの切り替えボタンからTERMINAL(ターミナル)をクリックすると、パネルの中には文字入力のコマンドで対話的にコンピューターを操作する環境「ターミナル」が現れます。

VS Codeのパネルにはさまざまな機能がありますが、小説Gitではターミナルしか使いません。

ターミナルに表示されている文字は、コマンドの入力を受け付けられる状態であることを示しています。この文字列のことをプロンプト、あるいはコマンドプロンプトと呼びます。

taiyofujii@iMac ~ %

ユーザー名:taiyofujii
コンピューター名:iMac
場所:~ (ホームの略称)
動作モード:% 一般ユーザー
■:カーソル

基本的なコマンドを入力してみましょう。小説を書いているときは使わなくても構いませんが、Gitのインストールやトラブルシューティングなどで、たまに必要になりますので、覚えておいてください。

最も基本的なコマンドの「cd(シーディー:change directoryの略称)」を使って、デスクトップに移動してみましょう。

yourname@yourMac ~ % cd Desktop↩️(リターンキー)
yourname@yourMac Desktop % ■

プロンプトの場所がDesktopに変わりました。日本語Mac OSのファインダーでは「デスクトップ」と表示されていますが、ターミナルでは「Desktop」と表記されます。

それでは、ホームに戻りましょう。

yourname@yourMac Desktop % cd
yourname@yourMac ~ % ■

cdの後に何も指定しなければホームディレクトリに戻ります。日本語Mac OSのファインダーではホームフォルダです。呼び方が異なりますが、ディレクトリとフォルダはほとんど同じものだと考えても構いません。ファイルを置いてある場所です。CLIではディレクトリと呼び、GUIでは書類バサミ(フォルダー)のメタファーを使ってフォルダーと呼びます。小説Gitでは両方の呼び方を、おそらく意識せずに使い分けていきます。

「ホーム」とホームディレクトリが同じ場所だということを確かめるために、「ls(エルエス:listの略)」コマンドを使って内容を一覧表示してみましょう。

yourname@yourMac ~ % ls↩️

Applications            Documents               Public                  
Downloads               Movies                  Music                   
Desktop                 Library                 Pictures

yourname@yourMac ~ % ■

英語で表記されていますがMacの「ホーム」に並んでいるフォルダーがあることがわかります。

ここで、小説Gitで時々使うMac用のコマンドをひとつ紹介します。「open」という、ターミナルから、Mac OSのファインダーを通して指定したファイルを開くコマンドです。コマンドラインであなたのMacを操作できることを体験してみてください。

yourname@yourMac ~ % open .↩️(ピリオド+改行)

## ピリオドは「この場所」を意味します。
## プロンプトに示される「場所」がホームディレクトリなので、
## open . はホームディレクトリをファインダーで開け、という意味になります。

ファインダーでホームのウインドウが開きます。

それではHomebrewをインストールしましょう。

2. Homebrewのインストール

Homebrewの公式Webサイトに、インストールの方法が書いてありますので解説します。

下のコマンドをコピーして(先頭の/から最後の”まで)、ターミナルにペーストし、リターンキーを押してください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

不安でしょうから、コマンドの意味を解説します。説明が鬱陶しい方は、一画面分ぐらい飛ばしてください。

先頭の「/bin/bash」で、インストールのためのスクリプト(手続き書です)を実行するプログラム、bash(バッシュ)を指定しています。bashはシェルと呼ばれるプログラムの一つで、ファイル操作やプログラムの起動に用います。

/bin/bashの後ろについている「-c」はbashの動作モードを指定しています。-cは、この後ろにある文字列を評価する、という意味を持ちます。「評価」というと難しいですが、bashを立ち上げて、”(ダブルクオート)で挟まれる文字列を入力し、リターンキーを叩け、ということになります。

ダブルクオートで挟まれた文字列は、bashで実行するコマンドです。内容は、curl(カール)を起動し、githubsecontent.comからHomebrewのインストールスクリプトをダウンロードして、$(管理者モード)で実行せよ、という意味です。

さて、実行しましょう。

==> Checking for sudo access (which may request your password)…
Password:

すぐにこのようなプロンプトが表示されます。ここで、Macの管理者パスワードを入力してください。

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

Press RETURN/ENTER to continue or any other key to abort:

インストールを実行するかどうかを確認するプロンプトが表示されます。リターンキー、あるいはエンターキーを押すとHomebrewのインストールが始まります。

ひょっとするとこの段階で、xcode command line toolsをインストールするか、Xcodeをインストールするか選ぶように求められるかもしれません。その場合にはxcode command line toolsを選んでください。これを機会にMacやiPhoneのアプリを作ってみたいと思う方はXCodeをインストールするといいでしょう。

==> Downloading and installing Homebrew...
remote: Enumerating objects: 498, done.
remote: Counting objects: 100% (498/498), done.
remote: Compressing objects: 100% (363/363), done.
remote: Total 476 (delta 152), reused 282 (delta 86), pack-reused 0
Receiving objects: 100% (476/476), 289.21 KiB | 50.00 KiB/s, done.
Resolving deltas: 100% (152/152), completed with 16 local objects.
From https://github.com/Homebrew/brew
   8dd96ae8b..3689ecd24  master     -> origin/master
Updating files: 100% (3162/3162), done.
HEAD is now at 3689ecd24 Merge pull request #13551 from Homebrew/dependabot/bundler/Library/Homebrew/activesupport-6.1.6.1
Updated 3 taps (homebrew/core, homebrew/cask and caskroom/cask).
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (nor will any be during this install run).

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==> Next steps:
- Run brew help to get started
- Further documentation:
    https://docs.brew.sh

yourname@yourMac $ ■

インストールが終了すると、コマンドプロンプトが入力待ちに戻ります。では、インストールが終わったかどうかを確かめてみましょう。

brew -v と入力します。brewはHomebrewのコマンド名です(長いですからね)。-vはバージョン表示を行う動作オプションです。

yourname@yourMac ~ % brew -v↩️
Homebrew 3.5.4
Homebrew/homebrew-core (git revision 3112e690293; last commit 2022-07-12)
Homebrew/homebrew-cask (git revision 7ba04fd629; last commit 2022-07-13)

バージョン名が表示されたら、インストールができたことになります。それではGitのインストールに進みましょう。

3. Gitのインストール

Gitの配布サイトにある、Download for Macページに、インストールの方法が書いてあります。

Homebrewのインストールは終わっているので、Homebrewでインストールする方法でインストールします。コマンドをコピーして実行します。

yourname@yourMac % brew install git↩️

==> Downloading https://ghcr.io/v2/homebrew/core/git/manifests/2.37.0
Already downloaded: /Users/yourname/Library/Caches/Homebrew/downloads/55b48329bd6c0c280bccbfcdd2e977bda9fba5fb7d7061e9323dae9142f3efb1--git-2.37.0.bottle_manifest.json
...

  /usr/local/share/emacs/site-lisp/git
==> Summary
🍺  /usr/local/Cellar/git/2.37.0: 1,552 files, 44.6MB
==> Running `brew cleanup git`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).

yourname@yourMac % ■

バージョンを確認しましょう。

yourname@yourMac % git -v↩️
git version 2.37.0

おめでとうございます。Gitがインストールできました。

Gitの初期設定を行なって動作確認をしていきましょう。まずは名前だけで構いません。

git config --global user.name 任意の名前(英数がいいです)↩️

4. 動作確認

おつかれさまでした。それではデスクトップにフォルダーを一つ作って、Gitが動くかどうか確かめてみましょう。

サイドバーのエクスプローラーソース管理をクリックして、サイドパネルのフォルダーを開くをクリックし、デスクトップに新しいフォルダーを作って、そのフォルダーを開いてください。流れを下にスクリーンショットで示します。

フォルダーを開くと、前回のインストラクションでも表示されたアラートが現れます。たった今作ったフォルダーですので安心して「はい、作成者を信頼します」ボタンをクリックしてください。

エクスプローラーでファイルをひとつ作り、何か書いて保存しましょう。

Gitの動作確認からは外れますが、ここでタイムラインをクリックすると保存したファイルの履歴が一覧できます。自動保存していると、ほぼ全ての編集履歴をこの「タイムライン」で追いかけることもできますので「あーっ! さっき消しちゃった文章どこだー!」と探すような時は、エクスプローラータイムラインを探してみましょう。

本当にお待たせしました。それでは、新しく作ったフォルダーをGitで管理しはじめます。

アクティビティバーのソース管理をクリックし、サイドパネルのリポジトリを初期化するをクリックします。Gitは管理するファイル群のまとまりを「リポジトリ」と呼びます。

初期化を行うと、サイドパネルの内容が変わります。

それぞれの意味合いはこれから小説Gitで説明していきますので、まずは「バージョン管理」を試してみましょう。

ファイルの横にマウスポインターを移動させ「+」ボタンをクリックします。

ファイルが「変更」タブから「ステージされている変更」に移動します。この操作を「ステージング」と呼びます。ステージにされた変更に名前をつけてコミットします。ここでは「プロローグ冒頭」と名前をつけ、コミットをクリックします。

何が起こっているのかわからないので辛いと思いますが、ファイルを修正して、再度「ステージング→コミット」をしておきます。同じ名前でコミットしても構いませんが、別の名前に変えておきましょう。

ここでターミナルを開いて、git log↩️を実行してみましょう。

ターミナルには以下のようなテキストが出てきて、二つの状態があることがわかります。

yourname@yourMac 傑作 % git log
commit 53f582de2ff7472af9df2503deb8b45dc23d0c46 (HEAD, main)
Author: Taiyo Fujii <taiyo@taiyolab.com>
Date:   Wed Jul 13 10:27:59 2022 +0900

    言い切りに変更

commit 889989364af1369562f82a78d8f7662fa255bae3
Author: Taiyo Fujii <taiyo@taiyolab.com>
Date:   Wed Jul 13 10:18:08 2022 +0900

    プロローグ冒頭
yourname@yourMac 傑作 % 

ここで、以下のコマンドを実行してみてください。色文字で示したcheckoutの後ろには、git logで出てきたハッシュを入れます。

git checkout 889989364af1369562f82a78d8f7662fa255bae3↩️

ファイルの状態が「プロローグ冒頭」に戻ります。Gitによるバージョン管理の第一歩です。次回からはVS Codeの機能拡張を用いたバージョン管理へと進んでいきます。

機能拡張のGit Graphでこのレポジトリを見ているところ

コンテンツ一覧

  1. 小説Git 1:はじめに
  2. 小説Git 2:黒い画面でタタタターン
  3. 小説Git 3:VS Codeのインストールと最低限の設定
  4. 小説Git 4:Gitのインストール
  5. 小説Git 5: VS CodeのGit拡張機能

小説Git 3:VS Codeのインストールと最低限の設定

それではVisual Studio Code―VS Code(ブイエスコード)をインストールしましょう。VS CodeはMicrosoftのソフトウェア開発環境「Visual Studio(ビジュアルスタジオ)」のWebサイトからダウンロードできます。

VS Code公式Webサイト

ダウンロードしたVS Codeをアプリケーションフォルダーに移動します。小説GitではMac版で説明することが多くなりますが、WindowsやLinux(Chromebook)などをお使いの方は、適宜読み替えてください。

App Storeの審査を経ていないアプリケーションですので、初回起動時にはセキュリティ警告が表示されます。

システム環境設定セキュリティとプライバシーでVisual Studio Codeの起動が止められたことがわかります。ここで「このまま開く」をクリックし、確認画面でもう一度「開く」をクリックするとVS Codeを起動できます。

VS Codeの起動画面です。

VS Codeの初回起動画面:すぐに日本語化できます。
VS Codeの基本インターフェイス

起動していたらこのまま日本語化まで行いましょう。アクティビティバーの一番下にあるExtensionsをクリックし、検索フィールドにJapaneseと入力してください。Japanese Language Pack for Visual Studio Codeというエクステンションが表示されるので、これをインストールします。

VS Codeを再起動すると、日本語インターフェイスのVS Codeが起動します。

起動画面で促されているように、VS Codeは一つ一つのファイルを開くよりも、フォルダーを開いて作業することを前提に設計されていますので、下のようなフォルダーを開きます。

フォルダーを開くと、制作者を信用するかどうかを確かめるアラートが表示されます。プログラミングエディタならではですね。もちろん信頼してフォルダーを開きます。

アクティビティバーでエクスプローラーをクリックすると、開いたフォルダーの内容がサイドバーに表示されます。ここでファイルを選択すると、ファイルをエディターで編集できます。

画面に収まりきれない長さの行が画面外に延びていますので、日本語を書くために最低限の設定を行います。

アクティビティバーの一番下にある「管理」をクリックし❶、メニューから「設定」を選択する❷と、エディターに設定画面が表示されます。設定項目は無数にあるので、目的の設定を探すには検索する必要があります。検索フィールドに「折り返し」を入力すると❸、Editor: Word Wrapという項目が出てきます。初期設定ではoffになっているので、onに切り替えます❹。これで長い行を折り返すことができるようになりました。

設定画面の構成や設定の方法などが一般的なデスクトップアプリケーションと違うことに戸惑うかもしれませんが、ファイル保存などの基本的な操作は、他のデスクトップアプリケーションと大差ありません。

次はVS Codeの中にある「黒い画面」に向き合って、Gitのインストールに進むことにしましょう。ようやくGitと対面です。

コンテンツ一覧

  1. 小説Git 1:はじめに
  2. 小説Git 2:黒い画面でタタタターン
  3. 小説Git 3:VS Codeのインストールと最低限の設定
  4. 小説Git 4:Gitのインストール
  5. 小説Git 5: VS CodeのGit拡張機能

小説Git 2:黒い画面でタタタターン

緑色の文字だ流れる画面にタタタとコマンドを入力してリターンキーをターンと叩く映像はでハッカーを表現する映像作品はまだまだ後を絶ちません。現実のプログラマーやネットワークエンジニアが映画のように忙しなくコンピューターを操作することはほとんどないのですけどね……とはいえ、この表現のすべてがデタラメというわけではなく「黒い画面」がエンジニアの友であることは間違いのないところです。

小説Gitをご覧になっているコンピューターでは、私たちがマウスやタッチ操作で扱うアプリケーションよりもずっとたくさんのソフトウェアが動いています。

この記事を書いているときに起動していたプロセス数は596個

その多くは人の手の介在しないアプリケーション間通信か、「黒い画面」を通して操作するコマンドラインインターフェイス(CLI: Command Line Interface)でしか動かすことができません。

Linuxで生まれ、CLIを好むソフトウエアエンジニアたちがメンテナンスしているGitも例外ではありません。Gitの主要なインターフェイスは「黒い画面」でコマンドを入力するCLIです。

ファイルの、ある時点での状態を登録予約(ステージング)するには % git add というコマンドを用いますし、予約した状態を登録するには % git commit とタイプします。過去に登録した状態に復元するには % git checkout というコマンドを使います。複数の状態を合成するには % git merge、分岐を操作するには %git branch……

Gitのヘルプ。よく使うコマンドが表示されています。全てを覚える必要はありません。

嫌になりそうですね。わかります。

ですが、GitがCLIでしか操作できないのなら私が小説のためにGitを使うことはなかったし、小説Gitも始まらなかったことでしょう。幸いなことに、多くのアプリケーションがユーザーに代わってGitのコマンドを実行してくれます。

「裏庭の競技場」をVS Codeで編集している画面
登録予約した変更が「ステージされている変更」に、それ以外の変更点が「変更」に並んでいる
エディタ側では11、18、20行目が前回の登録(コミット)から変わっていることがわかる
変更点を登録(コミット)した状態。Git GraphというVS Code用の機能拡張は、変更や分岐、統合の履歴をグラフィカルに表示してくれる

小説Gitでは、Gitの操作のほとんどをVisual Studio Code(VS Code)と、VS Code用のプラグインで行う方法を解説します。私自身は「黒い画面でタタタターン」とやる方が簡単に思うことも多いのですが、できるだけVS Codeで操作する方法を優先して紹介していきます。プログラム開発などでGitに慣れている方から見ると、まだるっこしいところもあるかもしれません。

ただ、「黒い画面」を最小限にとどめようとまでは考えていません。コマンド入力をする方が間違いがない場合や、他に方法がない場合には、躊躇なくコマンドを入力する方法を紹介していきます。

Gitのクラウドサービス、GitHubの機能を用いて分岐を統合していくところ
VS Codeに搭載されているターミナルを使っている

前置きが長くなりました。それでは、次回から環境を作っていきましょう。

コンテンツ一覧

  1. 小説Git 1:はじめに
  2. 小説Git 2:黒い画面でタタタターン
  3. 小説Git 3:VS Codeのインストールと最低限の設定
  4. 小説Git 4:Gitのインストール
  5. 小説Git 5: VS CodeのGit拡張機能

小説Git 1:はじめに

このエントリーに続く一連の記事で、小説の執筆にGitを使う方法について、紹介します。

小説GitではGit対応エディタとしてMicrosoftのVisual Studio Code(VS Code)を用い、リモートレポジトリにはGitHubを使います。他のソフトウェアを使いたい方は、コマンド名などを読み替えてください。Gitのコマンドは可能な限り併記します。スクリーンショットはMac OS版を用いますが、WindowsでもLinuxでも同じように運用できるはずです。

小説をGitで管理し、差分表示に対応したエディタで編集すると、はじめてファイルを登録(コミットと呼びます)した瞬間から入稿に至るファイルの履歴を追いかけられるようになり、連載時に文字数や締め切りの関係で削除することになったエピソードにも簡単にアクセスできるようになります。

東京新聞掲載短編「裏庭の競技場」の執筆履歴
登録作業に名前をつけられるので、何を変更したのかすぐにわかります

また、日々の執筆でも、昨日、または先週からどのように原稿が変化したのかを確かめられるようにもなります。

東京新聞掲載短編:裏庭の競技場の再校と入稿の差分表示
変更のあった行と文字がハイライトされているのがわかる

数千人もの開発者が共同作業することを想定して作られたGitには、分岐したソースコードを評価しながら再統合する機能も搭載されています。今まで、プリントアウトにエンピツを入れていた編集者が分岐(ブランチと呼びます)した原稿に提案を書き込んで修正提案(プルリクエストと呼びます)を行えば、作者は一つ一つの提案を取り入れるか入れないか、すぐに決めることができます。エンピツの入った場所を探すために、マウスホイールを回して数十メートルにも及ぶWordファイルの中を彷徨う必要はなくなります。

技術文書では、すでにGitの管理機能を用いているものも少なくありませんしWebへの公開を前提としたインストラクションはたくさん書かれています。しかし、小説となると、実例を詳しく紹介した読み物はそれほど多くありません。

この記事が、執筆にGitを使おうと考えた方の背中を押せれば幸いです。

さて、どこから始めましょう……

コンテンツ一覧

  1. 小説Git 1:はじめに
  2. 小説Git 2:黒い画面でタタタターン
  3. 小説Git 3:VS Codeのインストールと最低限の設定
  4. 小説Git 4:Gitのインストール
  5. 小説Git 5: VS CodeのGit拡張機能

短編「木星風邪」を『ポストコロナのSF』に寄稿しました

ポストパンデミックSF短編「木星風邪(ジョヴィアンフルゥ)」を、4月15日に早川書房から発売されるアンソロジー『ポストコロナのSF』に寄稿しました。

ポストコロナのSF: 早川書房

舞台は様々なインプラントの助けで太陽系全域に生活圏を広げた23世紀の木星。
月面都市で生まれ、木星大気に浮かぶ鉱山都市に生活の場を移した春馬(ハルマ)は、通勤に向かうトラムの停車場で、女性が倒れるところに遭遇する。インプラントのメモリ管理を行なっていたプログラムが変異して生まれたコンピューターウイルスが、全身のインプラントを侵し、ショック症状に陥ったためだ。宿主になった人間が体を折り、くずおれる瞬間、GCE-73と名付けられたそのプログラムは、近接無線ネットワークに乗って周囲に拡散する。
まるで感染症のように振る舞うこの異変を「木星風邪」と呼ぶ者がいた……

という、30枚ほどの短い作品です。書店で見かけたら、是非とも手に取ってください。

林譲治さんが日本SF作家クラブの会長を務めていた昨年の夏に持ち込んだ企画なのですが、アンソロジーとしても魅力的で、巻頭言は現会長の池澤春菜さん、巻末のエッセイは日本SF作家クラブの法人化に尽力し、林会長を補佐した鬼嶋清美前事務局長。作品と作家を紹介するのは先日会員になった宮本道人さん。寄稿作家は以下の19人70作あまり(北野勇作さんの「不要不急の断片」はマイクロSF集です)。クラブの編集とはいえ、会員でない作家の皆さんも大勢いらっしゃいます。

小川哲「黄金の書物」/伊野隆之「オネストマスク」/高山羽根子「透明な街のゲーム」/柴田勝家「オンライン福男」/若木未生「熱夏にもわたしたちは」/柞刈湯葉「献身者たち」/林譲治「仮面葬」/菅浩江「砂場」/津久井五月「粘膜の接触について」/立原透耶「書物は歌う」/飛浩隆「空の幽契」/津原泰水「カタル、ハナル、キユ」/藤井太洋「木星風邪(ジョヴィアンフルゥ)」/長谷敏司「愛しのダイアナ」/天沢時生「ドストピア」/吉上亮「後香(レトロネイザル) Retronasal scape」./小川一水「受け継ぐちから」/樋口恭介「愛の夢」/北野勇作「不要不急の断片」

「ポストコロナのSF」 Amazon.co.jp商品ページより

もう少し落ち着いた頃に出ると思っていたのですが、まさか緊急事態宣言に匹敵するような状況になっているとは……。

パンデミックを直接扱う小説を書くのは「木星風邪」で三本目になります。今回の作品は、COVID-19を扱った過去の二作品から大きく趣を変えて、ウイルスそのものに注目してみました。どうぞお楽しみください。

世界SF作家会議

フジテレビで26日深夜(26:05〜)から放送される「第2回 世界SF作家会議 “人類は〇〇で滅亡する”」に出演します。

フジテレビ公式サイト第2回 世界SF作家会議

今回のテーマは「人類滅亡」。SFでは手垢がついたと言われかねないテーマですが、新井素子さん、高山羽根子さん、小川哲さん、そして劉慈欣とケン・リュウ、キム・チョヨプが揃ってつまらなくなるわけもありません。トークとそれぞれの作家がみせてくれる思索の意外さ、強さ、深さを思う存分お楽しみください。

イラストレーションは森泉岳土さん、声の出演がやくしまるえつこさんと髙城晶平さん(どこで出てくるんだろう。これも楽しみ)。漫画が宮崎夏次系さん、サウンドは牛尾憲輔(agraph)さん。豪華なスタッフがどんなふうに番組を作り上げていったのかも楽しみです……と思っていたら、もうYouTubeに番組がアップロードされていました。

どうぞご覧ください。

前回の放送は、第一回目の緊急事態宣言が終わる頃に収録して、7月に放映されています。命や健康を損なう方もいる中で新型コロナウイルスと、それに連なる社会の問題ついてフィクション作家が語るのはなかなかに危ういのですが、大森望さんと、いとうせいこうさんの適切なナビゲーションのおかげで、それぞれの作家の持ち味を出すことができていたかと思います。ライブで(久しぶりに!)話すことのできた新井素子さん、冲方丁さん、小川哲さんたちとのトークはとても刺激的でした。YouTubeの8.8チャンネルで配信しているアーカイブでもご覧いただけます。

短編「月の高さ」

小説現代 2021年1月号で始まったシリーズ「旅」企画に、短編「月の高さ」を寄稿しました。コロナ禍で移動をためらいがちなこの時ですから旅について書くのも、考えるのも、読むのも、いつもとは違う感じがするはず。

作品の舞台は2019年の東北自動車道。登場人物は、50歳に手が届きこうかというベテランの舞台美術スタッフ與江(あたえ)と、プロジェクションマッピングを使った舞台美術で注目されはじめた劇団の舞台美術チーフ、熱田。物語は旅公演の舞台装置を東京から青森に運ぶ長距離トラックに乗った、與江と熱田の会話を中心に進みます。

バブルの残り香がまだ漂っていた1990年代の前半に舞台の道に入った與江は、平成不況の只中に舞台の道を歩もうとする熱田の境遇を危ぶみながら、彼女の仕事を尊敬します。

実は(と言わなくてもわかるかもしれませんが)私が歩み損ねた道を歩んでいる分身です。いくつかのプロフィールには書いていますが、私は大学で舞台美術に出会い、同世代の仲間たちとユニットを組んで、大学を中退するほど熱中していた時期があります。

私はある仕事の現場を途中で放り出して、そのまま舞台から離れてしまったのですが、もしもあの時舞台から離れなければ、與江のように歳を重ねていた気がします。

そんなことを考えながら仕上げた「月の高さ」は、テーマを与えてくださった企画担当者と、担当編集者、そして校閲の皆さんのおかげでよい作品に仕上がりました。素敵な装画は山口洋佑さま。ありがとうございます。

連載、オーグメンテッド・スカイ

文芸春秋社のデジタル誌、別冊文藝春秋の一月号に「オーギュメンテッド・スカイ」の第二話が掲載されました。

この作品は、私が十五歳の春から十八歳まで過ごした、鹿児島の進学校錦江湾高校の男子寮をモデルにしています。一年生、二年生、三年生が同じ部屋を使うその寮では、畳一畳分の2段ベッドが左右の壁に作り込まれた寝室と、廊下を挟んだ向かい側にある学習室のテーブルの上だけが、プライベートと呼べる場所でした。

部屋のミッションは三年生の受験を成功させること。そのために、一年生と二年生の生活は費やされます。身辺のことは自分でやるルールでしたが、公共スペースの清掃や配膳は二年生の監督で一年生が手を動かす、擬似軍隊です。寮は学校の敷地に隣接しています。ひとたび桜島が噴火すれば一年生たちは授業を中座して寮に走って戻り、ベランダに干してある上級生の洗濯物を部屋に入れなければなりません。上級生の衣類に火山灰をかけてしまおうものなら、風紀委員に呼び出されて説教されてしまう――そんな生活です。

1980年代ですら時代遅れだと言われていた、そんな寮にいたことを文藝春秋の編集者に話したところ、その場所をモデルにして一つ書けないか、と提案されました。
「面白くなりますか」
「絶対、面白くなります」
ということで、始まりました。

設定は2024年。ドローンを飛ばせば手が届きそうなほどの未来です。設定しました。学校の名前は鹿児島県立南郷高校。寮は蒼空寮。そこで集団生活を送る寮生たちは、受験と集団生活、そしてバーチャルリアリティコンベンション、略して「バーチャコン」に取り組んでいました。
蒼空寮は集団生活のメリットを生かした精密な立体モデルで全国大会優勝をはたしたこともある名門チームなのですが、この年は成績がふるいません。過去の栄光に寄りかかった構成が退屈だったのか、それとも周りの腕が上がったのか――寮が失意に包まれる中、主人公の二年生倉田マモルは、来年の次期寮長の指名を受けます……

Kindle Unlimitedでも読めるようですので、是非ともご覧ください。

祝、Future Science Fiction Digest Volume 9出版!

短編の英訳を収録していただいた Future Science Fiction Digest Volume 9 がついに出版されました。

東アジア特集となった今号は、中国のSFエージェント、未来事務管理局(Future Administration Affairs)がスポンサーに立ち、UFOパブリッシングでFuture SF Digestのデスクをつとめるアレックス・シュヴァーツマンとともに、豪華な執筆陣を揃え、すばらしいアンソロジーを作り上げることに成功しました。著者は 中国から吴関(Wu Guan) , 代達(Dai Da), 顧適(Gu Shi), 未馬(Wei Ma), アルゼンチンからは グスタヴォ・ボンドニ, 韓国からはキム・ボヨン、そして私です。カバーイラストはものくぼさん。

私が寄稿したのは、まだ日本で発表していない未来志向の短編「まるで渡り鳥のように」です。翻訳はエミリー・バリステさん。物語は、中国の春節帰省が宇宙旅行に革新的な役割を果たしていく、という話です。中国語版を未来事務管理局の春節企画「科幻春晩」に寄稿した作品です。

主人公の日本人の動物行動学者、ツカサが、春節のために帰省してしまったパートナーの中国人エンジニアを待ちながら、宇宙ステーションで研究を続けているところから物語は始まります。春節を終えて帰ってくる無数の宇宙機の輝きを見ながら、ツカサは呆れています――どうして中国人たちは、毎年故郷に帰るのだろう。その習慣をやめないと、木星どころか火星にも行けないってのに。このままじゃ低軌道から出ていけないじゃないか――ツカサは、太陽系を離れ、系外惑星で研究しないかというオファーに悩みます……。

宇宙開発、倫理の進化、ポストヒューマン、そして、ロマンスを詰め込んだお祭りのための短編です。日本での発表をお楽しみに。