「VimConf 2016」を主催しました

vimconf.vim-jp.org

この記事は Vim (その2) Advent Calendar 2016 の 5日目の記事です。

開催から一ヶ月が経ちました、今更感ありますが書きます! (そもそもVACに書く内容ではないと言うツッコミがありそう)

2016/11/05に開催された「VimConf 2016」を主催しました。
発表の感想や懇親会の感想は各参加者のレポートにお任せし、裏側の話を少しだけ書きたいと思います。

主催しようと思った理由

雑にLingrのログを遡ったところ、以下のような流れで意識することになりました。

私「VimConf 2016 参加したい」
ujihisa さん「しよう」
私「します」
thinca さん「主催しよう」
私「すごい」

それからしばらくして退職が決まり、10月は暇になることが確定していたので立候補してみました。
その後に id:b4b4r07 さんが立候補し、お任せする気持ちでいたのですが複数人でやってもよいのでは?の流れで二人で主催することになりました。

参考: 2016 まとめ役募集 · Issue #106 · vim-jp/vimconf

こんなことやってました

  • 発表者のかたと調整 (タイムテーブルの決定, 資料の収集など)
  • connpass の管理 (イベントページの作成, 各種メッセージ配信など)
  • 公式サイトの修正 (細かい修正, レポート一覧追加など)
  • 司会補佐 (発表者のかたにピンマイクの説明など)

これ以外にも細かい作業はいろいろやっていました。

必要なタスクを洗い出して各仕事を人に振ったり進捗の確認をしたりします。

まとめ役募集の Issue に書いてあったのですが、意外とやることは多かった気がする。

つらかったこと

確認を求める場面で反応がすぐに貰えない時がありました。
皆さんお仕事されているのである程度は仕方ないと思いつつ、どうすればいいか分からないと言う焦りでつらかった...

なので来年も同じ形を取るならば、すぐに反応して会話するなどでお手伝いできればいいなぁと思っています。

さいごに

なんとか無事に終わった... と言う感じでした。
本編, 懇親会ともに過去最高(?)の参加率で大変満足しています。

皆さんのご協力のおかげで最高の会になったと思います、本当にありがとうございました!
また来年お会いしましょう :)

転職について思うこと

こんにちは、最近転職したいという気持ちが高まってきました。
表立った転職活動はしていませんが、声を掛けていただいた会社さんにお邪魔してお話を聞かせてもらったりしています。
なぜ転職したいのか、次の会社に求めることは何か、という部分を整理してみようと思います。

なぜ転職したいのか

今の会社は派遣が主です、なので数ヶ月から一年くらいの期間で派遣先が変更になることが多いです。
そこでつらいのが、培った業務知識と人間関係が自分の意志に関係なくリセットされるということです。
人間関係を構築し直さなければならないというのは結構なストレスです。

また、自身の環境も固定ではない(持ち込みはほとんど不可で付与PCのみ)ので開発環境に制限が入るのもつらいポイントです。
例えば、使用可能なソフトウェアに制限があり、申請すると許可が降りたり降りなかったり...
開発環境は日々よくしていきたいと思っているのにあんまりです。
そもそも開発環境に興味がない人が多いので話も合わないし結構つらいです。

主につらいポイントは上記の二点です。

次の会社に求めること

つらいポイントを解消したいので、自社サービスなどを持っている会社がいいのかなぁと思います。
開発環境や使用している技術など、現状に満足せずカイゼンを重ねていけるような開発チームに入りたいと思っています。

そして、日常的に残業しているようなところは避けたいですね。

さいごに

簡単に整理したらつらいポイントだけが目立つ結果になってしまいました...
もし、お話をしてみたいという会社さんがあれば是非連絡をいただけると嬉しいです...!

MacVimでPythonの開発環境を構築する (2016/夏)

どうも、お久しぶりです。
最近暑くなってきましたね、ちょっと早いですがタイトルは夏にしちゃいました。

MacVimでPython/Python3の開発環境を構築したいと思いましたが、過去に同環境を構築できた方は見当たりませんでした。
私もうまくいかず諦めかけていましたが、MacVimやMacVim-KaoriYaのメンテナーであるsplhack氏が構築ガイドを公開してくださったので試してみたいと思います。

この記事は現時点での情報整理のために書いています。
少しだけ解説を入れていますが分かっている人向けに書いてある部分もありますので、ご不明点などありましたらお問い合わせください。
また、ファイルの編集を行う場合は実際の変更も載せるようにしますので、ご参考にしていただければと思います。

目標

  • MacVimでPython/Python3の開発環境を構築する
  • Pythonのバージョン管理にpyenvを使用する
  • 仮想環境管理にpyenv-virtualenvを使用する
  • 仮想環境にインストールしたパッケージをjedi-vimで補完する

問題点

  • Anacondaを使用することができない (--enable-sharedにできない?そもそもビルドしていないような...)
  • 環境変数に依存しているため、環境の切り替えがうまくいかない部分がある

環境

  • OS: OS X v10.9 Mavericks
  • Vim: 7.4.1825
  • pyenv: 20160509
  • pyenv-virtualenv: 20160315

手順1 - 各種パッケージのインストール

パッケージのインストールにHomebrewを使用します。

MacVim

--with-properly-linked-python2-python3オプションが重要です。

$ brew install macvim-dev/macvim/macvim --HEAD --with-properly-linked-python2-python3

pyenv

基本的にはREADME通りですが、存在チェックを入れています。

$ brew install pyenv
$ echo 'export PYENV_ROOT=~/.pyenv' >>~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT"/bin:"$PATH"' >>~/.bash_profile
$ echo 'if builtin type pyenv >/dev/null 2>&1; then eval "$(pyenv init -)"; fi' >>~/.bash_profile

参考: Add pyenv settings · ryunix/dotfiles@0d98667

pyenv-virtualenv

pyenvと同様に存在チェックを入れています。
また、変更を反映させるためにシェルの再起動を入れています。

$ brew install pyenv-virtualenv
$ echo 'if builtin type pyenv-virtualenv >/dev/null 2>&1; then eval "$(pyenv virtualenv-init -)"; fi' >>~/.bash_profile

$ exec $SHELL -l

参考: Add pyenv-virtualenv settings · ryunix/dotfiles@5796a05

手順2 - Pythonのインストール

pyenvを使用し、Pythonをインストールします。
--enable-sharedオプションを指定する必要があります。
また、関連するオプションの指定も必要です。

Python 2.7.11

$ PYTHON_CONFIGURE_OPTS="--enable-shared" \
    LDSHARED="clang -bundle" \
    LDCXXSHARED="clang++ -bundle" \
    BLDSHARED="clang -bundle -lpython2.7" \
    pyenv install 2.7.11

$ otool -L $PYENV_ROOT/versions/2.7.11/lib/python2.7/lib-dynload/_ctypes.so
# -> 実行結果に libpython2.7.dylib が含まれていればOK

Python 3.5.1

$ PYTHON_CONFIGURE_OPTS="--enable-shared" \
    LDSHARED="clang -bundle" \
    LDCXXSHARED="clang++ -bundle" \
    BLDSHARED="clang -bundle -lpython3.5m" \
    pyenv install 3.5.1

$ otool -L $PYENV_ROOT/versions/3.5.1/lib/python3.5/lib-dynload/_ctypes.cpython-35m-darwin.so
# -> 実行結果に libpython3.5m.dylib が含まれていればOK

手順3 - Vimの設定

pythondllpythonthreedllオプションを指定する必要があります。
さらに、$PYTHONHOMEを指定した後に対応するバージョンのコマンドを実行する必要があります。
バージョンによって値が変わるので、変数にしておきました。

let s:python2home = $PYENV_ROOT . '/versions/2.7.11'
let s:python2dll  = $PYENV_ROOT . '/versions/2.7.11/lib/libpython2.7.dylib'
let s:python3home = $PYENV_ROOT . '/versions/3.5.1'
let s:python3dll  = $PYENV_ROOT . '/versions/3.5.1/lib/libpython3.5m.dylib'

let &pythondll = s:python2dll
let $PYTHONHOME = s:python2home
execute 'python import sys'

let &pythonthreedll = s:python3dll
let $PYTHONHOME = s:python3home
execute 'python3 import sys'

参考: Add +Python/+Python3 settings · ryunix/dotfiles@88721cb

手順4 - 各種プラグインのインストール

プラグインのインストールにDein.vimを使用します。
NeoBundleでもよいですが、その他のプラグインマネージャはダメかもしれません。 (プラグインの読み込み順序を操作可能なら大丈夫だと思います)

vim-pyenv

pyenv環境でいい感じに切り替えを行ってくれます。
しかし、この環境では真価を発揮することができません... (理由は後述)

call dein#add('lambdalisue/vim-pyenv', {
      \   'on_ft' : [
      \     'python',
      \   ],
      \ })

参考: Add lambdalisue/vim-pyenv · ryunix/dotfiles@570ca37

jedi-vim

on_sourceオプションが重要です。
jedi-vimvim-pyenvより前にロードする必要があります。

call dein#add('davidhalter/jedi-vim', {
      \   'build' : 'git submodule update --init',
      \   'on_ft' : [
      \     'python',
      \   ],
      \   'on_source' : [
      \     'vim-pyenv',
      \   ],
      \ })

参考: Add davidhalter/jedi-vim · ryunix/dotfiles@6592048

使用例

準備が整いましたので、実際にpyenv-virtualenvで仮想環境を作成し、jedi-vimで補完できるか確認していきます。
現在の仮想環境が分かりやすいように、MacVimのステータスバーに仮想環境名を出すようにしています。

注意点があります。
まず、仮想環境の切り替えには$ pyenv activate <name>を使用し、:PyenvActivateは使用しません。
正確な調査を行っていないのですが、$PYTHONHOMEに依存することによって動的な仮想環境の切り替えが行えない場合があります。
仮想環境の切り替えはpyenv-virtualenvに任せて、vim-pyenvには初回時のみ働いてもらいます。

Python 3.5.1

# 仮想環境1を作成します。
$ pyenv virtualenv 3.5.1 py35_1

# 仮想環境1に切り替えます。
$ pyenv activate py35_1

# 仮想環境1にdateutilsをインストールします。
$ pip install dateutils

# Vimを起動します。
$ vim py35_1.py

インストールしたdateutilsの補完が効いていますね。
f:id:ryunix:20160530055713p:plain

# 仮想環境2を作成します。
$ pyenv virtualenv 3.5.1 py35_2

# 仮想環境2に切り替えます。
$ pyenv activate py35_2

# Vimを起動します。
$ vim py35_2.py

dateutilsをインストールしていないので補完対象がありません。
f:id:ryunix:20160530055756p:plain

Python 2.7.11

# 仮想環境1を作成します。
$ pyenv virtualenv 2.7.11 py27_1

# 仮想環境1に切り替えます。
$ pyenv activate py27_1

# 仮想環境1にdateutilsをインストールします。
$ pip install dateutils

# Vimを起動します。
$ vim py27_1.py

インストールしたdateutilsの補完が効いていますね。
f:id:ryunix:20160530055809p:plain

# 仮想環境2を作成します。
$ pyenv virtualenv 2.7.11 py27_2

# 仮想環境2に切り替えます。
$ pyenv activate py27_2

# Vimを起動します。
$ vim py27_2.py

dateutilsをインストールしていないので補完対象がありません。
f:id:ryunix:20160530055815p:plain

問題がないように見えますが、じつはエラーが発生していました。
f:id:ryunix:20160530055803p:plain

では何が問題かというと、vim-quickrunが実行できません。
f:id:ryunix:20160530055820p:plain

この問題ですが、$PYTHONHOMEによるものです。
先の設定ですと、$PYTHONHOMEにはs:python3homeが入っています。
今回は$PYTHONHOMEs:python2homeが入っている必要があります。 (初回だけ必要な環境変数なので本来は消すべきですが、環境変数を消せない問題がある)

回避策は以下の通りです。

  • s:python2homeを後で設定する
let &pythonthreedll = s:python3dll
let $PYTHONHOME = s:python3home
execute 'python3 import sys'

let &pythondll = s:python2dll
let $PYTHONHOME = s:python2home
execute 'python import sys'
  • vim-pyenvのautocmdを使用する (vim-pyenvのREADMEにあるサンプルに足しています)
function! s:jedi_auto_force_py_version() abort
  let major_version = pyenv#python#get_internal_major_version()
  " Add start
  if major_version == 2
    let $PYTHONHOME = s:python2home
  elseif major_version == 3
    let $PYTHONHOME = s:python3home
  endif
  " Add end
  call jedi#force_py_version(major_version)
endfunction
augroup vim-pyenv-custom-augroup
  autocmd! *
  autocmd User vim-pyenv-activate-post   call s:jedi_auto_force_py_version()
  autocmd User vim-pyenv-deactivate-post call s:jedi_auto_force_py_version()
augroup END

vim-quickrunが実行できました。
f:id:ryunix:20160530055825p:plain

さいごに

無事にMacVimでPython/Python3の開発環境を構築できました!

若干の問題はありますが、普通に使用することができると思います。
でも本当はAnacondaを使ってみたかったので、ちょっと残念な気持ちはあります。
Anacondaを使用することができない問題が解消されるともっと便利になると思うのですが...

splhack氏の構築ガイドがなかったら、この開発環境は構築できていませんでした。
また、lambdalisue氏とMiyakoDev氏からは助言をいただきました。
この場をお借りしてお礼を申し上げます、ありがとうございました。

参考

「ターミナルマルチプレクサ tmux 入門」を読みました

www.amazon.co.jp

そろそろ真剣にtmuxを使ってみようと思ったので購入しました。
(本当はプライム会員の毎月一冊無料枠です。)

感想

まさに入門書という感じでした。
ボリュームは控えめで、一時間ほどの通勤時間で読み終わりました。

版を重ねており、現時点での最新バージョン(2.1)と少し古いバージョン(1.7)で動作確認されています。
また、スクリーンショットが多く、どのように作用するのかがとても分かりやすいです。

しかし、tmuxをまったく触ったことがない人以外にはおすすめできないかと思います。
内容不足感が否めず、Qiitaなどを見ながら実際に手を動かせる環境がある人はそっちのほうが良いと思います。

私はこの辺りを参考にしました。

qiita.com

qiita.com

Amazonのレビューにも書いてある通り、この値段でこの内容は少々厳しいかと思いました。
(無料枠で読んでおいて何を言ってるんだって感じですが...)

「HTML5/CSS3モダンコーディング」を読みました

www.shoeisha.co.jp

かっこいいプロフィールページを作ってみたいと思い購入しました!
また、VimConf2015で「Vimで書いた本」と紹介があったのも惹かれました。

著者による紹介エントリは以下です。
yoshiko.hatenablog.jp

感想

私のHTML/CSSの知識についてですが、業務画面を作成する程度なら問題ありません。
しかし、HTML5/CSS3はまったく分かりませんでした。

実際に手を動かしながら本を読み進めていきました。
基本的にはHTMLを書いてCSSで装飾してブラウザで確認の流れを繰り返す感じで、どんどんページがお手本に近づいて行くのが面白く、スラスラと読み進めることができました。
また、初めて知るプロパティなどが出てきてもONE POINTでその他に指定できる値などの紹介があり、値を変更してどう表示されるかを確認するのも勉強になりました。

一番感動したのはCSSだけで連番をふれる機能で、とてもビックリしました。
これはCSS3以前からあったようで、私が知らなかっただけですが...

他にもbox-shadowやtransformなど知らないことばかりだったのですが、どれも丁寧に解説があったのでちゃんと理解することができました。

一点だけ注意が必要なのは、正誤表と追加情報をちゃんと確認することです。
初めはChromeを使って確認していたのですが、どうもおかしくなる場合があったのでFirefox Developer Editionをインストールして事なきを得ました。

読み終わって、かなりパワーアップできた感じがあります。
私と同じように、HTML/CSSは分かるけどHTML5/CSS3は分からないよーって人にはおすすめだと思います。

2016年の目標を立ててみました

あけましておめでとうございます。
今年もよろしくお願いいたします。

毎年なんとなく過ごしてしまっているので、今年は目標を立ててみたいと思います。
かなりふんわりとした目標ですが、何もやらないよりいいですよね...?

目標

生活面

  • ダイエットする (目標: 65kg)
  • 完璧主義を治す

技術面

  • 集まっtailに継続して参加する
  • vimrc読書会に継続して参加する
  • VimConf 2016に参加する
  • プロフィールページを作成する
  • 新しい言語を習得する
  • 技術書を読む
  • 勉強会に参加する

さいごに

年末に振り返る材料にしたいと思います。
目標に向かって頑張るぞ! :)

2015年を振り返ってみました

大晦日ということで、簡単に2015年を振り返ってみたいと思います。
いやぁ、一年ってあっという間ですね...

2015年

前半

2014年の11月くらいから派遣に出て、慣れないことをやっていたせいか適応障害っぽくなってしまいました...
2月には派遣先を変更してもらう相談が通って、少し楽な派遣先でリハビリをすることになりました。

GWには体調も回復していたので、盛岡旅行に行ったりしてました。
わんこそばを食べたり、色々な施設をまわってとても楽しかったです。

この辺りから、「今のままではまずい...」と思いアウトプットを意識しだしたのですが、前半では何もやってないです...

後半

Vimを使い始めました。
Vimを使うことにより、プラグインのドキュメントに対して修正PRを送ることができたり、Qiitaで技術情報を書くことができました。
12月からはvimrc読書会に参加するようになって、今のところ継続して参加できているので、これからも参加し続けていきたいです。

まとめ

今年は少しだけ方向転換できた気がします。
Vimを使うことによって、アウトプットの機会がうまれたのが特に良かったです。

簡単ですが、こんな感じでしょうか?
来年はもっと書くことが多いと良いのですが...