ノンプログラマーでもゲーム開発でCLIを使いこなした方がよい理由
理由
開発効率が爆上がりするからです。
WindowsやMacがメインPCでゲーム制作している人でもCLIを使ったことがない人は結構多いかもしれません。
しかし、ゲーム開発やそれ以外でも力を発揮するので知っておいて損はありません。主に素材やコード(テキスト)ファイルの整理や処理で活躍します。
CLIとは?
CLI:Command Line Interface(コマンドラインインターフェース)
キーボードからコマンド(命令)を打ち込んで何かしらの処理を行わせるユーザーインターフェース(UI)のこと。Linux系OSのコマンドを使うことができるようになります。
これとは逆に
GUI:Graphical User Interface(グラフィカルユーザーインターフェース)
は普段使っているような視覚的にパソコンを操作できるUIのことです。マウスを使ってブラウザやアプリケーションをポチポチとクリックしながら視覚的に処理を行えます。
CLIのメリット
処理の自由度が高い:
専用のアプリを使うまでもないファイル処理の組み合わせを簡単に構築可能。
一括処理を瞬時にできる:
処理の繰り返しを自動で行わせることができるため、
1ファイル毎に同じ処理を手動で行う手間がなくなり、開発の時短になる。
ヒューマンエラーが減る:
大量にあるファイルを手動で処理するとどうしてもミスが発生する可能性が高くなる。しかし、正しいコマンドで処理を行えば、人為的ミスが原因のエラーは少なくなる。
再現性がある:
先人の知恵や発見をコマンド例や実行順を参考にそのまま試すことができる。他の人に処理をお願いするときも同じ。
応用がきく:
ファイル処理作業をコマンド履歴として残せるので、似たようなファイル処理が必要になったときにコマンド履歴を参照/流用して応用できる。
CLIのデメリット
学習コストがやや高い:
コマンドの使い方を知るには自分で調べる必要がある。
コマンドが失敗したときや意図通りに動かない時にその原因に気付くのに時間がかかる。
何ができるのかイメージしづらい:
どんなコマンドが存在していて、どのように組み合わせることができるのか、ある程度触って経験を積まないと気付きづらい。
UI全体が黒いからなんか怖い:
そもそもの見た目がとっつきづらい。
ゲーム作りで役立った代表的なケース紹介
バージョン管理ソフトのGitが使える
ゲーム内容のちょっとした変更を試したり、それを取り消したりなど、
開発の試行錯誤に役立った。(導入時のメモは下記記事参照)
※ゲーム開発をやっていて一番怖いのは昨日までは動いていたのに急に動かなくなった。けどその原因がわからない。昨日の状態に戻したいよっていうケースです。まれによくあります。
ゲーム開発ではそれをふせぐためにファイルの変更履歴の保存・管理するバージョン管理ソフト(特にGitが有名)を導入していることがほとんどです。GUI上で使えるものもありますがCLIの方が自分的にはしっくりきます。
大量ファイルを一括リネーム
ネット上にあるフリー素材が、日本語と英語混合のファイル名だったため、そのままではUnity上で使用できず、元のファイル名を流用かつ文字列を付与してリネームする必要があった。
例) ファイル_001.dat (リネーム前)-> 00_filename_001.dat(リネーム後)
ゲームシナリオテキストを一括でフォーマット変換
RPGMV用のシナリオテキストを書いている時に、シナリオのテキストを連結や分割をしたり、一括でインポートできるようなJSONフォーマットに変換して、RPGMV側で入力する手間を削減した。
大量にあるファイルの特定文字列を別の文字列に変換
シナリオスクリプト制作中、変数名等の文字列を変更したくなった時に、
依存関係の多い変数の変換し忘れがなくなった。
初心者がCLIを使用する上で知っておきたい基本的なコマンド
初めての場合は下記の10個をまずは知っておくとよいです。(※ディレクトリ=フォルダです。)
cd:現在のディレクトリを移動
コマンド例:cd dir1 ※dir1ディレクトリに移動する
ls:ディレクトリの内容を表示
コマンド例:ls dir1 ※dir1の中身リストを表示する
pwd:現在のディレクトリ表示
コマンド例:pwd
cp :ファイルをコピーする
コマンド例:cp file1 file2 ※file1と同一のfile2というファイルを作成する
mv:ファイルの移動およびリネーム
コマンド例:mv file3 file4 ※file3というファイルをfile4にリネームする
rm:ファイルの削除
コマンド例:rm file2 ※file2というファイルを削除する
mkdir:ディレクトリの作成
コマンド例:mkdir dir2 ※dir2というディレクトリを作成する
cat:ファイルの表示
コマンド例:cat file1 ※file1の中身を表示する
find:ファイルの検索
コマンド例:find . -name file1 ※現在のディレクトリ以下のfile1というファイルの場所を検索する
grep:指定文字列を検索する
コマンド例:grep hoge file1.txt ※hogeという文字列をfile1.txtの中から検索する。
各コマンドはオプション(例えば -p -a等)を付与するとまた別の働きをします。コマンド毎に有効なオプションは異なります。
"Man (コマンド名)" "オプション (コマンド名)"でググったりするとそのコマンドの使い方の詳細情報を得る事ができます。ついでに検索力もつけてコマンドを自由自在に使いこなしましょう。
その他に自分がファイル処理でよく使うコマンド群を紹介しておきます。
echo, cut, sort, awk, sed, xargs, csplit
仕様の詳細をここでは書きませんが、これらのコマンドの組み合わせでだいたいのファイル処理はできます。
お勧めのCLI
調べるといろいろ種類があると思いますが自分が使ったことがあるものをお勧めしておきます。公式ページと、一部外部ページの紹介です。使い方や導入方法でググるとたくさん情報がでてきます。自分にあったもの探すとよいと思います。
Git Bash (Git for Windows)※お勧め
https://gitforwindows.org/
Git Bashの導入の仕方(手順)
https://www.sejuku.net/blog/72673
Cygwin
https://www.cygwin.com/
Cygwinを使うべき理由
https://takuya-1st.hatenablog.jp/entry/20111121/1321865738