Hatena::ブログ(Diary)

何かの記録

Monday, January 19, 2015

2014年 導入してよかったもの等

先日、"2014年買ってよかったもの" などというエントリ書ける人間たいしたもんだ、日々記録やアウトプットをしていてえらい、みたいな話をして、自分は思い出せないからまあいいかと思ったんだけど、それで終わらすと何も始まらず終わるので頑張って思い出しました。一応、WEB 系エンジニアのような仕事するにあたって導入してよかったもの等です。

空気のような存在になったもの

導入してあたりまえのように使われたものたち (ゆえに忘れていた)。

アプリケーションをつくる英語 (電子書籍版)

アプリケーションに関する英語について書かれているもので、英語っぽいものを書くのに役立ちました。読むじゃなく書く。クラスやメソッドなどの名前をつけるときや、英語でやりとりされているリポジトリにコミットするとか、そういうときに利用されています。これの PDF 版と辞書 (Dictionary.app) とを常に開いてあります。ローカルにデータあるとやっぱり速いし、外でちょっと調べたいときとかにオフラインで利用できると便利です。それからアプケーションで利用される英語、というコンテキストでまず探せるので、英語力ない者としてはありがたいです。

direnv

意外と2014年に入ってから導入、Rails (Spring) でオススメされてたので使い始めたような記憶。特定のプロジェクトのディレクトリに入ったときに、そこにある bin というディレクトリにパス通す程度でしか利用できてないから、プロジェクトはじめるときに存在を思い出します。

普通に使うようになったもの

IntelliJ IDEA

型がある言語で IDE つかうとはかどりそうという目論見から導入されました。不慣れなライブラリを使いはじめるときに、どういうインタフェース持ってるのかとか、どういう定義されてるのか見にいったりとかそういうときに便利です。クラス名とか package 変えるみたいな変更のときにリファクタリングと称して一括名前変更できるのが一番便利です (このためだけに起動する価値あり)。慣れてきたら普段使いのエディタで書いてしまうけど、天才ではないので本来ならばそのままツールの支援を得て書くべきだと思います。REPL がある環境だと、数行のコードの単位で試してフィードバックが得られるため、オッこれは Rails みたいにやってけるぞ、みたいになってエディタとコンソールで書いてくような習慣が抜けないです。

ちなみに Rails っぽく型のある言語導入してくのには Skinny Framework が良い気がします。オフィシャルに Skinny framework's concept is Scala on Rails ですゆえ。モデルまわりのつかいごこちは驚きが少ない感じがあってよいです。静的型付言語、外からくる値に対して型をつけてくところがダルい印象なので、Skinny ORM (scalikejdbc) の TypeBinder とかにおもてなしを感じます。

意外と使わなかったもの

最近出てきたチャットツール各種

Slack とか。きちんとプロジェクトで利用しはじめたらまたちょっと違ったかもしれないけど、仲間内で使う分にはやっぱ IRC だね、みたいな感じで移行に至らない感じでした。チャンネルにいる人間の倍くらい IRC bot がいたり、ログが保存されて一応検索できる仕組みとか WEB インタフェースやら API があるなど IRC まわりの環境がそこそこ発達しているという背景もあったので、周辺のツールたちに嫌気がささない限りは IRC 使い続けそうな気がします。

peco

最初は嬉々として使ってたけど一度使う習慣なくなったら存在を忘れたうえに、もともと使ってた zaw も使わなくなってた。ちゃんと使ったら便利だと思います。シェルのヒストリ絞り込みで生きていく、みたいになっています。


感想

保守的。

Sunday, January 05, 2014

エディタ から dayone

やりたいこと

  • エディタで書いたテキストを Day One に追加したい

前提

  • Mac
  • ビム
  • あんまりむずかしいことはわからない

今回の対応

エティタのプラグインとか、ラッパースクリプトさがしたりしたけど、エディタのバッファを dayone コマンドにわたすのでいいか~ となりました。

:w !dayone new

(わ びっくりだよね ニュー と内的発話です。)

準備
  1. http://dayoneapp.com/tools/ から dayone-cli.pkg をダウンロードして dayone コマンドを使えるようにする (dayone コマンドは位置情報などを付加しない点について留意する必要があります)
手順
  1. エディタを起動する
  2. テキストを書く(必要に応じ :setl ft=markdown などとすると、色がつくかと思います)
  3. バッファを外部コマンド dayone new にわたす(かきこむ)

f:id:moja8:20140105010849p:image:w360

Saturday, January 04, 2014

毎日のメモを一箇所にまとめたいのでオススメされていた Day One をつかいます

背景

毎日のメモをひとところにまとめたい。

要件

  • 複数の端末でメモを書けること
    • ケータイ端末から入力できること(とりあえず iPhone)
    • キーボードのついた端末から入力できること(とりあえず Mac)
  • 入力内容を複数の端末で参照できること
    • 非同期でかまわない
    • 再編集の可否を問わない

希望

  • コンソールからの入力が可能であること
  • オフラインで編集可能であること
  • 人間が読める形式で保存されること
    • エクスポート処理など特別な処理をしないでデータにアクセスできること
    • 特殊なファイル形式でないこと(テキストファイルを希望)

その他

  • お金を払ってもよい

結果

今回採用したもの
  • Day One
今回見送られた候補

Day One

オススメされていた。完璧な感じではないけど、いい感じな気はする。

気に入った:
気に入らない(または問題点):
  • データが XML (plist)

その他:

  • 有料(とりあえずアプリケーションの分だけ)
  • 同期は iCloudDropbox を選べる
  • 1エントリ1ファイル というのが、良いかどうか判断しかねる(アプリをとおしてみれば、日毎にまとめてくれる)

howm

テキストエディタにプラグインする自分用 wiki っぽいメモ機能。

気に入った:
  • エディタと相性がよい
  • けっこう機能が充実している
  • テキストフォーマット
気に入らない(または問題点):
  • モバイル端末からの入力が困難
    • エディタのプラグインで実現していることが裏目にでている気がする
    • タッチデバイスにエディタ導入して howm つかうとかはナシ (可能かどうかの話ではない)
その他:

データの同期については Dropbox などのサービスが存在しているため、テキストデータを扱うならさほど困難でないと考える(データを扱う単位によってはマージの難しさがある)。

howm と似たような位置にあって、もっとシンプルな方式の ChangeLog メモという選択肢もみてみたが、これもモバイル端末との相性があまりよくない(MHODiA というアプリがある: https://itunes.apple.com/jp/app/id431691790)。

Evernote とそのクライアントたち

今 PostEver という iPhone アプリをつかっている(https://itunes.apple.com/jp/app/id422023962)。1日の入力を1つのノートにどんどん追記していく(日毎に1つのノートになる)。

PostEver のノートに Mac からの入力があいのりできるならそれでよかった(現状簡単にきれいにできない)。

気に入った:
  • PostEver は入力に徹していてよい(テキストを入力するためのフィールドしかないため、過去の入力は他のクライアントで参照することになる)
  • Evernote の機能を利用できる
  • Evernote は関連のアプリケーションが充実している
気に入らない(または問題点):
  • PostEver に相当する Mac クライアントがない
  • データへのアクセスは常に Evernote を経由する必要がある
その他:
  • Evernote が REST API を持ってたら話がかわってくる可能性あるが thrift
  • 今みたら PostEver2 という iOS7 対応版の別アプリがあることに気付いてウッとなった(Tweetbot, Tweetbot2, 3... 問題)


以下は思ったことなど。

雑感

観点としては以下について重点を置いていたように思われる:

  • データをどこにどうやって置くか
    • 複数の端末で同期可能な箇所にあること(プライベートでさえあれば手段は問わない)
  • どのように見えるか
    • 日毎にまとまっているのが好ましい

Evernote の1アカウントをもって一箇所とみなす、という雑な運用でもよかったかもしれないという迷いがある。見せかたの問題だったのかもしれない。

Dropbox について

サードパーティのクライアントを認証すると $HOME/Dropbox/アプリ みたいなディレクトリを作られてつらい気持ちになるが、 落ち着いて $HOME/Dropbox/Apps にリネームすればよさそう。Day One が Dropbox で同期されているディレクトリがわからなくなってしまうので、一旦終了させてから起動して、ディレクトリを教えてあげれば認識する。

iPhone アプリのほうは、どういう仕組みになっているかわからないが、とりあえず上記手順ののちインストールして同期設定を行った。

複数端末で同期するということについて

データの扱いについて、同時更新の問題があるため以下のような対応になるのかなと思う:

  • データの単位について、
    • 1端末から1ファイル(データ)単位で更新する
    • 1更新で1ファイル(データ)を追加する
  • ロックはあまり現実的でない

Day One では、1更新で1ファイルを追加し、編集の際は衝突した事実はのこるものの基本後勝ちというルールっぽい。同時更新すると以下のようにコンフリクトしたファイルがつくられる。

ls -1 ~/Dropbox/Apps/Day\ One/Journal.dayone/entries
FF04BE2FE3304849B025ABAF87150748 (Watanabe Mayu's conflicted copy).doentry
FF04BE2FE3304849B025ABAF87150748.doentry

もしコンフリクトした場合は https://dayone.zendesk.com/hc/communities/public/questions/200028729--Conflicted-copy-on-Dropbox-sm- の、ファイル消して作りなおす、というのがオフィシャルな回答っぽい。

ファイル名が UUID (version 4) のハイフン抜きにしたもので、中身の XML(plist) が適切であればクライアントが何であってもよさそうなので、別ファイルにしてあげてもよいかもしれない。

テキストのメタデータについて

テキストデータでメモ行為をしようとすると、メモ本文とは別に管理のためのメタデータをどこに持つか問題が常につきまとう気がしていて、今自分の認識では、本文にちかいところに決まったフォーマットで入っているほうがあつかいやすそうという感じです。ChangeLog 形式とか XML でメタデータ持つのがわかりやすくて処理しやすくてよさそう。

メタデータファイルとかインデックスファイルを別に持つというのはキャッシュ用途でなければ端末間の同期とかの都合でめんどくさそうという印象。

総括

そういうわけで、メモ行為について、しばらく Day One つかって生活してみます。

Connection: close