04 Apr 2017, 06:25

ゼロから作る Deep Learning を読んだ

Deep Learning の初歩(ニューラルネットワーク)を学ぶために, 遅ればせながら、ゼロから作る Deep Learning を読んだ.

読んだ理由

なぜ読んだかというと、この本がバカ売れしていて、すこぶる評判がよいから。

今現在(2017.4)、オライリー 5.5 万部売れているらしい。 エンジニアの人口が 90 万人と推定すると、5,6%の人が 20 人に 1 人が読んでいる。

みんな読んでいるので自分も読んでおこうというのが動機。 coursera の Machine Learning の講座で ニューラルネットワークが出てきて追い詰められていたという理由もある。

内容

誰におすすめか

なぜこんなに売れているのかというと、 高校生程度の数学の知識でもニューラルネットワークが理解でき、 さらには Python でニューラルネットのコードが書けるからだ。

  • Python 初心者だ
  • numpy つかったことない
  • 数学苦手

そんな君も大丈夫!すごくわかりやすく初歩の初歩からかかれている。

また、ゼロから自分で作るからこそ、知識を深く吸収することができる(と著者がいっている)。

ディープラーニング(深層学習)に入門

ディープラーニングのニュースが毎日世間を騒がし、 最近の風潮としてエンジニアならとりあえず機械学習かじっとけみたいなのもある。

この波にのっからないわけにはいかない。しかし、どっから取りかかればいいのだろう。 そう迷っているひとが五万といるからこそ、この本がとても売れているのではないかと思う。

ディープラーニング(深層学習)の入門書としては、この本が今のところ一番。

目次

目次は以下の通り。

1. Python 入門
2.パーセプトロン
3.ニューラルネットワーク
4.ニューラルネットワークの学習
5.誤差逆伝搬法
6.学習に関するテクニック
7.畳み込みニューラルネットワーク
8.ディープラーニング

本書は、pyhton と numpy ライブラリのみをつかって、 ニューラルネットワークと畳み込みニューラルネットワーク(CNN)をゼロから実装していく。

逆にいえば、CNN 以上のことは、RNN, LSTM, DCGAN, DQN などはかかれていない。

5 章までニューラルネットワークが続く。 6 章では、パラメータ更新の最適化法、バッチ正規化、正則化などハイパーパラメータ関連のことがかかれている。 7 章では、畳み込みニューラルネットワーク(CNN)を豊富な図と、丁寧な説明で紹介される。 8 章では、ディープラーニングの最新動向が説明される。

私は、coursera Machine Learning のバックプロパゲーションを理解するために 5 章までを 2 回読んだ。 そのあと読むのを止め、時間に余裕ができてから 6,7,8 章を読んだ。

感想

わかりやすいわかりやすいと書きつつ、実は理解できないところもあった。

計算グラフによる誤差逆伝搬法は、2 度読んでようやくなんとなくわかった。 が、誤差逆伝搬法はこっちの本で数式からのアプローチですんなりふに落ちた。

ちなみに、筆者が強く影響を受けている計算グラフによる説明動画は以下。 見てみたけど、英語なのでよくわからない。 日本語で、ニューラルネットワークに関してまとまっている本書はありがたい。

また、CNN の実装も理解できなかった。ライブラリに依存しないということだが、 im2col という謎のユーティリティが出てきて、これが理解できなかった。 もう一度、CNN の章については読み返す必要あり。

6 章や 8 章で、最新の手法が紹介されているところもよいと思った。 また、このディープラーニングという分野は変化が激しいのだなと感じた。

これからどうするか

ニューラルネットワークについてはだいたい理解できた。 いろんな教材であれこれ品を替えて触れているので、さすがに理解できてきた。

今後の目標は、CNN を理解すること。次は、この本を読もうと思っている。

TensorFlow を使って CNN を理解する本だ。 CNN の実装の箇所を読みながら、難しいところは自作するよりもライブラリを使ったほうがいいなと感じた。 引き続き、Deep Learning の知識を深めていきます。

29 Mar 2017, 13:01

ディープラーニングがわかる数学入門を読んだ

ディープラーニングがわかる数学入門を4章まで読んだので、感想を書きます。

5 章の CNN はとりあえず時間をおいてから読んで、追記します。

これを読むまで、バックプロパゲーション(誤差逆伝搬法) がわかったようなわからないような、モヤモヤしていた。

  • coursera Machine Learning
  • ゼロから作る Deep Learning
  • Udacity Deep Learning Nanodegree Foundation

この本でようやく、バックプロパゲーションがなにをやっているのかわかった気がする。

数列の漸化式と初めから言ってくれよ。

どんな人にオススメか

目次はここから。

  • ディープラーニングがわかる数学入門:書籍案内|技術評論社

    • ■ 1 章 ニューラルネットワークの考え方
    • ■ 2 章 ニューラルネットワークのための数学の基本
    • ■ 3 章 ニューラルネットワークの最適化
    • ■ 4 章 ニューラルネットワークと誤差逆伝播法
    • ■ 5 章 ディープラーニングと畳み込みニューラルネットワーク

    ベストセラーになったゼロから作る Deep Learning は平易だったけれども、 それと同等、それ以上に平易なのがこの本。

  • ディープラーニングに関心のある学生,社会人。
  • ディープラーニングの勉強のために数学の基礎固めをしたいけれども、 なにから始めればいいか分からない人。
  • ゼロから学ぶ Deep Learning を読んで、数理をもう少し深めたいと思った人。
  • 逆誤差伝搬法を(計算グラフではなく)数式から理解しようとしたけど挫折した人。

内容

題名はディープラーニングだけれども、 ほとんどがニューラルネットワークの理解のためにページが割かれている。 最終章で 畳み込みニューラルネットワーク(CNN) の説明がある。

よい点

  • 説明がとても初心者にやさしい。
  • 図が豊富。
  • 例題が多く、簡単でわかりやすく理解が深まる。
  • できるだけ汎用的な記号の表記方法を使っているところ。
  • Python とか Ocatve とか、プログラミングは出てこない。
  • Excel を通じて各値がどう変化するか目で追えるところ。

(LibreOffice で値の確認はできた。マクロ使ってるだけで、VBA とかはつかっていないから)

どんなの数学が出てくるか

ニューラルネットワークの理解に必要な数学のみが厳選されて丁寧に説明されている。 具体的には、第 2 章の目次をみてもらうと分かる。

  • 1 ニューラルネットワークに必須の関数
  • 2 ニューラルネットワークの理解に役立つ数列と漸化式
  • 3 ニューラルネットワークで多用されるΣ記号
  • 4 ニューラルネットワークの理解に役立つベクトル
  • 5 ニューラルネットワークの理解に役立つ行列
  • 6 ニューラルネットワークのための微分の基本
  • 7 ニューラルネットワークのための偏微分の基本
  • 8 誤差逆伝播法で必須のチェーンルール
  • 9 勾配降下法の基礎となる多変数関数の近似公式

-10 勾配降下法の意味と公式 -11 勾配降下法を Excel で体験 -12 最適化問題と回帰分析

著者の 涌井 良幸さん、涌井 貞美さんは, 共著で統計関係の本を多数書いているようなので、わかりやすさはその実績からも伺える。

感想

意外だったのは、機会学習というと統計学が重要になるけれども、 この本には統計はほとんど出てこない。回帰分析が最適化の例として出てくる。

解析学の知識が多い。

行列や、シグマさえも、なるべく使わないで説明してくれるのだ!ベクトルは使う。

個人敵にハッとさせられた説明は、

  • コーシー・シュワルツの不等式は勾配降下法の基本原理。
  • 逆誤差伝搬法は、数列の漸化式。
  • 自ら学習するということは、重みとバイアスを「最適化」すること。

    ディープラーニングがわからない人のための最後の一冊として オススメです。

    分かる人には、必要ないかもしれない。

03 Feb 2017, 06:14

MATLAB のコードを Octave で実行するときの Warning を消す方法

LAFF を受けている.

MATLAB Online を利用することが推奨されているのだが、 期間限定なのでできれば無料の Octave を利用したい。

Discussion を見ると、Octave でも課題はできるよと書いてある。

でも、テストスクリプトを実行すると以下のような Warning がたくさん出る。

warning: Matlab-style short-circuit operation performed for operator &

これを消したい。

消す方法

/usr/share/octave/site/m/startup/octaverc に以下の行を追加する。

warning('off', 'Octave:possible-matlab-short-circuit-operator');

参考: linux - How to suppress warnings in gnu octave - Stack Overflow

これで Warning はひとまずでなくなる。

01 Feb 2017, 15:43

coursera の Machine Learning を受講してる

coursera で Andrew Ng 先生の Machine Learning の講座を受講してる。

本当は、修了時にブログ記事を書こうと思ったけれども、 勢いで半分終わった今(week5)、記事を書いてしまったので公開。

2 度挫折しました

MOOC の講座は 30 近く受講してきたけれども、 実は MOOC の代表ともいえるこの講座は手が出なかった。

なぜなら、、、難しいから・・・。

2 度挑戦して、2 度挫折しています。

  • 1 度目: 他の mooc(nand2tetris)を受けてて時間がなかったから week3 で挫折。
  • 2 度目: week5 の back propagation の難解さに挫折。

機械学習諦めようと、何度も思った。 でも、世間の風潮は AI まっしぐら。 エンジニアとして AI に興味を持たない人はモグリ的な空気を感じたので、 再び再起を決して ML に挑みました。

今回、挫折しないように以下を心がけました。

  1. 勉強カフェ 3 ヶ月プログラムに参加して、coursera ML を宣言
  2. ゼロから作る Deep Learning で Back Propagation を学習
  3. 日本語情報を漁った

3ヶ月プログラム

勉強カフェには 3 ヶ月プログラムというのがあり、それに参加した。 やる気のある人たちが集まって、お互いの目標の達成のために 励ましあいながら切磋琢磨するというもの。ここで、coursera の ML を目標に掲げた。

ゼロから作る Deep Learning

また、大ヒット中の書籍 ゼロから作る Deep Learning を 5 章まで読んで、 Back Propagation の仕組みを理解した。

この本は大変わかりやすくアルゴリズムを紹介していて、 この本がなかったら、2 度目の時のように挫折していただろう。

ただ、この本で紹介されている方法と、Lecture で紹介されている方法には ギャップがあり、現在その差異の理解について悩んでいる。 多分、同じことを行っているのだと思うのだが、いまいち理解できていない。

日本語情報

coursera の Machine Learning は、受講者が過去に大勢いて、 ネットでしらべれば、情報がたくさん出てくるところがいい。

英語で分からないときは、日本語情報に当たって理解を深めた。 とくに役に立ったのは以下の記事たち。ありがたい。これがなければ挫折していた。感謝。

講義の内容

“coursera Macnine Learning 修了” で 検索するとわんさか修了報告記事が引っかかるので、 ここでは、簡潔に書く。11week で以下のことを学んだ。

  • 機械学習とは
  • 教師あり学習と教師なし学習
  • 回帰問題と分類問題
  • 線形回帰
  • ロジスティック回帰
  • ニューラルネットワーク
  • サポートベクターマシーン
  • k-Means
  • 主成分分析(PCA)
  • 異常検知
  • レコメンデーションシステム
  • 機械学習の評価と改善
  • 機械学習を組み合わせる

などなど。じゃあ、学ばなかったアルゴリズムはなにか?手持ちの参考書を元にピックアップ

  • 決定木
  • EM アルゴリズム
  • ベイズ推定
  • 深層学習(Deep Learning)
  • 強化学習

たぶん、他にもたくさんあると思う。 網羅するには、このシリーズを読破すればよい(そんな人いるのか?)

そしてこれから先の学習プラン

coursera の Machine Learning を受講し終えた人たちはどこへ消えていくのか? せっかく修了したのに、ほとんどの人が、受講後、機械学習から離れていくように見える。

自分は、これからもせっかく頑張った機械学習の勉強を続けていきたい。

さて、これから何をするべきか?以下の記事が参考になった。

以下、思いついた学習プランを列挙。鬼速 PDCA を回しながら、2 年間かけて実行していく予定だ。

数学の勉強

大学の数学を忘れてしまったので、やり直したい。やり直しプランは以下に書いた。

他の MOOC を受講する

他の MOOC を受講してみるのもよいかもしれない。よきロールモデルを見つけた。

この人のように片端から MOOC を受けてみるのはよいかもしれない。

必ず挫折しそうだけれども、次はこれを受ける予定だ。

Neural Networks for Machine Learning

Hilton 先生は、Deep Learning のブームの火付け役の人。これはすごい。

Udacity にも Udacity 創立者の Sebastian Thrun 先生が講師の授業がある。

python で課題をやり直す

おもしろいリポジトリを github で見つけた。

まだ試していないけれども、README によると、python で Assignment を提出できるらしい。 このスケルトンリポジトリをつかって、python で 復習するのもよい。

また、ネット上には、多くのひとが Python で Assignment をやり直している。

この本も気になっている。ベストセラーの本。これを読みつつ、Python と戯れるのもいとをかし。

書籍での学習

簡単な書籍から入って深いところまで、勉強していくというルートもある。

なにしろ、変化が早い分野なので、矢継ぎ早に今年も良書が出版されるだろう。

Amazon や オライリーの動向を常にチェックしていよう。

TensorFlow で遊ぶ

勉強だけでは飽きてしまうので、自由に遊びながら学のもよい。

TensorFlow がブームなので、 TensorFlow のチュートリアルを読みつつ、DeepLearning を勉強しようか。

最後に

自分は、頭が悪い。具体的には、IQ が 80 台だ。 ある人が簡単に理解できることも、自分には難しい。 それでも、努力は才能で克服できると信じている。

そして、目指すは、PRML(パターン認識と機械学習)。 今のレベルでは、読めないので 1,2 年くらい回り道をしてから挑む。

PRML 読破後は、機械学習に関わる仕事をする。社内にあればいいのだが・・・。

これから数年間は、機械学習(と英語)に全力を傾ける。 大学生のときに遊んでいたつけを今こそ返すときだ。 本気で数学と機械学習の勉強をしよう。

なにはともあれ、coursera の Machine Learing を挫折しないで完走を目指す!!

追記

coursera Machine Learning 修了しました!! certificate

28 Jan 2017, 03:19

結局、機械学習に必要な数学ってなに?

前置き

記事がはてぶ炎上して恥ずかしい思いをしたので、結構書き直しました。

この記事よりも良質な記事を参考記事に列挙したので、このページをブックマーク集だとして、他のページを参照していただければと思います。

はじめに

機械学習を勉強するにあたって、 ベースとなる数学を勉強したいというモチベーションが高まってきた。なぜか?それは、今まで数学的な知識なしに勉強を進めていたのたけれども、論文が読めなかったり、少し数式で込み入ってくると、とたんにわけがわからなくなったからだ。

しかし、一番のモチベーションは、やっぱり機械学習を勉強するものとしての登竜門、PRML(パターン認識と機械学習)を読みたいというものがある。

参考記事

そこで、機械学習のために必要な数学を調べてみたのだが・・・どのサイトをみてもこれはというものがみつからないのだ。

2017年現在で、有益な記事をできるかぎり集めてみた。

なぜ、ピンとこないか?それは、分野が大きくまとまりすぎているから。

この分野のこの知識がこの技術のここに役に立とついう、ピンポイントな記事がなかなか見つからない。

自分の中での結論

結論としては、情報系の大学1,2年生で習う必修科目で十分。

  • 線形代数
  • 微分積分
  • 確率・統計

余裕があれば、以下を選択科目として勉強するのがよい。

  • ベイズ統計
  • (凸)最適化
  • 情報理論

勉強計画と実績

前提条件として、自分のバックグラウンドを書いておきます。

一応、情報系の大学の学科を卒業した(学部卒で院には行かなかった)学生のころに得意だったのは線形代数。微積は、単位を落として2年連続でうけたので記憶に残っている項目が多い。統計は、自分はほとんどやっていない。

大学4年の専攻は、情報理論。エントロピーとか、圧縮とか誤り訂正について学んだ。

初級

まずは、大学生が大好きなマセマシリーズで、基礎固めをすることにした。

  • スバラシク実力がつくと評判の線形代数キャンパス・ゼミ
  • スバラシク実力がつくと評判の微分積分キャンパス・ゼミ
  • スバラシク実力がつくと評判の統計学キャンパス・ゼミ

機械学習に関係のなさそうなところは流しつつ進めるという方針を立てた。

キーワード + 機械学習で検索をかけて、検索でヒットしないところは飛ばした。具体的には、統計の検定とか、線形代数のジョルダン標準型や、重積分の体積の求め方などなど、飛ばした。

マセマシリーズを一通りやった感想を書くと、マセマはガチ!証明をおろそかにしない。注釈が至るところに埋め込んであるので、式を追っていってわからなくなるところはない。しかし、定理、証明、定理、証明・・・という典型的なつまらない数学の本になっている印象をうけた。

機械学習は、数学を応用するので、定理の証明はできることに越したことはないが深入りする必要はないと考えている。(このポエムに同感した)

中級

  • プログラミングのための線形代数

    • プログラミングのための確率統計

プログラミングのための〜シリーズで線形代数と確率統計を学ぶ。

このシリーズは、イメージで概念を説明する特徴がある。

ちなみに、プログラミングの〜と書いてあるが、プログラミングはでてこない。

さらにいうと、自分が大学一年の時に、線形代数のやつを購入して愛読していた。

大学を卒業してから、10年近くが立ったいま、また役に立とうとは夢にも思わなかった。

次に紹介するのは、やろうかどうか悩んでいる、オプションの本だ。

  • これなら分かる最適化数学

すこぶる評判がよい本。機械学習の学習とは、最適化にほかならない。機械学習のキモを学べるほんだとか。

  • Pythonで体験するベイズ推論 PyMCによるMCMC入門

PRML本は、ベイズ統計がベースとなっているときいているので、ベイズ統計をガッツリやっておきたい。

この本は、まずコードを動かして結果を見てから理論を学習するという独特の方式をとっているらしい。

原著は Bayesian Methods for Hackers (ハッカーのためのベイジアンメソッド)。心たぎるタイトルではないか!!

  • 情報理論の基礎―情報と学習の直観的理解のために

一応、大学の専攻が情報理論だったので、情報理論は抑えておきたいところ。

この本は、機械学習の観点から情報理論を扱うという独特な本。余裕があればぜひ読みたい。

機械学習入門

数学の基礎が固まってきたら、そろそろ機械学習をやっていきたい。

  • Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

この本の特徴は、なんと数式が出てこないところだ。

数式に苦手意識があるので、まずは数式なしから、イメージとして機械学習を捉えていきたい。

更に、この本は、scikit-learnをマスターすることができる。

scikit-learnをマスターすれば、Kaggleに挑戦できる。よって、早いうちに読んでおきたい本として、筆頭に上げた。

  • Python機械学習プログラミング 達人データサイエンティストによる理論と実践

中級レベル。これもコードが示されているので、理論と実装を同時に学ぶことができる。

このあたりからKaggleをガンガンやっていきたいところだ。

  • はじめてのパターン認識

王道。機械学習を目指すならばだれもが通る本。はじパタ本。

機械学習の概念が数理的な側面からコンパクトにまとまっている。

  • 言語処理のための機械学習入門

これも王道。通称、高村本。はじパタ本とならんで、機械学習入門の書として挙げられている。

自分は、はじパタと高村本を比較した結果、高村本から入門することにした。

なぜなら、薄いから。はじめの1/4が数学の説明で費やされているから。

重要視されているのは、凸最適化、確率論、そして情報理論。数式の展開が丁寧。

  • データ解析のための統計モデリング入門

これも王道。機械学習がはじパタ本ならば、統計学はみどり本。

2つはデータサイエンティストを目指すものとしての最低ラインだとか。

はじパタが識別モデルを扱うのに対し、緑本は生成モデルを扱う。

ラスボス

  • パターン認識と機械学習
  • Kaggleに挑戦

あとは、実践あるのみ。Kaggleは 早い段階から数学や機械学習の勉強と平行して、積極的に取り組んでいきたい。

理論だけしかできない人間になりたくない。

Coding First の精神で頑張りたい。

めざせ、カグルマスター!!

20 Jan 2017, 22:49

完全無欠ダイエットを開始します

体重が、ヤバい。この半年間で 20kg 太ってしまった。現在、83kg, 半年前は 63kg…

file:./../img/IMG_1292.PNG

そのため、完全無欠ダイエットを開始します!!

どうして太ってしまったか?

シュークリームの食べ過ぎ。 一日に 3 個〜 9 個を半年間たべつづけたら、太ってしまっだ。

昨日ショックなことがあって、久しぶりにスーツのズボンを履こうとしたら履けなかった。

そのため、*葬式にいくことができない* !!

これは大変なことだ。今、手持ちの服ではけるズボンは 2 着しかない。とても困る。

完全無欠ダイエットとは?

これは、シリコンバレー式 自分を変える最強の食事で紹介されているダイエット方法だ。

キーとなるのは、完全無欠コーヒー。これを飲むと頭が冴え渡り、空腹感がなくなる。

実際、私はこのダイエット方法を試して、3 ヶ月で 9 kg の減量に成功した体験がある。

しかし、その後ストレスのため、シュークリームを乱食して、20kg 太ってしまった。

なので、適切に完全無欠ダイエットを実行すれば、体重は減っていくという確信はあるのだ。

目標設定

1 ヶ月 3kg, 半年で 18kg やせることを目指します!

主に食事制限によって、ダイエットをしようと思う。

暖かくなってきたら、ジョギングも取り入れようと思う。(今は真冬なので寒い)

食事プラン

朝食: 完全無欠コーヒー

完全無欠コーヒーを飲みます。

  • インスタントコーヒー大さじ 2 杯
  • MTC オイル 大さじ 2 杯
  • 水、コーヒー 2 杯分 500ml
  • グラスフェドバター 10g

file:./../img/IMG_1282.PNG

昼食: 完全無欠サーモンアボカドサラダ

完全無欠サーモンアボカドサラダを食べます。以下の記事を参考にしました。

今までは、松屋、吉野家、すた丼でお昼を済ましていたけれども、 これからはお弁当を毎朝つくって、持っていくことにする。

  • アボカド 1 個
  • スモークサーモン 1 パック
  • オリーブオイル
  • リンゴ酢
  • サラダ菜かレタス

夕食: 納豆卵ごはん

ご飯 14 合に、納豆と卵をかけて食べます。

夕食時に炭水化物をとることがよいことは、本でも紹介されている。

  • 14
  • 納豆一パック
  • 卵1つ

file:./../img/IMG_1281.PNG

就寝前: 完全無欠はちみつミルク

はちみつと MTC オイルの組み合わせが安眠を誘うことも本で紹介されているので、これを実践。

  • はちみつ 大さじ 1 杯
  • MTC オイル 大さじ 2 杯
  • 牛乳 300ml

file:./../img/IMG_1293.JPG

レコーディングダイエット

ダイエット用のツイッターアカウントを作成しました。

https://twitter.com/tsu_nera_d

これに、

  • 食べた食事
  • 毎日の体重

をツイートして、ログとして残すようにする。

以下の iPhone アプリがツイッター連携していて使える。

日々の体重の変化記録することで、ダイエットのモチベーションを保つ。

PDCA サイクルを回す

以上が、計画である。しかし、計画は往々にして失敗するものだ。

どうも体重が減っていかない場合は、起動修正をしていく。

ダイエットは、PDCA を回すのによい教材だとい本を読んだ。

13 Jan 2017, 15:18

fish ユーザなら入れておきたいプラグイン 13 選

fish ユーザなら、fisherman を使って、簡単にプラグインを入れることができます。

fish のいいところは、fisherman というプラグイン監理マネージャーがあるところです。

今日は、自分が入れているおすすめプラグインを紹介します。

oh-my-fish

oh-my-fish/plugin-balias

alias の代わりに balias と書くことで、alias を補間してくれる。

fisher oh-my-fish/plugin-balias

oh-my-fish/plugin-expand

cd を冒頭につけなくてもディレクトリ移動できる。zsh でもこんな機能あった。

fisher oh-my-fish/plugin-expand

oh-my-fish/plugin-peco

2 つの機能を提供してくれる.

  • peco_kill … プロセスキル
  • peco_select_history … コマンド履歴

peco i/f で どちらも選択して、アクションをする。

fisher oh-my-fish/plugin-peco

oh-my-fish/extract

どんな圧縮ファイルも解凍してくれる extract コマンド

fisher oh-my-fish/plugin-extract

fisherman

fisherman/fzf

ファイル検索や実行コマンド検索ができます。fzf のインストールが必要。 以下から fzf のバイナリが手に入る。

fisher fzf

fisherman/gitignore

.gitignore を作成します。

fisher gitignore

fisherman/spin

時間がかかる処理のときクルクル回るアイコンを表示してくれる。

fisher spin

fisherman/z

z (フォルダ名)で フォルダに移動できる超べんりコマンド

fisher z

その他

edc/bass

Bash の文法を fish シェルでも使えるようにしてくれる。

fisher edc/bass

0rax/fish-bd

ディレクトリを遡ることができる。back directory.

fisher 0rax/fish-bd

oshiori/fish-peco_select_ghq_repository

ghq コマンドと peco の連携。ghq リポジトリ群を peco で選択して移動できる。

fisher oshiori/fish-peco_select_ghq_repository

tsu-nera/fish-peco_open_gh_repository

拙作。ghq コマンドと peco の連携。 ghq リポジトリ群を peco で選択して gh-open コマンドで開くことができる。

fisher tsu-nera/fish-peco_open_gh_repository

tsu-nera/fish-peco_recentd

拙作。z コマンドで頻繁に訪れるディレクトリを peco で選択して移動する。

fisher tsu-nera/fish-peco_recentd

終わりに

私のキーバインドは以下のようになっています。

function fish_user_key_bindings
        # ghq を選択
        bind \cl peco_select_ghq_repository
        # gh-open
        bind \cx\cl peco_open_gh_repository
        # コマンド履歴を見る
        bind \cr peco_select_history
        # プロセスをキルする
        bind \cx\ck peco_kill
        # 最近見たディレクトリに移動
        bind \cx\cr peco_recentd

        # fzf
        bind \cx\cf '__fzf_find_file'
        bind \ctr '__fzf_reverse_isearch'
        bind \ex '__fzf_find_and_execute'
        bind \ed '__fzf_cd'
        bind \eD '__fzf_cd_with_hidden'
end

私の fishfile は以下です。日々進化しています。

12 Jan 2017, 15:23

ghq で管理しているリポジトリを peco で選択して、gh-open で開く fish プラグイン

peco, ghq, gh-open の組み合わせが便利。

ghq で管理しているリポジトリを peco で選択して、gh-open で開く。

これを、fish に移植した。リポジトリは以下。

あらかじめ、

をインストールしておいて, 以下でインストールできる。

fisher tsu-nera/fish-peco_open_gh_repository

12 Jan 2017, 13:13

oh-my-fish は古い!fisherman で置き換えられる。

今まで、oh-my-fish を fish のパッケージ管理として利用してました。

しかし、fisherman を利用すれば、oh-my-fish で利用してきた機能を置き換えることができることを知りました。

ということで、oh-my-fish は捨てて、これからは fisherman 一本で管理していくことにします。

置き換え例

たとえば、

  • omf で hoge というプラグインを利用していた場合、fisherman で omf/hoge に置き換え可能.
  • omf で fuga というテーマを利用していた場合、fisherman で omf/theme-fuga に置き換え可能.

移行手順

以下のチケットにまとまっていました。

  1. fisherman のインストール
curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman
  1. omf plugin を ~/.config/fish/fishfile に加えて fisher コマンドを叩く

加えるルールは以下のとおり

  • plugin xxxx を使っている場合は、oh-my-fish/plugin-xxxx
  • theme xxxx を使っている場合は、oh-my-fish/theme-xxxx
oh-my-fish/plugin-xxxx
oh-my-fish/theme-xxxx

そして、fisher コマンドを実行。

  1. oh-my-fish のアンインストール
omf destroy

トラブルシューティング

oh-my-fihs/theme-default をインストールしたら、git_is_repo という関数がないよと Warning がでた。

fiserman で、git_util をインストールしたら、warning はでなくなった。

11 Jan 2017, 13:40

ポモドーロテクニックの iPhone アプリ flat tomato が素晴らしい

SoftSkills を読んでから、ポモドーロテクニックを意図的に自分の作業に取り入れている。

ポモドーロテクニックを用いることで、

  • 作業と休憩を明確に分けることができる
  • 作業に集中できる
  • 自分の作業見積ができる

というメリットに気づいたからだ。

以下の機能が必要になった。

  1. iPhone アプリであること
  2. 終了時のアラームがバイブであること

というのも、TOEIC の勉強を自習室でするときに、 パソコンは広げないし、まわりにも迷惑をかけたくない。

この2つの条件を満たすアプリを探していたところ出会ったのが、Flat Tomato だった。

Flat Tomato の紹介

Flat Tomato は数ある iphone ポモドーロ・テクニックアプリの一つ。

特徴は、

  • 美しい UI
  • トマト数・すなわち作業見積・統計機能(有料)
  • 他サービスとの連携(todoist, iPhone Calener, Evernote)
  • バイブアラーム機能

だろうか。iPhone アプリで無音バイブアラーム機能を有しているのはこれのみである。 調べて見ると、

  • Be Focused(Focus Timer)
  • Tomatodo

などがバイブ機能を有していると書いてあったが、試してみたところ嘘っぱちだった。 バイブレーションの設定はあるものの、実際にはバイブしなかった。

他サービスとの連携

とくに素晴らしいと思ったのは、以下の二点。

todoist と連携できる

todoist というタスク管理サービスと連携できる。

todoist に登録してあるタスクからポモドーロを使って作業したいタスクを選ぶことが可能。



iPhone Calender と連携できる

iPhone カレンダーと連携できる。 このことによって、カレンダー上にライフログを残すことができるのだ。


以上、駆け足になってしまったけれども、素晴らしい Flat Tomato の紹介でした。

おまけ

最近見つけた Web ポモドーロテクニックサービスで、以下のサイトがいい。

Web サービスでは、Tomatoes が優秀だったけれども、 最近出てきた、Pomodoro Tracker は Tomatoes を抜いたかもしれない。

なぜか? それは、無料でトマト数の見積と統計機能がついているからだ。 最近出てきたサービスなので、ゆくゆくは有料化してしまうかもしれないが、 つかうなら今がチャンス!素晴らしい。

おまけ2

todoist と連携できるデスクトップアプリは、PomoDone だ。

マルチプラットフォームなので、Windows, Mac, Linux から使うことができる。

todoist だけでなく、いろいろな Web サービスと連携できるところも魅力だ。