Webアプリ開発の作業効率を高めるために

Webアプリ開発の作業効率を高めるために

普段なにげなく開発等で使っているターミナルの環境ですが、社内皆それぞれ違っていて面白いと思ったので自分がよく使うものを紹介したいなと思います。

概要

editerあたりの話になるとちょっと面倒なので、以下のちょっとしたものを紹介します。

screen(GNU Screen(グニュー・スクリーン))

仮想端末マネージャー。作業しているターミナルの画面分割が可能でタブ形式のターミナルと同じようなことも可能

ssh(セキュアシェル)

暗号化した状態で通信し、UNIX / Linux の中核(kernel: カーネル)が管理している機能を用いて、対話形式で 様々な処理を行う

screen

GNU Screenです。
これも標準で入っているケースがあります。

タブ形式のターミナルが多いのであまり恩恵がないのかもしれないですが、いろいろ使えるので紹介したいなと思いました。

画面分割以外で面白いと思う機能としては似通ってますが以下になります。

  1. サーバ上に状態を保持したままログアウト可能
  2. 複数人で1つのセッションにアサイン可能

サーバ上に状態保持

screenを実行することで以下のようになります。
 ※.screenrcによる設定が反映されているのでデフォルトの状態ではないです

image19

サーバにログインして「screen」の実行

image09

~/.screenrcの設定次第ですがこのようになります。
例では仮想タブを3つ用意しました。

image18

この状態で×ボタンを押してターミナルを落とします。
 ※停電等による作業端末の終了やうっかりターミナルを終了してしますケースと同じ
再度、ターミナルを立ち上げて該当サーバにログインし、
screenのセッションにアクセスします。

image15

image10

“4028”というセッションが1つなので指定なしでscreen -xを実行します

image08

分かりづらいですが、カウントが継続しています。

これだけだと大したことないかもしれません。
ただ、本番環境で何かのバッチを手動実行する作業時に、作業端末が落ちてしまったり人為的にミスでターミナルを落としてしまうといったケースは有ると思います。

そんな時にscreen等の仮想端末ソフトを用いていれば再度アクセス(アタッチ)すれば処理が続行されていることを確認できますね。

マルチユーザ

複数人で1つのscreenセッションを共有することが可能です。

image02

2つウィンドウを用意しました。
guest1側でscreenにつないでいます。

image16

この状態だとguest1のscreenにはつなぐことはできません。
次にguest1側でつなぐことができるように設定します。

guest1側でコマンドモードにして以下を実行

次にguest2側で以下のように実行する

※setsidをしていないと「Must run suid root for multiuser support.」となるので確認が必要

image14

guest2側でログインして適当にうった内容になります。
わかりづらいですが、guest1側にも反映されますね。

用途としては遠隔地の人とペアで作業する際(例えばペアプロや本番作業など)に使えると思います。

ssh

簡単な多段ログインになります。
標準でインストール済みのケースが多いnetcat(nc)を用います。

多段ログイン

踏み台サーバにncがインストールされていれば実行可能です。
以下の設定を「~/.ssh/config」に記述する形になります。

この状態で以下を用います。

「踏み台サーバ」を経由して「ログイン先ホスト名」にアクセスします。

ncはネットワークのやりとりを標準入出力にリダイレクトするのでこういったことが可能となります。
古典的かもしれないですが便利な機能だと思います。

まとめ

ありきたりの手法ですが、使うと便利であり、ツールも最初から入っているケースもあるので敷居は低いと思います。

コメント