reizist's blog

ウェブ

middleman v4をインストールするとinit後server起動できない

middleman init project
cd project
middleman server

と実行すると、

/path/to/project not found 

というようにインストール先のプロジェクトがnot foundとなるエラーが発生。

https://github.com/middleman/middleman/issues/1723でissueがあがっていて、

bundle exec middleman server

と実行すればひとまず動作する。

「スイッチ!」読んだ

www.amazon.co.jp

新年を迎えてから通勤時間と寝る前の一時を利用して読み進めていて、今日読み終えた。

本書は「何か変えたくても変えられない」人に対して、様々な成功事例・実験・歴史を例に交えつつ実践的なコツを紹介している。 「英語を勉強したいのに仕事で疲れて帰宅後すぐ寝てしまう」、「最近なんとなく仕事がうまくいってないように感じる」、などの日常抱える問題に対して、どのように考えればうまく変化を起こす(=スイッチする)ことができるのか。 本書はスイッチのための基本的なフレームワークを提唱する。

人間は誰しも2つの側面を持つ。理性的な側面、感情的な側面のことだ。 変化を起こす場合、この両面に訴えかけることが必要不可欠である。 これらを象使い(理性的な側面)・象(感情的な側面)に例え、以下の3つのシンプルな条件で誰もが思うよりも簡単にスイッチできると繰り返し述べている。

  • 象使いに方向を教える
  • 象にやる気を与える
  • 道筋を定める

この3つの要素に対し更に具体的なファクターを提示している。

1. 象使いに方向を教える

  • ブライトスポットを見つける。
    • スイッチできない原因を探るのではなく、うまくいったときのことを考察し、取り入れる。
  • 大事な一歩の台本を書く。
    • 大きな目標を掲げるのではなく、まず何が必要か、最小の目標を具体的に建てる。
  • 目的地を指し示す。
    • 目的地を掲示し、メリットを理解しておくことで変化のハードルを下げる。

2. 象にやる気を与える

  • 感情を芽生えさせる。
    • 理論的に変化が必要だと分かっても、変化には不十分である。感情的にも変化を起こすきっかけを与える。
  • 変化を細かくする。
    • 変化が大きいと、拒否反応は大きくなる。禁煙したいなら、まず「今日タバコ吸わない」ことから始める。
  • 人を育てる。
    • 「しなやかマインドセット」を育む。柔軟に思考を変化させることのできる人間の方が変化に対する拒否反応は少ない。

道筋を定める

  • 環境を変える。
    • 行動は環境に起因するところが大きい。麻薬依存から抜け出したいと思った時、真っ先に麻薬を常飲するグループから離れることが必要。
  • 習慣を生み出す。
    • 「変化」には思考のコストがかかる。「思考」は負担である。「右足を前に出す」「左足を前に出す」と考えながら歩く人はいない。当然できる段階に至れば実行は容易い。
  • 仲間を集める。
    • 行動は伝染する。「環境に起因する」ことと関連するが、周りがやっていることに対して比較的同調して行う傾向にある。

何故このような主張を行うか、繰り返し複数の事例を織り交ぜてわかりやすく簡潔に述べており腑に落ちる。 スイッチの必要性は、日々の生活に多く潜んでいる。個人の変化、組織の変化、社会の変化...。 自分の身の回りのことに関して改善/改革を望む人にとっては、本書は大変参考になるのではないだろうか。

自分は昨年は日々の業務を行うことに終始し、新たな価値や成長といった所にははっきり言って進捗があったと胸を張れない状況であった。本書のフレームワークに沿って、以下の様な思考を辿った。


ここから自分のための思考の軌跡


問題点

更に成長するためには?

私は、日々の業務に追われ、能力の上昇や改善ができているかと不安に思っている。 多くの著名プログラマーがそうであるように、仕事をしっかりとこなした上で外部に成果発表できるようなエンジニアになりたいと考えている。 業務を蔑ろにせずにいて、なおかつ今後身になりそうな勉強をするにはどうすればよいか?

変えるべきポイントは?

日々の業務の傾向として、1つ1つのタスクは小さいが、会議・割り込みが発生したり、単純にタスクの量が多いことからコンテキストスイッチが多発し、1つのタスクに集中する時間がとれずに効率が悪いことに気づいた。 全力で仕事をしているつもりなのだが、思ったように進捗も出ずに精神的には疲弊しているので業務終了後に趣味で開発という気分にもならず、スマホを触って寝るという悪い習慣が根付いてしまっていた。 少しでも趣味の開発の時間を十分に確保するために、悪い習慣を撲滅する必要がある。

変化を起こすには?
象使いに方向を教える。
  1. ブライトスポットを見つける。 趣味でプログラムを触ったり調べ物をしているときはどんな時か。何よりもまず「楽しい」と思った時であると思う。 プログラマーを目指したきっかけを振り返っても、作ることに幸せを感じていたことにほかならない。 作る楽しみよりも着手するときのだるさが勝るといけない。まずはハードルを下げて自分が楽しいと感じたことを行う。

  2. 大事な一歩の台本を書く。 楽しいと感じて、(真に成長に繋がるかはおいておいて)趣味の開発を再スタートできるような計画を建てる。 本書を読みながらここまでの思考に至った結果、「まずは直近で自分があったら嬉しいなと思うプログラム/サービスを作る」ことに思い至った。実は先日の記事はその成果である。 引き続きいくつかの目標があるので着実に進めていきたい。

象にやる気を与える。
  1. 感情を芽生えさせる。何故成長したいのか。成長しなければどうなるのか?改めて、自己の方向性を考えなおし、未来の理想の自分を想像する。いまいまでの小さな変化が未来の自分を作るんだとコブする。

  2. 変化を細かくする。前述の通り、とにかくハードルを下げ何か少しでも生み出すことにつながっていることを日々実行する。

道筋を定める。
  1. 環境を変える。実際今は環境への変化は望めない。ただし、今年中に引っ越しを検討。 今はまともに机や椅子、モニタが無いので、いざ家で作業をしようと思っても不満を感じることが多い。

  2. 習慣を築く。ひとまずgithubに草を生やすことを目標にする。

  3. 仲間を集める。これは知り合いや同僚何人かに声をかけプライベートでslackのチャットルームを作ったが、今のところあまり考えていた通りには進んでいない。またきっかけがあれば別途考える。

以上の戦略により年始以降は好調なスタートを切れていると考えているので、引き続き進捗を出していきたい。

Qiitaをローカルにアレするツール作った

Qiita APIを使って記事をエクスポートするスクリプトと、エクスポートしてきたファイルをインポートしてwebで見るやつを雑に作った。

f:id:reizist:20160111141809j:plain

何に使うかという話は置いておいて、ひとまず最初に考えていた以下の要件を満たせたのでよしとする。

  • ローカルで見たい記事をさくっと見れる
  • 最低限の視認性を担保している

久しぶりに趣味グラミングしたので出来がひどく辛い所はあるけど、自分が楽しくてやっているのでよしとする。

Android OnePlus One買った

ずっと最新のAndroid欲しかったので、one plus oneという機種を購入した。

nexus6買いたかったのだけど、64GBでSIMフリーだと10万円以上するので、敬遠してた。

伊豆に開発合宿に行ったのだけど、そこで知り合ったAndroidアプリ開発者の方からオススメの機種を教えてもらった。

16GBで$299, 64GBで$349とめちゃめちゃ安価で、且つスペックはnexus5以上nexus6にギリギリ負ける程度という。 RAMも3GBあるしこれは買いだろうと。

海外からの発送だったので2週間弱かかったけど、ようやく到着したのでEuphira OS入れて遊んでる。

タスク管理ツールNight!に参加した

タスク管理について悩みを抱えていたこともあり、たまたまconnpassを開いて見つけたので応募しておいた。前日に補欠から繰り上がったので急遽参加した。

他の方のブログでも言われている通り、とにかく時間が短く、 「うちはこれ使ってますねん。このツールの特徴は○○なんだけど、選んだ理由をざっくり言うとこんな感じですわ。ほな。」 というような空気感で、5分間という短い時間内でのLTのため詳しく聞けなかったのが残念なところ。


どこまで話していいのかわからないのだけれど、自分の話をすると、組織の体制が大きく変わって10人規模のチームにまとまって開発体制を敷くことになった。 それぞれのチームが独立して新しい体制で開発を行うにあたりタスク管理のツールの選定を行う必要があった。 自分の所属は、小さなサービスをたくさん作るようなチームであったため、以下の様な要件がタスク管理ツールに求められると考えている。

  • 一つのプロジェクトに関してキッチリとチケットを発行するなりissueを挙げるなりして進捗管理をするのはエンジニアくらい
    • なのでひとまずgithub issuesなりを使って勝手にやればよい(全員に共有する必要があるものは少ない)
  • 一つのプロジェクト内の進捗管理というよりは、複数のプロジェクトを見渡して今誰が何をしているのかぱっと見で知りたい
  • プロジェクト全体の進捗度をざっと把握したい
  • 類似プロジェクトもいくつか有り、他プロジェクトでの気付き・知見はなるべく共有/ドキュメント化する方針にしたい

そのため、pivotal trackerやbacklogも検討したが複数のプロジェクトの管理が難しそうという判断からtrelloを使うことになり、人ごとにプロジェクトをアサインするという運用をしていた。

ところが、プロジェクトが多くなると、進捗が記入されないプロジェクト、所謂「放置タスク」に当たる「放置プロジェクト」なるものが増えてきて、あっという間に破綻した。

そこで、人をベースに考えるのではなく、プロジェクトをベースにして人をアサインするという運用に切り替え、毎週の進捗確認MTGや朝会など、都度必要なタイミングで人のアサインを振り直すということをして今のところ落ち着いてはいる。 とはいえ、理想を言えばそれぞれの細かいタスクの管理もしたいし、ドキュメントの整理なども行き届いておらず、まだまだ改善の余地はあるのでは、というなんとなくもやもやした気持ちがあった。


そういう意味では、 「使用ツールはこういった背景があって変遷してきたけど、○○に苦労した、また○○のメリットがあったので今このツールで落ち着いている、実運用はこう!(実際動かしている画面ドーン)」というようなもうちょっと掘り下げた、各社の苦労と歴史が聞きたかったなぁなどと思ったのだった。

最後にポジティブな話をすると、今日のLTでは結構各社多種多様なツールを使っているんだなぁという発見があって、特にjokerさんが紹介していたwaffle.ioは直近で自分の周りの役に立ちそうな気配があった。 雑に紹介すると、github issueがカンバンになるというものらしかった。 今のところ無料というのもアツい。

また、LTが終わった後の座談会での話になるのだけど、bashさんの「推せるから推す。とはいえ合う合わないはある。結局は使いやすいものを使えばいい。他に便利なものがあれば都度切り替えていけばいい。」というニュアンスの発言が何故か自分の中でヒットしていて、当然といえば当然なのだけど、特定のツールにこだわりすぎる必要はないのだよなと何かに納得して少しモヤモヤが晴れた感じがあった。自分だけのタスク管理ツール見つけていこうぜ、ということか。

俺たちのタスク管理は、これからだ!

raspberrypiをメディアサーバーにしたら捗った【前編】

目標は、あれです。自分しか使えないgoogle music server みたいなものです。

事前準備

  • raspberrypiにsshで接続できるようにしておく
  • avahiを入れてssh pi@selfpi.localみたいな感じでsshできるようにしておくと捗る

概要

手順

1. img落として焼く

  • volumioのサイトでraspi用のimgを落とす
    • 現時点での最新は1.5.5の模様
  • microSDに以下のコマンドを使って焼く
    • sudo dd if=Volumio1.55PI.img of=/dev/disk2 bs=4m

2. raspiにimg焼いたmicroSDセットして起動

  • 普通に起動させるとサーバー立ち上がったりとか色々するので http://volumio.local にアクセスすると管理画面が表示される

3. 設定画面から音楽のインポートをするなりご自由に

  • raspiに刺してあるUSBから音楽ファイル検索したりできる

4. iphoneからairplayで操作します

  • iOS用アプリが無料で色々とある。MPoDオススメ。

感想

良い点

  • すごく楽、2GBのmicroSD使い捨てるレベルでOS焼いて余ってた8GBのUSBメモリ挿しただけで再生環境整った、やばい
  • volumioが用意しているwebUIがイケてて、基本的な設定やプレイリストの作成、OSの再起動やネットワークの設定など全てwebからできる。捗る。

悪い点

  • 出力は今のところイヤホンジャックかHDMIしか選択不可
  • あくまでraspiに装着されているメディアを他端末から操作して聞く程度のものなので、ストリーミングという感じではない

本当にraspberrypi2買って良かった。

Raspberry Pi2買った

送料・税込みで¥5,120だった。

ここから買える

初期セットアップには色々やり方があると思うが、無難なやり方が良いのであれば割と最近書かれたクラスメソッドさんのブログ見るのが早いと思う。

ただし、上記手順で行うには少しハードルがある。

  • USBキーボード
  • USBマウス
  • HDMIケーブルでつなげるディスプレイ

を持っている必要があって、自分はmacのみで完結させたかったので他の手順で進めることにした。

基本的にはこのブログを読んで、まずはOSのインストール/macからsshできることを確認 するまで設定を行った。ちなみに自分の場合はSDのマウント先は/dev/disk2s1だった。

次に、ラズパイにずっとEthernetケーブルつないでるのだるいので無線Wifi拾えるようにした。 予めamazonで無線子機をポチっておいた

このブログを参考にして、 /etc/wpa_supplicant/wpa_supplicant.confの編集を行った。

あとは好き勝手する。

とりあえずrubyは入れておこうと思ってapt-get install rbenv ruby-buildなどした結果、rbenv install --listの最新が ruby2.0.0-devだったりしたので、apt-get git-coreした後

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

としてrbenvとruby-buildの最新を入れなおした。

なんとなくapt-getよりyumの方が親しみがあるのでdebian系であるraspbianからfedora系であるpydoraというOSに変えようかなとも思っている。