Ruby と私の思い出

Ruby が25歳の誕生日を迎えるので、Ruby と私の個人的な思い出話を記録に残しておきます。

Ruby との出会いは19歳になったばかりの夏だったと思います。当時購読してた C MAGAZINE で始まった連載記事でした*1。その前後くらいに Kondara Project に参加するようになり、続いて tDiary、そして Hiki と、Ruby と触れ合う時間がどんどん増えていきました。当時、私に Ruby との出会い、触れ合える材料を提供してくださった方々には本当に感謝しています。

15年以上も読み書きし続けている言語は、日本語、英語、C/C++Ruby くらいです。いまでは日本語よりも自由に使えます。

Ruby との思い出は楽しい思い出ばかりです。Ruby 札幌との出会いは私と Ruby の結びつきを一層強くしました。Ruby 札幌という集まりはとても楽しくて、Ruby にもどんどんのめり込んでいきました。Ruby が楽しくて、Ruby を書きたいがために、研究のために書くプログラムにわざと Ruby を使う部分を作ったりもしました*2。正直、研究をしているよりも Ruby で遊んでいる方が楽しくて、指導教官に叱られたこともありました。指導教官には非常に迷惑をかけてしまい大変申し訳ない気持ちでいっぱいですが、あの当時、研究をおろそかにして Ruby で遊んでいたお陰でいまの私があると確信しています。

Ruby は私の人生を大きく変えました。2010年2月、運良く CRuby のコミット権をいただく事ができました。2011年末に私はクックパッド株式会社へ転職し札幌を出て東京へ移るのですが、この転職に成功したのはおそらくコミッターだったからだと思います。そして、クックパッドの一員として東京に出れたお陰で、株式会社 Speee でフルタイム Ruby コミッターとして働いている現在の私があります。上京する時も、その後の転職でも、毎度年収が上がりました。どれもこれも Ruby のお陰ですよ、本当にありがとうございます。

そして現在、私は Ruby を変えようとしています。Ruby は長らくデータサイエンスの分野で使えないプログラミング言語です。その状況は現在もまだ変わっていませんが、Ruby 3 が出るまでに一変させ、Ruby もデータサイエンス分野で気兼ねなく使えるプログラミング言語にしようとしています。そうすれば、将来もっと長い期間、仕事で Ruby を書いていられると思うからです。できれば2030年代は Julia と Ruby で生計を立てたいです。

一つのプログラミング言語がこれだけ人の人生を豊かにできるとは思っていませんでした。きっと、Ruby だけでなく、他のプログラミング言語でもこういう物語はあるのでしょう。でも、私にとっては Ruby でした。

これからもよろしく。

*1:著者は偶然にも通っていた高専の非常勤講師でした。

*2:ネットワーク構造シミュレーションのプログラムなので全て C++ で書く方が効率が良いのです。

2018年を如何に休むか

2018年の法定連休

  • 1月
    • 6, 7, 8
  • 2月
    • 10, 11, 12
  • 4月
    • 28, 29, 30
  • 5月
    • 3, 4, 5, 6
  • 7月
    • 14, 15, 16
  • 9月
    • 15, 16, 17
    • 22, 23, 24
  • 10月
    • 6, 7, 8
  • 11月
    • 23, 24, 25
  • 12月
    • 22, 23, 24 (23 が祝日のままの場合)

平日に休みを取ることで増える・延びる連休

  • 3月
    • 19, 20 に休みを取る
      • 17, 18, 19, 20, 21 (5連休)
    • 22, 23 に休みを取る
      • 21, 22, 23, 24, 25 (5連休)
  • 5月
    • 1, 2 に休みを取る
      • 4/28, 29, 30, 5/1, 2, 3, 4, 5, 6 (9連休)

タコにゃんにゃん

娘が、今朝届いた octocat のぬいぐるみに「タコにゃんにゃん」と命名したので、記念にブログに記事を残しておく。

タコにゃんにゃんに取り付かれたジンくん

タコにゃんにゃんもジンくんも娘の大のお気に入りだ。ちなみに、写真のように取り付かせたのは私です。

Mac 用 Slack の Beta 版に App Store 版でログインしているチームの情報を移行する

Mac 用の Slack の Beta 版では日本語入力での問題が解決していると聞いたので、早速ダウンロードして起動してみた。 すると、今まで10チームにログインしていたのに、ひとつもチームがない状態で起動してきた。

こうなった原因は、App Store 版のアプリがデータを格納しているエリアが、野良アプリとは異なるから。 ターミナルを起動し、以下のコマンドを実行してデータを移行すれば Beta 版でも今までと同じチームにログインした状態で起動してくれた。

$ cd ~/Library/Containers/com.tinyspeck.slackmacgap/Data/Library/Application\ Support/Slack/
$ tar cf - . | tar xf - -C ~/Library/Application\ Support/Slack/

2017/02/20

scikit-learn のサンプルを2つ動くようにした

今日は、 Ruby Business Users Conference に向けた開発の仕上げとして scikit-learn のサンプルを2つ動くようにした。1つは ExtraTreesClassifier特徴量の重要度を求めるやつ、もう1つは複数の分類器を比較する ScikitLearn.jl のこのサンプル

1. ExtraTreesClassifier で特徴量の重要度を求めるサンプル

Ruby 版のコードは examples/plot_forest_importances_faces.rb

実行すると以下のような図が表示される。

f:id:mrkn:20170220183137p:plain

2. 複数の分類器を比較するサンプル

Ruby 版のコードは examples/classifier_comparison.rb

実行すると以下のような図が表示される。

f:id:mrkn:20170220183148p:plain

2017/02/19

numpy も一部だけ使えるようになった

matplotlib のヒストグラムのサンプルを実行できるようにするため、とりあえず加算と乗算だけ対応した。

f:id:mrkn:20170219223312p:plain

以下のようなスクリプトが普通に動いている。なかなか良い進捗だと思う。

require 'pycall/import'
include PyCall::Import

pyimport 'numpy', as: 'np'
pyimport 'matplotlib.mlab', as: 'mlab'
pyimport 'matplotlib.pyplot', as: 'plt'

np.random.seed.(0)

mu = 100
sigma = 15
x = mu + sigma * np.random.randn.(437)

num_bins = 50

fig, ax = plt.subplots.()

n, bins, patches = ax.hist.(x, num_bins, normed: 1)

y = mlab.normpdf.(bins, mu, sigma)
ax.plot.(bins, y, '--')
ax.set_xlabel.('Smarts')
ax.set_ylabel.('Probability density')
ax.set_title.('Histogram of IQ: $\mu=100$, $\sigma=15$')

fig.tight_layout.()
plt.show.()

2017/02/18

Ruby から matplotlib を使えるようになった

Ruby から Python のライブラリ群を利用するための橋渡しになる pycall というライブラリを作っている。 今日、このライブラリを使って matplotlib を使えるようになった。

Python の C-API のエラー処理などをサボっていたりするので全然実用的な状態ではないのだが、とにかく目出度い。

f:id:mrkn:20170218230314p:plain