このブログは2015年2月18日に更新を停止しました。すべての記事は https://chroju.github.io へ移行されています。

Arch Linux + awesome with Windows 8.1 in VAIO Pro

snapshot1_1

先日VirtualBoxでArch Linux入れてみたところでしたが、引き続いてVAIO Proへのインストールが完了したのでまとめます。なお、Window8.1とのデュアルブートです。上のスクリーンショットが完成形。

事前準備

まず起動前の状態でASSISキーを押してBIOS設定を呼び出し、Secure Bootをdisabledにしておきます。Arch LinuxではSecure Bootをサポートしてないです。あとここではExternal MediaでのBootを許可したりとかしておくべきなんですけど、怠惰なんでASSISTメニューからUSBメモリでの起動を選ぶことでインストール作業を済ませてしまいました。Arch Wikiには「External MediaいじってUSBブートしろ」って書いてあるんで、そっちに従った方がいいと思います。

続いてWindows側での設定。

  • コントロールパネル > 電源オプション > 電源ボタンの動作の選択 > 高速スタートアップを有効にする をオフ
  • スタートボタン右クリック > ディスクの管理 > パーティションを縮小

既存パーティションを縮めることでLinuxインストール用の領域を作るのが通例ですけど、自分の場合これだ空き容量が小さすぎたので、回復パーティションを削除することにしました。そのために16GBのUSBメモリを買ってきて、回復ドライブを作ります。

VAIO Care > その他の機能 > リカバリーメディアの作成

作成が無事に終わったら、その後一度シャットダウンしてASSISTキー押して起動。以下の手順でリカバリーパーティションが消せます。

トラブルシューティングを開始 > Microsoft IME > トラブルシューティング > VAIOのリカバリー機能 > Windows 8.1 > ツール > リカバリーパーティションを削除

が、自分の場合これだとエラーが出て結局ダメだったんでdiskpartで削除しました。これもあまり褒められたやり方ではないと思うので推奨はしません。256GBモデルをケチらず買っときゃよかったなと初めて思った次第。

インストール

インストール用のUSB指して再度ASSISTキーを押し、USBメディアから起動。そこからは前回のエントリーを参考に、通常通りインストール進めていきます。ポイントは以下の点かなと。

  • ディスクパーティション、ESPはWindowsのものを使うので新たな切り出し不要。自分は/mnt/boot(200MB)と/mnt(残り全部)だけ切りました。
  • 実際にインストールしていく段階ではネット接続が必要だが、wifi-menuWi-Fi接続できる。意外に簡単。
  • インストール後の設定作業でもwifi-menuを使えるようにするため、pacstrapするときにdialogとwpa_supplicantも入れておく。

だいたいブートローダーの設定前までは特にハマるポイントはないはず。

ブートローダーの設定

grub-installまで完了すると、/boot内は次のような感じになりました。

/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
/boot/efi/EFI/grub/grubx64.efi

……efiがダブったパスになったのあれなんですけど、とりあえずここで言いたいのはもともとのWindowsブートローダーとgrubがダブりますねという話で、勝手にgrubの方を上げてくれればいいんですけど、このPCの場合なのかWindows8の場合なのかわかりませんが、bootmgfw.efiの方がどうしても呼ばれてしまうので、パスを変える必要があります。

$ cd /boot/efi/EFI/Microsoft/Boot/
$ mv bootmgfw.efi bootmgfw.efi.original  #あとで使うので必ず残すこと
$ cp /boot/efi/EFI/grub/grubx64.efi bootmgfw.efi

あとはGRUBのメニューエントリにWindows8ブートローダーを追加してやればよいのですが、この辺はArch Wikiに記述があるのでそちらを見ながらやった方が確実です。で、当然ながらここでchainloaderで呼び出すのがさっき.original付けて退避した元のブートローダーってことになります。

なお、ここでbootmgfw.efiを上書きしてやっても、Windows Updateをかけることで元に戻ってしまうなんて話がありまして、自分も実際その現象には遭遇しました。面倒だけど遭遇したらもっかいUSBブートしてブートローダー移し替えてやるしかないです。

起動後の各種設定

rebootをかければGRUBのメニューが起動して、Arch Linuxをブートできるはず。あとはwifi-menuにつないで前回同様にslimとawesomeを導入、その他もろもろ設定します。まずはyaourt入れとくと何かと便利です。前エントリーに書いたのでやり方省略しますが、yaourt -Syuaは最初にかけておくのが無難。具体的に言うとDropbox落としてみたらバージョン古くて使えなくてハマった。

ドライバ系の設定はだいたいArch WikiVAIO Proの項があるので見ればOK。

  • 今回はVirtualBoxなので、当然ながらビデオドライバ(xf86-video-intel)が必要。
  • タッチパッドのドライバはxf86-input-synapticsを入れる。
  • 音はalsa-utils入れたら普通に流れた。

ラップトップだと折りたたんだときの電源の扱いがいろいろあるかと思いますが、デフォルトだとサスペンドになってるので、/etc/systemd/logind.confを編集してハイバネートに変更しておきます。

HandleLidSwitch=hibernate

Fn+Functionキーでの各種操作は当然ながらできなくなったので、xbindkeysを使って設定します。xbindkeys -kを打つと入力待ちの小窓が現れるので、そこで設定したいキーバインドを押すとキーコードが取れます。あとは取得したキーコードを使って、~/.xbindkeysrcキーバインドを設定。

"xbacklight -inc 10"
  m:0x0 + c:233
"xbacklight -dec 10"
  m:0x0 + c:232
"amixer set Master 3%+"
  m:0x0 + c:123
"amixer set Master 3%-"
  m:0x0 + c:122

alsamixerでいちいち音量調節するのが面倒なので、音量の増減もキーバインドしときました。~/.xbindkeysrcを設けた状態でxbindkeysコマンド打てばキーバインドが設定されるので、~/.xinitrcに書き込んで自動起動するようにしておくと捗ります。

フォントはttf-rictyotf-takaoぶち込みました。ターミナルはRictyが好きだけどFirefoxとかGUIアプリで使うにはTakaoが見やすいので使い分け。パッチ当てたりとかは面倒なのでまだしてないけど、もうなんかいっかなって気がする。vim-airlineのためだけにパッチ当てるってのも手間かなと。フォント綺麗に表示するためにここの設定はしとくべきだと思います。

ターミナルはterminatorです。機能豊富なのとノウハウ多くて安定してそうなので。設定は画面右クリック→設定で呼べます。一度何か設定を入れると~/.config/terminator/configが作られるので、これを編集しても設定可能になる。今こんなとこです。透過はやっぱ素敵。

[global_config]
  title_transmit_bg_color = "#490001"
  inactive_color_offset = 0.4
[keybindings]
[profiles]
  [[default]]
    scrollbar_position = hidden
    background_image = None
    background_darkness = 0.66
    background_type = transparent
    use_system_font = False
    font = Ricty 14
  [[mysetting]]
    background_image = None
    background_type = transparent
    scrollbar_position = hidden
[layouts]
  [[default]]
    [[[child1]]]
      type = Terminal
      parent = window0
      profile = default
    [[[window0]]]
      type = Window
      parent = ""
[plugins]

ターミナル決めたら忘れずにデフォルトターミナルも変更します。rc.luaをコピーしてきて編集します。

cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua

ターミナルに関する記述の行を探して変更。

terminal = "terminator"

あとは欲しいソフト適当に入れます。コードとブログ書くのに特化したマシンなので、大したのは入れてないです。

  • Dropboxは開発中のコードやdotfilesやメモやタスク全部入りなので自分的には必須。容量の余裕そんなないのでテキスト関連だけ部分同期です。yaourtで入れてdropboxd叩けばGUIで楽々設定できます。あとは~/.xinitrcにも忘れず書き込むこと。
  • ブラウザはVimperatorに慣れてるのでFirefox。以降には昔FEBE使ったりしてた時期もありましたが、今時だとFirefox Sync使えばだいたいいい感じになる。
  • バッテリー状態見たいのでACPI入れる。本当はawesomeのウィジェットで常時表示させたいけどまだやってない。
  • エディタは前回記事でVim入れましたが、その後Wiki読んだらRuntimeもろもろ入ってるのがGVimだけだとわかったんでGVim入れ直しました。colorscheme適用するとターミナルの透過背景塗りつぶされるんで、背景設定の部分だけコメントアウトするとかアレなことしてます。対策求む。
  • 開発用にrbenv。
  • スクリーンショットはKSnapshot使ってます。

だいたいこんなとこですかねー。骨は折れましたがそこそこ快適に使えてます。まだやりたいことはあって、テーマ変えたりとかウィジェット置いたりとかそのへんが今後の課題です。

あー、あとそういえばlibata.force=noncqを設定しないとSSDの場合は遅くなるていう話を見かけましたけど、今のとこうちの環境は普通に動けてます。一応やっといた方がいいのかね。

参考

RubyHiroba 2014に(少しだけ)行ってきた

本当に少しだけというか2時間だけ居られました。LTほぼずっと聴いてて永和システムマネジメントさんの生活発表会を聴いて帰ってきました。

アンテナの広さとか

インフラエンジニアである自分がRubyに興味持ったのは、最近インフラ界隈でもRuby使う機会多いなと思っていて。ChefやCapistranoがそうだし、あとVagrantfileもRubyの文法で書かれてるし。あと何かしら言語も身につけるべきだよなと思った時、汎用性が高そうだよなとか日本製だからというのもあって選んでます。でもRubyで何ができるんだろ?っていまいちちゃんと定まってなくて、最近はWebスクレイピングを少しやってたりしたんだけど。

LT聴いてると話題の幅が広くて驚く。何がやれるんだろ?なんて悩んでるのがそもそもおかしくて、コンピュータ上で情報を扱うのであれば言ってしまえば何でもいいのであって。きちんとアンテナ広げて何やりたいのかとか、何がやれるのかとか探って書いてかないと嘘だよなと。何が一番印象に残った?となるとRubicureなんだけど、手のつけやすいとこからとにかく書くって重要だと思う。他だとロジバンとか言語学かじってた人間としては興味をひかれた。

LTはきっかけ

「勉強会」って言われるとその場でいろんなことめちゃくちゃ吸収して文字通り「勉強するんだ」と意気込むような感じするけど、ぶっちゃけ5分のLTで得られる情報量は「勉強」って程のものではない。あれはこんな界隈があるんだとか、あんなことやってるエンジニアがいるんだって知るきっかけで、そこから自分で興味持って更に調べるなり、発表者に聞くなりするきっかけにすべきもんなんだなって今回遅まきながら気づいた。一方で発表者の側にとっても自分を知ってもらったり、マイナーな領域を広めたりするチャンスでもあって、コミケじゃないけどあまり主客を分けた意識になってしまうのは危険だと思った。流動的に自分も「主」の側に回れるようにならなきゃいけない。

みんなずっとコード書いてる。。。

常にみなさんMBAなりMBPなり開いてコード書くかプレゼン資料修正するかしてた気がする。そもそもうちの会社だと自分用ノートPC持ってるとセレブ扱いされる(商売道具なんだから値段云々言ってる場合じゃねーだろと個人的には思うんだが)んだけど何なんだよこの違いとか思った。とはいえ自分もノートPC持ってるけどコードはあんま書いてないので書かなきゃなと思う。MBAやっぱり羨ましいけど、VAIO ProにArch Linux入れたんで頑張る。入れた経緯は今度書く。

とにもかくにも自分、視野狭いなーと思いました。視野の狭さ故に自分がやれることとか、今後の働き方の選択肢も勝手に狭めている気がして。情報集めてコードに落としこむことをもっと意識したい。とりあえずるびまはちゃんと読もう。

VirtualBoxでArch Linuxのインストール練習

VAIO Proにcygwin入れたりして頑張っていたのだが、そろそろしんどくなってきたので、まともに開発に使える環境作るかーってことでデュアルブートを試みることに。デュアルじゃなくてOS丸ごと入れ替えたら?という話もありそうだが、仕事で使うのでWindowsを潰せない。かと言って仮想マシンだとこのPCのスペックでは心許ない。。ってことでデュアル。

ではディストリは何を使うか?だが、以前Ubuntuを使ったデュアルブートは構築した経験があるし、GUIでポチポチインストールするんじゃあんまり勉強にはならなさそうだなーということで、思い切ってArch Linuxを選んだ。ミニマルを是とするディストリだが、ミニマルどころか最初はsudoすら入っていないという徹底っぷり。使うものだけ入れろ!というポリシーは大変に共感できるものではあるが、それは当然難易度の高さと引き換えなわけで。。

さすがにぶっつけ本番は怖すぎるので、まずはiMac(OS X Marverics)上のVirtualboxでデスクトップ環境が立ち上がるとこまでやってみた。難易度が確かに高いOSではあるが、Wikiが非常に充実しているので、案外迷うこともないとは思う。逆に言えば、ここのInstallation GuideとBeginner's Guideにきちんと目を通した上でやるべき。こんなブログ記事だけに頼らずに。

なお、えっらい長い記事になった模様。

事前チェック

VAIO ProがUEFI環境なんで、今回の練習でもUEFIを用いることにした。Virtualboxの場合は仮想マシンの設定から「UEFI」を有効化できる。他にも初期設定ではインストールメディアをつないだり、外部メディアからの起動準備を優先させたりして、準備完了。

起動するといきなりシェルが現れる。ここから全部自力でコマンド打って入れてけというストイックさ。ひとまずはUEFIで起動しているか確認するため、UEFI変数を表示。

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
# efivar -l

続いてキーボードマッピング変更。 jp106とかusとか適宜。やらなくてもインストールぐらいはなんとかなるかもしれんが、viでコロンの位置違ったりすると不便。地味に。

# loadkeys hoge

事前チェックはこれぐらい。

パーティション

続いてパーティション分割。まずはfdisk -lによりハードディスクのデバイス名を確認し、そのデバイス名に対してcgdiskコマンドを実行。今回はGPTを用いるのでcgdiskだが、MBRならcfdiskでよい。あるいはgdiskfdiskもあるけど、やりづらいので自分はcを頭に付ける。

なおMBRとGPTの選択に関してはwiki内に記述がある。

ブートローダGRUB Legacy を使う場合、MBR を使うべきです。 古い BIOS を使う Windows (32ビット、64ビット両方) とのデュアルブートをするなら、MBR を使うべきです。 BIOS の代わりに UEFI を使う64ビットの Windowsデュアルブートをするなら、GPT を使うべきです。 https://wiki.archlinux.org/index.php/Partitioning_(%E6%97%A5%E6%9C%AC%E8%AA%9E)

分け方はわりと適当。swapはまぁ、なくてもいいかなと。

フォーマット、マウント

切り分けが終わったらそれぞれmkfsコマンド使ってフォーマットする。基本的にはext4でフォーマットするが、ESP用の領域はさっき書いた通りFAT32でフォーマットしておく必要がある。

  • mkfs.ext4 /dev/sda1でフォーマット
  • FAT32の場合はmkfs.vfat -F32
  • -vオプションで詳細表示、-cで不良ブロックのチェック
  • Windowsデュアルブートの場合、WinのEPSがある領域を/bootに指定する

そしてマウント。こんな感じで。

# mount /dev/sda1 /mnt

なお、EFISTUBの場合はESPと/mnt/bootを兼ねさせることも可能#EFI_System_Partition)らしいいのだが、EFISTUBってなに。。。? とりあえずgrub使う場合にEFISTUBのことは考えなくていいらしいので一旦無視した。

マウントが終わったらlsblk -fパーティションレイアウトの確認をしておく。念のため。

インストール

いよいよインストールである。本来ならその前にインターネット接続の設定が必要だが、Virtualboxの場合は特に何もせずつながってしまったので何もしていない。システムファイルのインストールでは、/etc/pacman.d/mirrorlistの上から優先的にミラーサイトが使われるので、好みのがあるなら予め編集して並び替えておく。基本的には日本(筑波大だが)を一番上にしとけば良いかと。

# pacstrap /mnt base base-devel

vimとかgrubとか必要なものがあれば、このコマンドの後にスペース空けて続けることで一緒に落とせる。この後の作業をある程度楽にできるかなということで、自分はvimbashを、あとsudo(このディストリsudoすら入ってない!!)を落としておいた。

インストールがつつがなく終わったら、fstabを生成。

# genfstab -U -p /mnt >> /mnt/etc/fstab

そしてchroot

# arch-chroot /mnt /bin/bash

インストール後の処理

ここからインストール後の諸設定をば。

localeの変更

# vim /etc/locale.gen

使う言語をコメント解除。基本はen_USとja_JPあたりでOKのはず。で、以下を打つ。

# locale-gen
# vim /etc/locale.conf`

さっきコメント解除した言語をLANG=で指定。LANG=ja_jp.UTF-8とか。ただしGUI環境入れずに日本語使おうとすると化けるので、この時点ではen_usが無難。

Timezone

/etc/localtimeを置き換える。

# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

デフォルトのコンソールフォントとキーマップ変更

/etc/vconsole.confを編集して、デフォルトのキーマップとコンソールフォントを設定する。

# vim /etc/vconsole.conf
KEYMAP=jp106
FONT=Lat2-Terminus16

ハードウェアクロック

自分はよく知らんかったのだが、ハードウェアクロックとシステムクロックってのがあるらしい。で、ハードウェアクロックにUTCを設定しておく。

# hwclock --systohc --utc

参考:実践でも役立つLPICドリル(8):Linux時刻管理の仕組みと設定 (1/4) - @IT

hostname

# echo hostname > /etc/hostname

rootパスワード変更

# passwd

ブートローダー設定

Gummibootとか使ってみようかなとも思ったけど、初めてだし一般的によく使われているであろう、GRUB2を使うことに。どうでもいいけどパッケージマネージャの名前が「pacman」って面白いでふね。オプションなしで打つとAAも出てくるけど、権利関係とかどうしてんだろ。。

# pacman -S grub efibootmgr
# mkdir -p /boot/efi/EFI
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-direcotory=/boot/efi/EFI --bootloader-id=grub --recheck

GRUB設定ファイルの自動生成。当たり前だがここで指定のディレクトリを誤ると立ち上がらない。自分は何度かハマったんだが、grub-installしたときに--boot-direcotoryオプションで指定した場所で良い、はず。

# grub-mkconfig -o /boot/efi/EFI/grub/grub.cfg

そして再起動!

# exit
# umount -R /mnt
# reboot

デスクトップ環境

ここからはデスクトップ環境を構築していく。要らないならすっ飛ばしでも。

まずは作業用のユーザーを作成。

# useradd -m hoge
# passwd hoge
# visudo  #sudo実行可能にしておく

続いてVirtualBox特有のものとして、ゲストユーティリティをpacmanを使って入れる。普通ならVirtualbox側のメニューから仮想CD-ROMをマウントさせるところだが、Arch Linuxの場合はこの方法だとインストールができない(エラーが表示される)。

$ sudo pacman -S virtualbox-guest-utils
$ sudo vim /etc/modules-load.d/virtualbox.conf

virtualbox.confを開いたら、下記の通り書き入れておく。これでVirtualbox関連のモジュールが起動した時に自動でロードされるようになる。

vboxguest
vboxsf
vboxvideo

そしてデスクトップ環境に必要なもろもろのインストール。これまでGNOMEぐらいしか使ったことがなくてよくわかってなかったのだが、LinuxGUI環境を提供するツールは大きくこんな感じで分けられる、みたい。

  • ディスプレイマネージャー

    • グラフィカルなログイン環境を提供する
    • Slim、GDM、KDMなど
  • ウィンドウマネージャー

    • ウィンドウ周りの機能を提供する
    • スタック型=Windowsっぽいウィンドウを重ねるタイプ(Xfwmなど)
    • タイル型=ウィンドウがオーバーラップしないタイプ(Bspwmなど)
    • 動的=どちらもいける(awesomeなど)
  • デスクトップ環境

したがってGNOMEあたりを入れてしまうのが一番簡単なようなのだが、ここまで来たらきちんとやっておきたいし、せっかく最小ディストリなのに重いツールを入れてしまうのももったいないので、Slimとawesomeを使うことにした。

$ sudo pacman -S xorg-server xorg-server-utils xorg-xinit xterm
$ sudo pacman -S slim archlinux-themes-slim slim-themes
$ sudo pacman -S awesome

X Window Systemの起動にはstartxコマンドを打つことになるが、このときのシーケンスとしては、まずxorg-xinitやSLiMなどでXを起動 => .xinitrcを見てウィンドウマネージャー等を起動という順序になる。.xinitrcに対して、どのウィンドウマネージャーを使うのかを教えてやらなくてはならない。またVirtuarlBox関連のドライバを同時に読みこませておかないとうまく起動しない。

$ cp /etc/skel/.xinitrc ~/
$ vim ~/.xinitrc
/usr/bin/VBoxClient-all
exec awesome

そしてstartxを使えばawesomeが立ち上がるはず。OSを起動した時に自動でGUIを立ち上げるには、slim.confを編集した上で、systemctlコマンドを使って有効化しておく。

$ sudo vim /etc/slim.conf
daemon yes
current_theme archlinux-simplyblack
$ systemctl enable slim.service

ためしにrebootしてみて、ログイン画面が表示されればOK。

日本語環境

GUIを使えるようにしたら日本語環境も整えたい。で、まずまずは/etc/locale.confを編集し、さっきやめておいた言語設定の変更を。。他にやることとしてはフォントの導入、IMEの導入、キーボードの設定。まずフォントからだが、pacmanではなくyaourtを使って入れることになる。

yaourt導入

pacmanレポジトリを追加。

$ vim /etc/pacman.conf
[archlinuxfr]
SigLevel = Never
Server = http://repo.archlinux.fr/$arch

そしてyaourtを導入。

$ pacman -Sy yaourt

フォント導入

フォントの導入。yaourtを使ってインストールすると、そのままデフォルトとして設定されるみたい。複数入れておいて選択したい時とかどーすんの?って思うけど調べてない。とりあえず無難にRictyを。。

$ yaourt -S ttf-ricty

IME導入

ibus-mozcを使ってる例が多かったのでそうします。さっきと同じくpacman.confにレポジトリを追加した上でインストール。

[pnsft-pur]
SigLevel = Optional TrustAll
Server = http://downloads.sourceforge.net/project/pnsft-aur/pur/$arch
$ pacman -Sy mozc ibus-mozc

そしてibusをセットアップする。下記コマンドを実行するとグラフィカルな設定用ウィザードが表示されるので、ホットキーを使用可能とし、mozcをインプットメソッドとして指定する。

$ ibus-setup

ibusを起動時に自動で上げるための設定を入れる。.xinitrcを立ち上げて、exec awesomeよりも前に以下のように書き入れる。

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx

今のところ設定したのはここまで。残ってる問題としてはキーマップの設定がおかしい。vconsole.confはコンソール上でのキーボード設定だから、たぶんawesome上では別の設定をしなくてはいけないはず。探さねば。

参考

Webスクレイピング手法は何かしら身に付けると便利そう

最近Webスクレイピング勉強会が開かれましたが、自分これは「補欠」になってしまった上に別の予定が入ってしまって行けなくなり、なので自分なりにスクレイピングやってみました。人気の勉強会ってすぐ満席になりますよね。。ホントは勉強会情報とかすくれーぴんぐして逃さずゲトできるようになりたい。まぁこの分野は先人が作ったサービス等いろいろありますが、push型の配信してくれるものってまだない気がするのよね(あったっけ?)

Ruby好きなので使ったのはMechanizeです。nokogiriではない。ネットバンクから毎月残高拾ってきて記録してって手でやってたんだけど、いい加減自動化できないかと思いまして。なのでログイン処理とかまで任せるためにMechanize。

で、使ってみた結果、これめちゃくちゃ便利というか、Web上に掲載されているあらゆるデータを抽出して使い回せるようになるので、やり方一つぐらい身に付けといて損はない気がしますね。

冒頭に挙げたWebスクレイピング勉強会の第2回でkimonoの中の人がしゃべっていたみたいですが、その中でも「セマンティックWebは失敗だった。だからkimonoが必要なんだ」という考え方にはわりと共感できるところがあります。Webってこれだけ情報に溢れたのに、そこから情報を抽出する手立てが限られているのは勿体ないですよね。

ただ、kimonoが最終解のままで良いとも思っていなくて、セマンティックWebは失敗したのかもしれないけど、それに代わるアーキテクチャは何かしら必要なんじゃないかと。Web標準への準拠という、フロントサイドの思想がだいぶ一般的になってきた今日、次に考えていくべきはアーキテクチャの標準化ではないかという気がします。

何を勉強したらいいのかわからなくなってきた

このブログ始めて1年経ったけど、まー振り返ってみるとだいぶ話題の幅が広いっつーかまとまりがないっつーか、俺はいったい何エンジニアなんだって感じの内容になりつつある。絶賛迷走中、何を勉強してるのかよくわからない、感じに。

ここまでは完全に興味関心に頼ってそのときやりたいことを取りあえずやってみる、という感じの勉強をしてきてしまった。いや、正確に言えばそこまで何も考えていないわけでもない。自分はインフラ、それもWindows方面にかなり偏ったエンジニアなので、Linuxを触る機会を増やすだとか、アプリ寄りの技術も触れてみるだとか、そういうことは意識してきたつもりだ。とはいえ基礎から積み上げるような学習ではないし、そうやって身につけてきたことが実際の仕事で役立ったためしも、今のところない。実際のところ仕事で学べるところはOJTで学べばいいやと思っている節があったりして、趣味の勉強の目的が迷子になりつつあるように思う。

プログラミングとか学ぶことは趣味にもなり得るのだが、一応この業界にいる以上、勉強の目的は「金を生めること」であるのが健全だろうと思っている。言い方はよろしくないかもしれないけど、付加価値のない技術なんざ単なる雑学に過ぎないわけで。なのに実業務につながるような勉強ができていないあたり、自分のやっていることは自己満足に過ぎなかったのかもしれんなぁなどと最近考える。もちろんまったくの無駄と言うわけではないけれど、それを学んで今後どうしたいの?ということをあまり考えていなかったような。

今業務でやっていることに対してモチベーションが上がらないのであれば、自分がやりたいことをやるにはどうしたらいいのか考えるべきだし、今の業務の延長線上で食べていく気があるのであれば、もっと業務に結びつくことを学ぶべきだ。要するに、エンジニアとしての生き方を自分は考えきれていない。なんとなく不安だからとか、なんとなく面白そうだからとか、そういう理由でつまみ食いをしてきてしまったなと思う。たぶん、これでは生きていけない。

で、じゃあ何をやろうか?と。スキルマップみたいなものを描かなくてはならないのではないか。計画的に狡猾に、自分の人生がどこに向かっていて、そのために何が必要なのかを考えなくてはならんのではないか。

もっと社外のエンジニアに会ったりしないと、選択肢は狭まる一方だよなーと思う。実のところ、この3か月ぐらいはそこそこいろんな人に会う機会を設けてみたのだけど、ユーザーへのデリバリを考えずひたすら作りたいものがあるって人もいれば、何よりもお客様のためだみたいなことを話す人もいるし、1人保守のチームに投げ込まれて気付いたらアプリもインフラもやれるようになりましたみたいな人とか、まーホントいろいろいる。社内のキャリアパスにしたってあんまりルートは多くないように見えていたけど、知らないところでだいぶ自由なことをやれている人もいた。結局、やりたいことはやったもん勝ちだし、案外やりたいことをやれるようになるまでのハードルは高くないのだと思う。だから、まずは自分がやりたいことを、もちょっと見定めてみようと思う。

tmuxをなんとなく使ってたのできちんと使うようにしてみた

tmux、なんとなく入れてなんとなく使ってたけど、改めてそれなりに形にしてみたのでメモ。

tmuxとは

たーみなるまるちぷれくさー。ターミナル操作が便利になる系の、まぁ今更自分が説明する必要はないですね。せいぜいVagrantVPSいじりながらローカルでもVim開くみたいなことしかやってないので宝の持ち腐れ感はハンパねーですが、とりあえず知っといた方がいいやってのとなんとなくカッコいいっていう理由だけで使ってる。

なお、インストール自体はだいぶ前に実行したのでやり方忘れた。たしかHomebrewで入れられたと思う。

.tmux.conf

ルートディレクトリ上に生成される設定ファイル。tmuxに関する設定は基本的にここに書く。

自分の設定ファイルを張ってみたけど、よく見られる設定の寄せ集めだとは思う。tmuxはなんかESCキーの反応が悪いらしく、その調整用の設定。ペイン分割したときに各ペインごとでマウススクロールができるようにする設定。文字コードの設定。色の設定。これは上手くやればもうちょっと見やすくなるんだろうなとは思ってるけど、面倒なので半端なとこで終えている感がある。カラーパレット見て色名探してみたいのめんどいよぉ。

あとキーバインド。デフォルトのプレフィックスがC-bなんだけど、使いづらいのでC-zに当て替えてる。他にやってるのは.tmux.confをすぐ読み込むための設定と、ペイン移動や分割のショートカット、あとはウィンドウやセッションのkill。

コピーモードについてはよくあるviライクなキーバインドが使えるってやつをそのまま使っている。コピーモードに入るときのデフォルトキーが[なのが気に食わんので、これもyに変更してある。でもよく考えたらvの方が相応しいなこれ。。。

powerline

残りはpowerlineに関しての設定。ステータスラインがカッコよくなります的なやつ。これも入れ方忘れたけど、公式のREADMEによればgit cloneするみたい。

これ、入れたはいいけど天気とか上手いことでなくてしばらく放置していた。今回改めて先のREADME読んでみたところ、GNU grepが要るみたいで、インストールしてgrepコマンドを置き換えたら上手くいった。やっぱりREADMEはちゃんと読むべき。自戒。他にもCPUとメモリ使用状況のグラフィカルな表示のためにはthewtex/tmux-mem-cpu-loadが必要だったりする。

設定は主に3ファイルを用いる。

  • ~/.tmux.conf
  • ~/tmux-powerline/themes/default.sh
  • ~/.tmux-powerlinerc

まず.tmux.confにpowerlineを使うってことを宣言しなくては使えない。先の.tmux.confで言えば一番下の方の設定。上からステータスラインを表示する設定、更新インターバルの設定、UTF-8の使用設定、ウィンドウリストを左側に配置(これは好みによってcenterにする人もいるみたい)、ステータスラインの長さの設定。で、最後の2行でpowerline.shを読み込ませている。

実際にpowerlineに何を表示させるか、という設定は~/tmux-powerline/themes/default.shを変更して行う。

デフォルトで表示できるものについてはすでに入っているので、これをコメントアウトしたりして好きなものを表示できるよう変える。各.shの後ろについている数字は表示部分の文字色と背景色。~/tmux-powerline/color_palette.shを実行すると、設定できる色と色名の一覧が表示できるので、これを使って設定する。まぁ、おこのみで。あと各表示部分の境界をカッコいい感じにするための設定が入ってたりするが、このへんはググれば出てくるので割愛(適当)。なお、default.shを直接触りたくない場合は、コピーして名前変えて使えばOK。

さらに、表示内容の細かな設定に.tmux-powerlinercを使う。このファイルは元々置かれていないので、./tmux-powerline/generate_rc.shを実行して生成する。よくいじるのは天気の設定で表示する地域を入れたり、時間や日付の表記を好きに変えたりってところかと。これについてはコメントでどういじればいいのか書いてあるので、見ればわかると思う。

tmux-powerlineについては自作のshellを使って好きな内容を表示させたりもできるようだけど、現状そこまでの情熱は傾けていない。

tmuxinator

tmuxを立ち上げたあと、ペイン分割をいちいち手でやるのが手間なので、自動化しちゃいましょうというツール。単に分割するだけではなく、各ペインでコマンド実行させることもできるので、例えば最初からVim開いておいたりディレクトリ変えておいたりgit pullさせておいたりとか、いろいろできる。工夫次第。自分は今のところよく使っていたペイン分割を自動化させることしかしていない。以下のページが大変わかりやすかった。

tmuxのwindow, pane設定を一発で再現できるtmuxinatorが便利 | TACTOSH

以上、超適当かつ簡潔なまとめでした。まぁ、あまりにもこの分野は先駆者が多いので。。

参考