とあるプログラマの地方移住

f:id:y_d:20180216013721j:image

関東から東北に移住してまとまった時間が経とうとしているのと、今日はちょっと色々あったので、これまでの事を振り返り書いてみようと思う。

地方移住を検討しているプログラマへ向けて自分の経験が多少なりとも何か役に立てば嬉しい。
なお地方移住を勧める訳でも「地方が良い悪い」「都会が良い悪い」という事を言いたい訳でもない。

自分について

田舎や都会の定義は曖昧なので、まずはじめに自分について書いておく。

  • 地元は岩手県盛岡市
  • 神奈川県に10年以上住んでいた
  • 東京のメーカー系SIerで主に受託・派遣・常駐をやっていた
  • 子供が産まれたことをきっかけに数年前に地元に戻った

転職活動

転職活動は大変だった。

会社の絶対数が少ないため応募先の選択肢が非常に少ない。

そして面接を受けるのも大変だった。
自分の場合はSkype面接、東京での面接、勤務地(岩手県)での面接をこなしたが、勤務地での面接は物理的な移動を伴うため面接先のスケジュール調整がとても大変だった。
しかしこれはあらかじめ想定していたので、まずは所属中の会社で退職の段取りを行い、たくさん余っていた有給消化期間で地元に戻り、面接と引越し先の選定を行ってきた。
このやり方で結果的にはうまく行ったが、次の会社が決まる前に退職の手続きをすることになり当時の上司には非常に心配された。まあ逆の立場なら自分も心配しただろう。

給与相場

転職エージェントによると東京の年収は地方の平均1.5倍らしく、例えば東京で年収500万なら地方では333万ということになる。
これは人や地方によって状況は異なるだろうからこの辺にしておく。

物価

都会は物価が高いと言う人がたまにいるが、それは間違いだと感じる。
確かに家賃や駐車場代は都会の方が高いが、都心から離れた場所なら家賃は地元と大差なかったりするし、食材や洗剤などはだいたい同じか、どちらかというと関東の方が安い。
給与平均も含めトータルで見ると都会の方がお金が貯まると思う。

風景

遠くに見える山など、地方ならではの自然に溢れた風景はとても気持ちがいい。
もちろん時間が経つにつれ新鮮味はなくなりはするが、今でも風景に見とれる時はたまにある。

アニメ

テレビで放送されるアニメは限られているのでAmazon Prime VideoとNetflixで見るようになった。
地元ではアニメを見ている人自体少なく感じるが、コンビニではアニメコラボ商品が数多く並んでいて、ちゃんと売れているのか他人事ながら不安になる。

都会も地方も極端には変わらない印象。
相対的に見て関西にはお喋りな人が多いだろうし、そういう地域性はあると感じる。

買い物・娯楽

地元はイオンの支配下にあり、買い物となるとイオンに行くことになる。
お気に入りだったお店が地元には出店してなかったりで、買い物や食事、映画など多少の諦めは必要になるが、そういったものは無くても生きていけるので我慢出来なくはない。その代わり地方ならではの施設もあるので、その辺はバランスだと思う。

交通手段

自家用車がないと生きていけない。電車やバスもあるが網羅率が低いので自家用車がないと本当に生きていけない。
そして雪が降るとヤバい。
自動運転の世界が早くきて欲しいが、雪が降ると車線もクソもないので自動運転なんて出来るのかと不安になる。

最後に

地方移住を検討している人の参考になればと思う。


(この文章は大雪のより軽い交通事故を起こしてしまい、会社を休んだ日の夜に書かれました)

golangでTUIのスーパーマリオブラザーズ

golangがどんなものか軽く触ってみようかと思い、何か題材でもないと触るのも難しいだろうという事で、TUIでスーパーマリオブラザーズでも実装してみようという謎の題材をふと思いついた。

早速実装しては見たものの、本来の目的であるgolangを知る事そっちのけで実装してしまい、あまり理解が深まらないまま今に至る。題材が悪かったかも。

github.com

Githubのリリースページから実行ファイルをダウンロード、解凍、ターミナルから実行で起動します。
操作方法は、左右の矢印キーで移動、上矢印キーでジャンプです。

f:id:y_d:20161105022858g:plain

MacLinuxWindowsで動きますが手元のWindows7だとチラツキがハンパないです。
とはいえMacでコードを書いて、MacWindowsのexeをビルドして、Windowsに配布でそのまま動くというのはなかなか素敵な体験でした。

普通すぎるエディタ「micro」

f:id:y_d:20160902012300p:plain

go言語(termbox-goではなくtcell)で実装されたmicroというターミナルベースのテキストエディタの version1.0 がリリースされたようで、試しにちょっとだけつかってみたのですが、なかなか使い心地がよいです。

というわけで(個人的に)使い心地が(いい意味で逆に)普通すぎるエディタ「micro」の紹介になります。

github.com

microの特徴

microはターミナルベースのエディタであるものの、マウス操作がサポートされていたり、GUIアプリケーション風のキーバインドが設定されていたりと、いたって普通なGUIテキストエディタを使っているかのように直感的な使い心地を実現しているのが最大の特徴だと思います。

  • いけてる特徴
  • 残念なところ
    • 日本語表示は問題なさそうだが、日本語入力すると挙動がおかしくなる
    • 使うターミナルによってちょっと動きがおかしいことが多々ある

多少残念なところもあるけど、 Nightly build があったりするようで、今後の改善に期待が持てそうです。

ダウンロード

  1. とりあえず使ってみるだけなら、ここのリリースページからダウンロード(macOSなら micro-1.0.1-osx.tar.gz )。
  2. ダウンロードしたら ~/Downloads/micro-1.0.1/micro にコマンドがあるはずなので、そのようにターミナル上で叩くとmicroエディタが起動する(macOSの場合)。
  3. ~/Downloads/micro-1.0.1/micro /path/to/file.txt のようにコマンドに続けてファイルパスを指定すればそのファイルが開かれる。

使い方

メモレベルだけど具体的な使い方は以下の通り。

基本操作

  1. 矢印キーもしくはマウスクリックでキャレット移動
  2. Shit+矢印キー もしくはマウスドラッグで領域選択
  3. マウスホイールで表示領域の移動(キャレットはそのまま)
  4. Vimの入力モードのようなものはなく、キーボード操作でそのままテキストが入力される
  5. esc で何かしらの入力待ち状態をキャンセル
  6. 終了したいときはCtrl-q 。編集内容を保存しなくて良ければ続けて y を入力で終了。

※マウスを使った操作を行う際は「マウスレポーティングを許可」する(macOSのターミナルの場合)

f:id:y_d:20160902011222g:plain

コピペ

  1. 下記のいずれかで領域を選択
    • Shif+矢印キー
    • Ctrl-a
    • マウスでテキストをドラッグ
  2. Ctrl-c でコピー ( Ctrl-x で切り取り)
  3. Ctrl-v で貼り付け

ヒストリー

  1. Ctrl-z で戻す
  2. Ctrl-y でやり直し

検索

  1. Ctrl-fFinding: と聞かれるので、検索したい文字を入力してEnter(正規表現も使える)
  2. Ctrl-n で次にマッチする箇所に移動
  3. Ctrl-p で前にマッチする箇所に移動
  4. esc で検索を抜ける

置換

  1. Ctrl-e でコマンド入力欄表示
  2. replace {{検索文字列}} {{置換文字列}} とうつ

例: replace "A" "B"

コマンド実行

  1. Ctrl-e でコマンド入力欄表示
  2. run {{コマンド}} とうつ

例: run ls

テーマの変更

  1. Ctrl-e でコマンド入力欄表示
  2. set colorscheme {{テーマ名}}

例: set colorscheme monokai

使えるテーマは今のところ下記がある

default
simple
solarized
solarized-tc
atom-dark-tc
monokai
gruvbox
zenburn
bubblegum

f:id:y_d:20160902011208g:plain

画面分割

  1. Ctrl-e でコマンド入力欄表示
  2. vsplit or hsplit を入力して Enter(既存ファイルを開くときは vsplit file.txtといった感じ)
  3. アクティブのパネルを切り替えるのは Ctrl-w もしくはアクティブにしたい領域をクリック
  4. Ctrl-q でアクティブ状態の分割パネルを閉じる
  5. 編集済みのタブを閉じる際は、yで編集内容破棄、nでキャンセル、sで保存(ファイル名入力)

※タブと組み合わせると、挙動がおかしくなる?

f:id:y_d:20160902011211g:plain

タブ

  1. Ctrl-t で新規タブ作成&新しいタブを表示 (画面上部にタブができる)
  2. Ctrl-¥ で次のタブに移動
  3. Ctrl-] で前のタブに移動
  4. 上部タブをクリックでもタブ移動可能
  5. Ctrl-q でタブを閉じる
  6. 編集済みのタブを閉じる際は、yで編集内容破棄、nでキャンセル、sで保存(ファイル名入力)

※画面分割と組み合わせると、挙動がおかしくなる?

f:id:y_d:20160902011204g:plain

ファイルオープン

  1. Ctrl-o 押下
  2. 編集中データがあればyで編集内容破棄、nでキャンセル、sで保存(ファイル名入力)
  3. File to open: と聞かれるのでファイル名を入力(絶対パス相対パスを入力。入力中にTab押下で入力補完が効く)

ファイル保存

  1. Ctrl-s 押下
  2. Filename: と聞かれるのでファイル名を入力(絶対パス相対パスを入力。入力中にTab押下で入力補完が効く)

行番号

  1. Ctrl-r で行番号表示、非表示切り替え

行番号に移動

  1. Ctrl-l の後に行番号入力で、その行に移動

タブサイズ変更

  1. Ctrl-e でコマンド入力欄表示
  2. set tabsize 4 ※4は例

※ファイルの拡張子ごとに設定することも可能らしい

ソフトタブ

※tabキー押下で、半角スペースを入力する設定

  1. Ctrl-e でコマンド入力欄表示
  2. set tabstospaces on で有効化
  3. set tabstospaces off で無効化

タブの可視化

  1. Ctrl-e でコマンド入力欄表示
  2. 例: set indentchar >

※設定を解除する方法がわからないが、 ~/.config/micro/setting.json を編集して indentchar" " を設定すると良さそう。

その他オプション変更

  1. Ctrl-e でコマンド入力欄表示
  2. set {{オプション名}} {{設定値}}
  3. ~/.config/micro/setting.json に設定が書き出される
  4. ファイルの拡張子ごとに設定することも可能らしい

詳しくは下記 https://github.com/zyedidia/micro/blob/master/runtime/help/options.md

その他キーバインディング

下記に詳しく書いていある https://github.com/zyedidia/micro/blob/master/runtime/help/keybindings.md

さいごに

以上のように、普通のGUIテキストエディタのように使えるので、学習コストが低いエディタだと思います。 機会があれば使ってみてはいかがでしょうか。