gk9187 blog

システム開発をしています。

kubernetesについて本を読んで勉強して触った

kubernetesについて概要をつかみたくてコンテナベースオーケストレーションの本を読んで概要を掴んだ。

最初はkubernetesの前提になるコンテナ技術のdocker…の前のLXCとか、その辺の歴史の話しが書いてあった。 今はどこが開発しているのかとか。 この辺は読み飛ばしてもいいんだけど、feedで流れている記事をなんとなくしか流し読みして理解していなかったので復習するのに役立った。

あとはkubernetesについてや、他にもGoogleクラウドサービスでのkubernetesの使い方や、 minikube(localのvmで動かすやつ)の使い方も載っていて、この辺をみつつ手を動かしながら理解を深めれて良かった。

なんとなく資料に内容を軽くまとめてみた。

本のリンク貼っておきます。

「幸せはいつもちょっと先にある」を読んで

概要

なんとなくタイトルに惹かれて読んでみた。

こういう本にありがちななんとなく押し付けがましい展開ではなく、1つ1つじっくりと事実にもとづいて論理展開していたため、すごくしっくりと理解できる内容だった。

事実に基づくというのは、実際に実験してみてこういう結果だったからこれは正しい、ということです。本書ではたくさんの実験内容が出てきます。

また、話しのちょいちょいに軽いジョークが入っているので読みやすい。集中力がプリッと切れそうなところでそういうのが入っている文章とかってすごく読みやすい。joel on softwareみたいな・・・まではいかないけど近いノリ。(joel on softwareは古い有名な記事がたくさんあるけれど、面白いから読んでないソフトウェア開発関係者は是非読んでみてください。ネットで普通に見れます。)

「幸せはいつもちょっと先にある」っていうと、幸せは目の前にあるのになかなか手が届かない・・・未来の幸せを予測するときに、旅行行く前はすごい楽しみだったのにいざ行ってみるとそうではなくてとか、逆に行く前は憂鬱だったのに行ってみるとすごい楽しかったとか、そういうことってありますよね。

これを認知科学にもとづいてなぜそういった現象が起きるのかということが書いてあります。

じゃーどうすればいいの?ということで結論まで導出しています。

なぜ幸せはいつもちょっと先にあるのか

人間はちゃんと未来は正確に予測できないということです。幸せになるために未来を予測して、今すべきことを判断するのですが、そもそも正確に予測できないから幸せになれない。

作者は、これに対してまず幸せについて述べます。それから、3つの観点からなぜ自分の幸せのために未来を予測できなきか、その脳みその欠点を述べています。

1. 物事を正確にとらえていると思ってしまう

本書で、二人の話しが出てきます。

労働運動の活動の末、裁判にかけられ死刑になってしまった男と、大企業を立ち上げて大成功をおさめた後に、自殺してしまった男の二人です。

どちらが幸せだったんだろうか、と考えるときに、とりあえず前者は不幸だったろうな、と想像します。そして、それが正しいと思い込んでしまいがちということです。

これを実在論と言うみたいです。心に思い浮かんがものが、そのまま実在すると考えること。本来はもっと事実をかき集めないといけないのに。

2. 今を基準に考えてしまう

これもわかりやすい例えがありました。腹が減った状態でスーパーに買い物に行くと、いつもより多めに買い出しをしてしまうということです。

これは現在主義。現在の気持ちをもとに、過去のことや未来のことを考えてしまうこと。

3. 合理化してしまう

たとえ失敗しても、辛い避けようがあった過去があったとしても、「でもいい経験になった」と考えてしまうこと、つまり合理化です。物事を納得いくように考えてしまうことです。

まぁこれはポジティブシンキングとも言えますが。

上記3点の欠点から、予測が外れがちと言っています。

自分で予想できないならどうすれば?

自分の脳みそが信用できなければ、似た経験をしている人に、「今どんな気持ち?!教えて!」と聞けば良いと述べています。

とはいえ、自分の脳みそが信用できないっていうのはちょっとつらくて受け入れ難いですね。上に3点簡単に説明しましたが、本書ではここの説明に200ページ以上かけて説明しており、納得できない方は本をしっかり読んでみると良いと思います。

幸せはいつもちょっと先にある―期待と妄想の心理学

幸せはいつもちょっと先にある―期待と妄想の心理学

買ってみるか、2007年2月の本なので、おそらくどこの図書館においてあると思うので借りてパラパラ読んでみるのをお勧めします。

ちなみに認知科学については下の本の最初の概要での説明がわかりやすかったです。

心と脳?認知科学入門 (岩波新書)

心と脳?認知科学入門 (岩波新書)

kindle版の立ち読みだと冒頭部分のみでも無料で読めるのでおすすめです。入門って書いてある割に中身は僕にはちょっと難しく感じましたが…。

なぜ本を読むのか

最近

最近はモリモリと色んな本を読んでいる。 技術に関する本は勿論、文学、自己啓発、デザインに関する本、料理本などなど…。

何故読むようになったのか

さて、皆さんは一番大事にしているものは何でしょうか? 家族が大事でしょうか?友人でしょうか?仕事でしょうか?

僕は、基本的にまず大事なのは自分。 「自分が一番大事」なんて、なんだか一般的に否定的にとられる気がするが、一番重要だと思っている。 自分を満足するために、そのために仕事を頑張ったり、家族や友人との時間を大切にする。

どうやってより良い自己満足をしていくか

では、より充実したものにするために必要なことは何かと考えた。

物事は色んな見方ができるし、何かを実現するには方法もたくさんある。 そして、僕は(人は、と一般的に言ってもいいかもしれませんが)自分の考えたことというものに執着してしまいがちで、 偏ったみかたをしてしまう。

なるべく見方・方法を精錬させるには、多方面での視点が必要になってくる。

つまり、色んな人の考えに触れることが重要になってくる。

どうやって多方面の見方を実現するのが簡単か

それを実現するためには、本を読むことが一番の近道だと気付いた。

仕事のうえで何かを考えるとき、他の会社の社長や社員の考えに触れるというのは、案外むずかしい。 友人などと飲みにいけば聞けるが、条件が限られる。

それよりも本を読むことで、あっさりと、色んな企業の創業者の思想に触れることが実現できる。 そこで働く社員の本だってあるし、企業というものについてリサーチしている人の本だってある。

本は人じゃ

「花燃ゆ」という吉田松陰の家族についての大河ドラマが現在放映されている。 それの吉田松陰の言葉で、印象的なものがあった。 「本は人じゃ。」

その通りだと思う。 本を読むことは、誰かの強い思いに触れること。 本を書くのはきっと、大変。 僕は書いた事が勿論ないが、出版社を通して、編集者などと打ち合わせして、数百ページの原稿を作り上げていく… 生半可なきもちでは書けないし、書かないだろうと思う。

だからこれからも本を読んでいく

世界中にあふれている大量の本一冊一冊には、作者の強い思いが込められている。 それを意識して読むと、得られるものが断然違ってくる気がする。

これからも、幸せになるために色んな本を読んでいく。 本を読むことに終わりはない。

今年は最低100冊は読みます!

pythonの環境構築

pythonの開発環境を整える。

マシンはdebian wheezy.エディタはvim

pythonとpipは入っているものとする

どうやら、virtualenv(/usr/binとかにpythonのライブラリは置かれたりするっぽいので、そのへんを汚さずに使える)とjedi(vimの補完機能)を入れるといいようだ。

virtualenvをインストール

% sudo pip install virtualenv virtualenvwrapper

色々出てたけど気にしない。

% tail -n 3  ~/.zshrc
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

この辺追加。virtualenvwrapperのおかげで、virtualenvが簡単に使える模様。 ほいで、WORKON_HOMEは実際の/usr/なんとかのローカルのデータを置いておくところっぽい。

この日本語じゃわかりにくいだろうけど、以下のコマンドでプロジェクトを作ってみて、確認してみるとわかると思う

% mkvirtualenv test
% ls $WORKON_HOME/test
bin  include  lib  local

mkvirtualenvで指定した名前で作成。上記フォルダが出来上がってる。あとは普通にpip installしたものがそこに入る感じ。 うん、汚さないからいいですね。

% workon test
%(test) deactivate

workonで指定した環境に入り、deactivateで脱出する。

jediをインストール

neobundleを入れているので、

NeoBundle 'davidhalter/jedi-vim'

を.vimrcに記述して:NeoBundleInstallでインストール完了!

pythonのファイルを開いて、入力モードの時にctrl+spaceをおすと補完してくれて、上に説明が出るようです。

ほうほう。画面ががくっとずれるのは少しストレスがありますが、便利ですね。

使いつつ適当に設定とか変えていい感じにしていけばよさそうです。

これで好きに開発ができそうです。

あとはライブラリとか、フレームワークとか調べたいな。

その場で言えなかった事に対するストレス発散法

日々生活していると、どうしても鬱憤がたまる。

「なんでこんな事言うんだ」「これくらい勉強しろ」など色々とある。

その場ですぐ発散できればいいけど、全部が全部そうはいかない。

この前あまりにビックリなことを言われて衝撃で何も言えなかったのだが、そのあとに衝動的にやってスッキリしたので書き留めておく。

言えないなら、書き殴ればいい

とにかく、今の気持ちをぶちまける。

字は雑でいい。誰に読まれることもない。

むしろ、自分以外に読まれてはいけないため、雑であるほど良い。

手書きで。これが重要。チラシの裏でいいです。

好きなだけ毒を吐く。誰も見てないから、どんなに自分勝手な理由でもいいし、好きなだけ罵倒してよい。

それで終わりではない

気分がスッキリした頃に、次に重要なステップがある。

それから自分が何をするべきかを書き出す。

次の行動がなければまたフラッシュバック

そのまま何も行動しなければ、また同じことは起こるし、定期的にフラッシュバックしていらっとする。

そして中途半端にtwitterにつぶやいたりして、フォロワーが減る。

(断片的な怒りを書いても、見ている側には存在しないコンテキストで自分の中にはあって、きっと誤解を招くし良いことはあまりない。)

そして最後に

暴言が入るため、忘れずに絶対にシュレッダーに入れることが一番大事!

スッキリするし、問題へのアプローチも整理できて良い。

次やるべきことがはっきりするため、悶々することもないだろう。

evernoteをvimで編集する(evervim)

debian wheezyにてevernotevimでいじるための環境を構築した。そのときのメモ。

必要環境

vimevernoteを操作するプラグインevervimを利用する。これはgithubに公開されている。markdownでがつがつevernoteを書く用。

https://github.com/kakkyz81/evervim

もちろんvimが必要。 ただし、pythonが内包されてコンパイルされている必要がある

これにちょっと今回苦労したorz

あとは特に問題なく。pluginのインストールはneobundleというナウでヤングなvimmerなら使っているっぽいプラグインマネージャを利用した。

あ、あとmarkdownでかくんで、pythonmarkdownプラグインがいる

インストール手順

vimの再コンパイル

vimを起動して:echo has('python')が1を返す場合はこのフェーズは不要。

僕はapt-getでvimを入れてしまっていたので、ソースコードをダウンロードして手元でコンパイル

% sudo apt-get install hgsvn
% hg clone https://code.google.com/p/vim/

ちょっと時間がかかる。ダウンロードしたらコンパイルする

% ./configure --with-features=huge --enable-multibyte --enable-rubyinterp --enable-pythoninterp=yes --enable-perlinterp --enable-gpm --enable-cscope --enable-fontset --with-python-config-dir=/usr/lib/python2.7/config

色々とオプションをつけているが、まぁ大事なのは--enable-pythoninterp=yesと--with-python-config-dirだ。 これでpythonを利用できるvimが出来上がる

% make
% sudo make install

ほいで/usr/local/bin/vimが入っているので確認。

% /usr/local/bin/vim --version | grep python
+cryptv          +linebreak       -python          +viminfo
+cscope          +lispindent      -python3         +vreplace

入ってないorz

まぁ結論をいうと、configure時にpythonのライブラリが入っておらずこけており、pythonを入れるのを諦めてしまっているログが $VIMのSRC/src/auto/config.log

に出ていました。

/usr/bin/ld: cannot find -lpython

みたいなログだったかな。 これはpythonのライブラリが入ってなかったからみたいです。

% sudo apt-get install python2.7-dev libpython2.7

まぁこれに気づくのに2時間くらいかかったのですが。

何か問題が出来たらlogをみる、考える、ぐぐるを習慣づけないとダメですね。

ちゃんともう1度やり直し

% make clean
% make distclean
% ./configure (ry
% make
% sudo make install
% /usr/local/bin/vim --version | grep python
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace
Linking: gcc   -L/usr/local/lib -Wl,--as-needed -o vim    -lSM -lICE -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl   -ldl    -L/usr/lib/python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions

入ってます。

pythonmarkdownをインストール

pythonのパッケージマネージャをインストールしてそれでインストール。

% sudo apt-get install python-pip
% sudo easy_install markdown

終わり

evervimのインストール

neobundleのインストール

インストール用のディレクトリを作ります

% mkdir -p ~/.vim/bundle

.vimrcに設定を追加

filetype plugin indent off
if has('vim_starting')
  set runtimepath+=~/.vim/bundle/neobundle.vim
  call neobundle#begin(expand('~/.vim/bundle'))
  NeoBundleFetch 'Shougo/neobundle.vim'
  call neobundle#end()
endif

NeoBundleFetch 'Shougo/neobundle.vim'

NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/neosnippet.vim'

を入れて:NeoBundleInstallです。

特に問題はありませんでした。

これであとは欲しいプラグインは NeoBundle 'githubのアカウント名/プラダクト名'をして、:NeoBundleInstallで インストールできるっぽいです。ナウいですね

evervimインストール

.vimrcに

NeoBundle 'kakkyz81/evervim'

を追記します。

:NeoBundleInstallです。

これでevervim自体は入ります

evervim初期設定

helpをとりこむ

vim

:helptags ~/.vim/bundle/evervim/doc/

を実行します。

evernoteと接続

evernoteとの接続が必要になりますよね。

evernoteでのログイン用のトークンが必要なので取得します。

https://www.evernote.com/api/DeveloperToken.actionで取得します。 .vimrcに let g:evervim_devtoken='' の中に入力します。

そして:EvervimSetupでsuccessfulとか出たらOKです。

おすすめの設定

.vimrcに以下のショートカットを入れておくとちょっとはかどります

nnoremap <Leader>l :EvervimNotebookList<CR>
nnoremap <Leader>s :EvervimSearchByQuery<Space>
nnoremap <Leader>c :EvervimCreateNote<CR>
nnoremap <Leader>t :EvervimListTags<CR>

ドルマークlでノートのリスト、ドルマークsでノート検索、ドルマークcで新規ノート作成、ドルマークtでタグ一覧です。

使い方

あとは本家やヘルプに載っているので。

所感

markdownでガツガツかけるのがいいです。

evernoteは結構使うので、vimかきつつ頭に思い浮かんがことは\cでさっと起動してタイトルに書いて、tagにinboxをつけてあとでinboxタグを見て整理したりとか。脳内整理にも使えますね。

正直、本家ソフトよりvimを使っている人であればこっちのほうが断然捗ると思います。

仕事を楽しめるのは自分の努力次第という話し

楽しい仕事と楽しくない仕事がある

どうも、仕事をしていると楽しくうぇーい!!とノリノリでできるものと 憂鬱な気持ちになりつつ暗い気持ちを家まで引きずるものがある。

今している仕事

今、同時並行である3つの仕事をしている。

1つはとても楽しい仕事だ。まぁ社内インフラの仮想マシンの移動なのだが。 僕はインフラを1年ほどやっていた経験のおかげで ゴールまでの手順がなんとなくぼんやりと見えている。

2つ目はあまり乗り気ではなくて、あまりというか仕事が嫌になるレベル。 といってもしないといけないんだけど・・・・。 新規システムの開発だ。

3つ目はテクニカルサポート。といっても補助的なこと。 これはまぁまぁ楽しい。技術面で分からないことを聞かれた時に アクセスログをおっかけたり、ソースを読んで仕様を答えたりなどだ。

これも1年の経験があるので、すぐに手が動かせる。 ただ、質問者が雑すぎてイラッとすることがあるくらいかw

違いはなにか。

2つ目についてだが、これは新規システム開発の目的がそもそも曖昧になっている。 何のためにリリースするのか。 それが曖昧なのでどういったものを作ればいいのかわからない。 自分の手が動かせるところまで落とせていない。

他の2つは目的がはっきりして、作業レベルまで落とせている。 次のアクションが明確で目的も明確。

もちろん社内インフラの移動やテクニカルサポートは技術的な困難点にぶつかることがあるが、 それはまぁ自分の技術力次第でどうにかなる。

周りは関係無い。 もう、自分自身との戦いという部分まで落としている。

人とのやりとりが多いのもある

新規システム開発は自分が何をやるべきことがまだよく分からないということもあるが、 まだ他の人と話し合って決めるべきところがある。だから憂鬱に感じるっていうのもあって これは僕自身の弱点のように感じてはいる。

人との交渉ややりとりが苦手。。

楽しいやつは最初はどうだったか

よく考えれば、不安でいっぱいだった。 まずアプリ開発から急にインフラに変わったんだけど、それは 社内のインフラ全部を管理できるレベルの先輩がやめた時だった。

本当にこの人がいなくなって大丈夫だろうか?と思ったが 今はなんとか回ってる。

最初はインフラ関係で勉強することがたくさんあったし、 仮想マシンkvm?xen?1つにまとめろや!とか思ってたけど、 今はそれらの必要性もわかる。

要は、不安なとき、仕事が楽しくない時っていうのは自分の力が足りないのだ。 仕事を推し進める、楽しむ力。

仕事がんばろう!という事

生活しないといけないから、仕事から逃げることはできない。 一日の起床時間の半分以上を費やしている場だ。

ならば、仕事はいい気分でやりたい。自分の人生の充実のためにも。 つまり上述の通り日々努力しないといけない。 勉強しないといけない。 たくさん本を読まなければならない。 弱点を克服しなければならない。