done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

個人の雑多なメモ取りには何がいいか

雑多なメモをPCで取ることが多いが、あっちに書いてしまったりこっちに書いてしまったりとイマイチまとまらない。

evernote.com www.notion.so boostnote.io

あたりを使ってきたが、なんというか、ノートのとり方をアプリに決められてしまっているようで嫌になってしまう。

それぞれの製品で、個別にはとても便利なところがあるんだが、個人で使うにはオーバースペックすぎると思ってしまいます。

結局最近は妥協案として、GitHubのプライベートリポジトリにMarkdownでとにかく突っ込んでおいて、後で検索する、というやり方にしているけど、なんだか効率よくない気がする。

なにかいい方法はないだろうか。要件としては、

  • Markdownで書ける
  • Gitで管理できる
  • タグなどが使える
  • TOCを勝手に作ってくれる
  • いい感じに検索ができる
  • 画像なども挿入できる

くらいかなぁ。Gitで管理できるのが少ない・・・あとでblameして、いつそのメモを書いたかを思い出したいときとかあると思うんだけどな

sshcodeが便利そう

前置き

最近WSL内にVSCodeをインストールして使っていたのですが、やはり動作が遅いのがどうしても気になっていました。

そういえば最近

coder.com

ってのが話題になっていたなーと思い、いっそ適当なVPSを借りてブラウザ経由でVSCode動かしたほうが生産的かなーとか思って少しあさっていると、以下のプロダクトを見つけました。

GitHub - cdr/sshcode: Run VS Code on any server over SSH.

適当なLinuxを動かしているサーバを指定して、コマンドを実行するだけでcoder-serverのインストールから自動でやってくれて、over SSHVScodeが動かせる?ということで、試してみました。

使い方

適当なVPSLinuxが動いていて、SSHログインができることが条件だと思います。

今回は、AWS Lightsail上で動いているUbuntu 18.04のVPSを用意して試してみました。つなげるもとはWSLです。

  1. github.com から、バイナリを落としてきてWSL上のPATH通っている適当な場所に配置
  2. sshcode -ssh-flags "-p <ポート番号> -i <秘密鍵の場所>" <user名>@<host名>と実行
  3. vscodeが立ち上がる

なんとこれだけで本当に動きました。どうもWindows側にChromeをインストールしていて、パスが通っていると勝手にそっちを使ってくれるらしく、まじで便利。動作も快適です。

セキュリティ面とかがよくわかっていないのですが、SSH tunnelingしている感じになっているのかな?そのあたりが安全なら、まじで私にとっては最強のソリューションかもしれないです。

VimからVisual Studio Code (VSCode) に移行した

VSCode(Windows)とVSCode(WSL)
VSCode(Windows)とVSCode(WSL)

普段はインフラエンジニアをやっているので、サーバにSSHして設定ファイルをVimでいじるみたいなことがままあります。 その延長線上で、プログラムのコードだったりとかもVimで書いていたのですが、正直 .vimrcいじって頑張って補完とか出すのめんどいなーと思っていたこの頃でした。 (ぶっちゃけJavaとかはIntelliJ使っていたりいまいち統一感なかったですが)。

そんな中、なんの気無しに以下の記事を読んでいて、すごいなーと思う一方、「ここまで頑張ってやっとVSCodeと同様なの?」という気持ちが湧いてきてしまいました。 (記事の著者の方には申し訳ないですが・・・)

qiita.com

そんなわけで、VSCode をプログラミング用途で使い始めてみました。VSCode自体は昔から使っていたのですが、 Windows環境に入れていただけで、Windowsではそもそもプログラミングしないので、テキストエディタとしてしか使っていなかったです。

しかし、VSCodeをWSLの中で動かすことができると知り、試してみることにしました。

使っている環境は以下です。

もともとIntelliJもWSLの中で使っていたこともあり、多分動くだろうなーと思っていたのですが、なぜか今まで試していませんでした。

WSL(Ubuntu)には、以下の手順に従ってインストール。Snapでもインストールできるかもしれませんが、なんとなく試していません。

Running Visual Studio Code on Linux

インストール後はcodeと打てば起動します。簡単ですね・・・と思っていたら、なぜかWindows側のVSCodeが立ち上がってしまいました。

確認してみると、どうやら$PATHWindows側のVScodeを指している模様。以下のように、aliasを貼って回避しています。

alias code="/usr/bin/code"

Windows側のバイナリがWSLからシームレスに実行できると、こういう弊害があるのか・・・)

aliasを貼ったあとは無事に動いています。以下、所見。

  • いいところ
    • プラグイン入れたら、あとは基本デフォルトのままでいい感じに動く
    • VSCode内のTerminalが普通に動く
      • 動くかどうか不安だったのですが、ちゃんとWSL内のZshが動きます。
  • 悪いところ
    • 動作が遅い
      • VScodeだからなのかはわからないですが、多少もたつく感じがします。コード行数が多くなると辛くなるとかあるかも。
    • たまに表示が壊れる
      • 同様の環境で動かしているIntelliJではないのですが、たまにポップアップとかがぶっ壊れて操作不能になります。VScodeを再起動すれば治りますが

総評

VimもいいけどVScodeもいいね

小ネタ: WSLからWindowsのアプリケーションを呼び出したいとき

WSLは便利ですが、基本GUIの環境が入っていなかったりして、たまにコマンドラインからWebブラウザを呼び出すようなスクリプトを使っていたりすると動かなかったりします。

URLをWindows上のChromeなどにコピペすればよいのですが、面倒でした。

なので、WSLからWindows側のChromeコマンドラインで呼び出して使いたかったのですが、やってみたところ以下で普通に動きました。

"/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" google.com

これでChromeのタブが開きます。インストール先は適宜変えてください。aliasに登録しておくと便利だと思います。

「入門 監視」を読んだ

入門 監視

すげータイトルだと思って思わず買ってしまった。

最近のイケてるツールの使い方とかを羅列した感じなのかな、という軽い気持ちで読み始めていたが、全然違った。全12章とおまけがあるわけだが、そのうち前半部分の1章から4章までは、監視の具体的な方法というより、業務としてシステムの監視を行う際のいわば「心構え」といった感じだった。

  • なぜ監視をするべきなのか
  • そのアラートは本当に上げる必要があるのか
  • というか外注できないのか

などなど。これはただの想像だが、監視というのはそれ自体がお金を産むわけではないので、この本の著者は常にこういったことを周りに説明する必要があったのだろうなと思う。 アラートが上がった際に止む無くオンコール対応しなければならない場合に備えてローテーションを組む方法まで書いてあって、にじみ出るような苦労を感じた。(あとこの著者は多分Nagiosが嫌い)

監視する対象はシステムのみにとどまらず、ビジネスのKPIに関するものもあった。言ってしまえば、あるサーバのあるプロセスのうちどれかが死んだからどうだ、というのは割とどうでもよくて、それがどれだけビジネスインパクト(より直接的に言うなら、お金)があるか、というのが重要なのだろう。極論すれば、別に全く儲からず重要でもないビジネスを支えるシステムなぞ監視する必要もないわけである。

「システムだから監視するよね」じゃなく、「どれだけ価値があるシステムで、それが止まった場合どれだけビジネスに影響があって、どれだけ損失があるかを予め把握した上で、それに対する保険のために監視しましょう」というのが筋なのだろう。(個人的には、こういった考え方は苦手で、ついついイケてるツールとかオレオレ最強監視スクリプトとか、そういったことを考えがちであって、反省させられた)

ぶっちゃけツールの使い方を知りたいなら別の本を読んだほうが良いと思いますが、「そもそも監視って何から始めたらいいの?」って人にはおすすめです。

アメリカへの長期出張用にLycamobileを使ってみる

数週間アメリカへの出張となった。これで二回目で、前回行ったときは現地のAT&Tに行ってプリペイドSIMカードを買って使ってたんだけど、今回は日本から買って行ってみることにした。

いろいろ種類はあるみたいだけど、今回はLyncamobileを利用する。

準備

現地で変にトラブっても嫌だったので、日本でアクティベートした。帰国日が使用期限を超えないように調整して、日本のiPhone 8 (docomo版をSIMフリー化済) にSIMを入れる。

暫く経つとSMSが届いて、現地の電話番号を確認できる。 準備はこれだけでおしまい。とりあえずSIMを戻す。

現地で使ってみての感想

現地に着いてから、さっそくSIMをLycamobileに差し替える。暫く経つと通信ができるようになる。

簡単にWebブラウズなどする分には、通信速度は特に問題なさそう。

ただし、通信可能域が狭い気がする。T-mobileの回線を利用しているらしいが、なんかちょくちょく途切れる。別に田舎とかでないのだが。

結論

アメリカのAT&Tとか行ってSIMを買うよりは楽だと思います。

「転職の思考法」を読んだ

ぶっちゃけ今すぐ転職したいかと言われるとそうでもないというか、なんとなく閉塞感を感じるし面白そうな仕事は任せてもらえてないしで不満は溜まっているわけではあるんだけど、世間的に言えばそれなりのお給料はもらえるという点では満足している。

とりあえずビ○リーチとかに登録して、履歴書を書いて見るわけだがこれがまあ書けない。社外からみて、というのがやはり難しい。うちのチームはそれなりに体外アピールをしやすいところではあるはずだが、それでも書けないとなると皆一体何書いているんだ?という疑問が湧いてくる。

「転職の思考法」でも、まずアドバイスとして出てくるのは「自身のマーケットバリュー」を測る、ということだ。いろんな軸が出てくるわけだが、どれもそれなりに難しい。「会社を変えても、価値のあるスキルをどれだけ持っているか」という問いにぱっと答えられる人がどれだけいるのだろう? そんなのぱっと答えられるような奴ならどこでも行けるんだから悩む必要なくない?と思ってしまった。

そんなことを思っていたが、「終わりに」で筆者が語っていた言葉を見て納得した。「転職の思考法」というのは、とどのつまり転職そのもの、というよりは自己を高めるといった自己啓発的なものなのだ。「転職がいつでもできるような人材になれるよう努力しろ」ということを筆者は言いたかったのだろう。 そのような人材であれば、たとえ転職しないにしても周りの環境を変える材料となるから。

もう少し努力してみるか、という気持ちにさせてくれる本だった。たとえ、転職しないにしても。