12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

現場1、2年目に伝えたい、Viコマンドが自分のエンジニア人生を変えた話

12
Posted at

はじめに

エンジニアになって1、2年目。linuxサーバーにログインして設定ファイルを確認する際、Viの独特な操作に戸惑っている方も多いのではないでしょうか。自分もかつては「矢印キーが効かない」「保存して閉じる方法がわからない」と四苦八苦していた一人でした。

しかし、ある現場で先輩が作成した「即興のスクリプト」を目の当たりにしてから、自分の中でViに対する考え方は180度変わりました。

衝撃を受けた「現場のVi」

その日、大量のログから特定のIPアドレスを抽出して加工するという、手作業で1日では到底終わらないタスクが発生しました。

これまで自社課題のvi操作しか知らず、ひとつひとつ文章を編集していたため、これでは1日で終わりそうもありませんでした。「これ、どうしましょうか……」と相談した自分の横で、先輩はViを極めるとこんなこともできると仰り、魅せてくれました。
画面上で慣れた手つきでコマンドを打ち込み、ものの数分でその場限りのシェルスクリプトを書き上げ、実行。一瞬にしてタスクを完了させたのです。

その所業を間近で見た時、GUIに頼らず、サーバー環境だけで完結させる Viコマンドの真価を知りました。「自分も先輩のように、どんな環境でもさらっとタスクを終わらせられるようになりたい」と強く感じたのを覚えています。

Viができると、スクリプト作成のハードルが下がる

その日から、Viについていろいろ調べ学習しました。そこで気づいたのは、Viを使いこなせるようになると、頭の中の「やりたいこと」がそのままコードになるということです。

スクリプト未経験だと、「どう書けばいいか分からない」「何から手をつければいいか困惑する」という心理的な壁があると思います。しかし、Viコマンドをあらかた習得すると、その壁が驚くほど低くなります。

一から一文字ずつコードを打つのではなく、「この設定箇所をコピーして(yy)」「不要な行を消して(dd)」「別のファイルから持ってくる」といった操作が自在になるにつれ、スクリプト作成へのとっつきにくさが解消されていきました。
「書いて試す」というトライアンドエラーのサイクルが高速化され、以前よりも自動化に対するハードルが下がったと実感しています。

具体的にここが変わる:編集から「構築」へ

行のコピー(yy)、削除(dd)、検索(/)といった基本操作が指に馴染むと、スクリプトのひな形を作るスピードが劇的に上がります。「思考を止めずに手を動かせる」ことが、複雑なロジックを組む際の手助けになります。

よく使う基本操作

コマンド 動作 詳細
yy 行のコピー(ヤンク) 現在の行をコピーします
dd 行の削除 現在の行を削除します
p 貼り付け コピー・削除した内容を下方向に貼り付けます
/ 文字列検索 ファイル内を下方向に検索します
n 次を検索 次の検索候補へ移動します
u アンドゥ 直前の操作を取り消します

一括置換の快感

:%s/old/new/g を知ってからは、数百行あるスクリプトの変数修正も怖くなくなりました。手作業で直してミスをする不安から解放されるのは、精神的にも大きなメリットです。

置換コマンドの形式

要素 意味 詳細
: コマンドラインモード コマンド入力状態に移行します
% 範囲指定(全行) ファイル内のすべての行を対象にします
s substitute(置換) 置換コマンドを呼び出します
/ 区切り文字 検索語や置換語の境界を示します
old 検索文字列 置換したい元のテキストです
new 置換文字列 新しく書き換えたいテキストです
g global(全体) 1行の中に複数一致箇所がある場合、すべて置換します

【実践編】5分でできる「一括置換」ハンズオン

理屈がわかったら、適当なLinuxサーバーで実際に試してみるのが一番です。以下の手順で「100行を一瞬で書き換える」体験をしてみましょう。

1. テストファイルの作成と権限付与

まずは空のファイルを作り、編集権限をつけます。

touch test.txt
chmod 755 test.txt
vi test.txt

2. サンプルデータの用意(100行書く)

Viが開いたら、以下の手順でIPアドレスが記載された文章を100行用意します。

i キーを押して挿入モードに入り、 path/to/1.1.1.1 と入力。

Esc キーでコマンドモードに戻る。

yy で行をコピーし、 99p と打ち込む(これだけで100行に増殖します!)。

3. 一括置換の実行

ここで、すべてのIPアドレスを 1.1.1.2 に変更してみましょう。
コマンドモード(Escを押した状態)で以下を入力して Enter を押します。

:%s/1.1.1.1/1.1.1.2/g

画面上の1.1.1.1が一瞬にしてすべて1.1.1.2に変わるはずです。確認できたら :wq で保存して閉じます。

4. 後片付け

実習が終わったら、作成したテストファイルを削除して作業完了です。

rm test.txt

「その場」で直せる強み

わざわざファイルをローカルに落として、編集して、またアップロードする……そんな手間はいりません。SSHで入ったその場で、思いついたロジックをすぐに形にできる。この機動力こそが、現場での「即戦力」に直結します。

1、2年目の今、Viを覚えるべき理由

現場では、いつも自分の使い慣れたエディタ(VSCodeなど)が使えるとは限りません。むしろ、制限の多い環境や、何もインストールされていない真っさらなサーバーで「何ができるか」が試されます。

そんな時、Viのコマンドが打てるだけで、あなたは指示を待つだけの「作業員」から、自らツールを生み出し課題を解決する「エンジニア」に1歩前進できます。

最後に:Viは裏切らない

最初は操作が特殊で、挫折しそうになるかもしれません。でも、一度指が覚えたコマンドは、環境が変わっても一生使い続けられる武器になります。

自分が先輩のvi操作を見て感動したように、皆さんもぜひViをスキルセットに加えてみてください。現場で「おっ、こいつデキるな」と思われる瞬間は、案外そこから始まるのかもしれません。

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?