日常

ケ・セラ・セラ

年が明けてしまったな。

あけましておめでとうございます。

もう 1/5 ですね。はー。出社が近づくと共に、見る夢が悪いものになってきている気がしないでもない。

それはまあいいとして、ここ数年書いていた気がする一年まとめ的な記事を今年はまったく書く余裕なくまとめられていなかったので、簡単にそういうのをやろうと思って今書いてみているわけです。しかし色々とやることが終わっていなくて、あまり日本語を書いている暇がない。

去年書いた、2018 年のまとめはこれですね。なんか色々やってるけど、とりあえず 2019 年も生きられてよかったです。でも 2019 年は、 2018 年よりも生きるのが大変になった気がします。2020 年は残念ながら、もっと大変になる気がします。そろそろ難易度をコントロールできないといけません。

at284km.hatenablog.com

上の記事の続きからいきますなにやっていたかというと、2019 年はけっこう簡単に説明がついて、前半(主に RubyKaigi 前後まで) ruby/csv の改善と、ほぼまるっと一年、Charty の開発や、開発者を増やす目的の活動、それと、まるっと一年、通常の業務もちゃんとやっていたよ。

  • 1月
    • Ruby Grant 中間報告 (Charty の開発)と、Ruby2.6 の csv の bug fix
    • RubyKaigi の proposal とか 1 月だったかな?
  • 2月
    • Grant 後半過程の Charty の開発 と ruby/csv
  • 3月
    • Grant 最終報告。と csv。あと Railsdm 登壇とか。登壇については、後でまとまった資料のリンクを下に貼る予定なので、書かなくていっか。
  • 4月
    • RubyKaigi 2019 福岡よかった。もつ鍋を食べられなかったけど、2020 年、フクオカRuby大賞のおかげで再び福岡に行けるチャンスを得られたので今度こそ。
  • 5月 - 9月
    • このあたりは、Charty の開発をしながら名古屋、台湾、タイとかで発表をしたり Charty 開発者が増えたり。をしていた。うまくいったと思うしよかった。
  • 10月
    • Grant の成果報告をした。うまくいったので 2019 年から続いていたひとつの期間の区切りがここ。という感じ。
  • 11月 - 12月
    • この辺のことはまた今書いても仕方がない感じで、2020 年春以降に成果として公に報告するのでその時まとめようと思う。
    • 10 月以降は仕事ではほぼ python(PySpark) のコードを書くようになった。

こんな感じかなぁ。

今年特徴的だったのが、ついに英語でのコミュニケーション能力の必要に迫られたということかなぁ。 基本的に学習は遅延評価とか言っているので、仕事や上にあげたような開発とかをしながら最低限必要レベルにでも能力を間に合わせるというのが大変だった。だいたい忙しい時でもわりと暇という特性のおかげで時間が捻出できたんだと思う。間に合ったとは言っていないが、僕は楽しく過ごして来ることができた程度にOK。この点は今年も続けるでしょう。

2019 年のけっこう多くを占めた Charty の開発については、ちょうどよい機会が最近あって、Charty の意味だったり、ここまでのまとめ的な資料ができたのでこれを眺めるとだいたいここまで。って感じになった。便利そうである。

https://gist.github.com/284km/e6edf58f9f160b7c5065250341ffd048

あとは、年も開けてしまったしついでに冬休み的にどんなことをしていたかというと、本当にやらなければいけないことがある中、趣味の C コンパイラの実装が進んだ。最近というか 2019 年はそんなに時間がなくて、2018 年まではそれなりにやっていた作ってみた系のものが全然できていなかったので、こういうのは結構久しぶりに着手しておもしろかった。しかし本当にやらなければいけないことは別にあり、時間の使い方に少し後悔したりもしている。必ずしもこうなることが分かっていなかったわけではない。難しい。

C コンパイラは、最近だと rui ueyama さんの 9cc があり非常に親切な感じに commit を追うことができるのでそこから学習もしやすいという感覚で、ありがたい。 実は突然 C コンパイラの実装を始めたわけではなく経緯があり、一年ちょっと前のこれまたクソいそがしかった時期に、CPU(物理) とか作ってみたいなあー。2019 年に作れるといいなぁー。とか言っていたことがあって、そうきっと半分は現実逃避です。色々本業をやりながらもそれなりにぼちぼちだらだらと並行して CPU を作るための準備を進めていて、結局 CPU(物理) を作るところまではいけなかったのだけれど、FPGA 評価ボード上で CPU を動作させるところまでできた。けっこう難しくて、回路の復習と、アセンブラをもうちょっとまともに覚える(覚えるというか命令コード表と突き合わせながらなら理解できるようにする)のが必要知識という感じで、それをやっていた知識があったので、C コンパイラ、簡単な部分だけなら出来るな。と思って全然予定していなかったのだけれど知識が繋がったのでちょっとやってみたという感じだ。アセンブラをもっと知らなかったら、やろうってならなかった気がする。他にも、GraalVMコードリーディングで kmizu さんに、僕がこのまま GraalVM のコードを読み続けるとしたら JVM の知識としてそもそも足りていなそうな部分などをなんとなく教えてもらったことがきっかけで、The Java® Virtual Machine Specification を読んだこととかからも繋がっているかな。たぶん相互に想像がしやすくなった部分が無くはない。最近はこういった辺りに興味があったということなんでしょう。ほぼ無だった知識が少しは溜まってきたので、2020 年は実装が進むといいな。

こんな感じか。

それで、2020 年は、フクオカRuby大賞の本審査と、RubyKaigi の proposal 提出からです。 2020 年もちゃんと生きられるといいよね。

Rubyアソシエーション開発助成成果報告会(2018年)を終えて

最近はすこし新しいことを始めたり、やることがたくさんあって、一時的に負荷の高い期間だなぁと思って過ごしています。もはや T シャツでは寒くなりました。風邪も引いたしそれも治ってきた頃です。

書かなきゃなーと思っていたのでだらだらと書いてみたら、すごく適当な感じになった気もするけど、内容は本当のことしか言っていないしこのまま公開します。

Charty.new( "Visualizing your data in Ruby" ) |> Grant |> RubyKaigi |> Latest |> render

というタイトルで成果報告をしました。

Grant のプロジェクトである Charty の開発の特徴的な部分として、Grant の期間を終えてその後も引き続きいい感じに継続することが出来たというのがあると思います。例えば RubyKaigi で発表の機会を得られたこと、発表後や、コード懇親会、AfterHack イベントなどを通じて Charty 開発者を増やせたこと、それは次の名古屋Ruby会議でも実行できて、その後 RubyConf Taiwan, RubyConfTH と、海外カンファレンスでも Charty を作った理由とか、今 Charty がある意味みたいなことなどを広めることができて開発者も増やせたりと、もちろん本当に多くの方々が色々なやり方で協力してくれたからこうして実現したのですが、僕が今年の時点で描くことができた開発者を増やすために有効そうなアクションは全部実行することができたんじゃないかなぁ。というのが自分の印象としては強いです。

それをタイトルにどう現そっかなと思って、なんとなく左から右に流れている風に見えるパイプラインオペレーターを用いました。開発が続く中での時間の経過と、その中での毎回の発表のたびに新しいなにかは絶対に盛り込み新しい発表をするぞとは決めてそうしていたのがこう表現されたのでしょう。スライドの冒頭にも書いたのですが、|> はその後 revert されており、タイトルを考えた当時の trunk では動作したものの現在の master では動かないタイトルとなりました。

発表内容としても、僕はずっと、何回も繰り返しているのに、なかなか Charty のことを伝える発表は難しいなぁとずっと思っていて、それでもまぁ、最初に発表したのは Grant の最終報告を終えたばかりの Railsdm 2019 だったのですが、幸いにもそれから半年ほどで計 6 回の発表機会を得ることができて、さすがに最後の方の RubyConfTH とかでは英語でも割とまとまった展開で話せるようになってはきました。というわけでこの成果報告のスライドは Charty の最初の開発の節目的なやつかなと思います。デモとかはスライドにあらわれていませんが。

引き続き Charty は楽しみな感じに開発が続くので、またどういう形かで成果を公開していくぞという感じで、Charty 開発者たちはコードを書いています。

そういう開発に興味のある方はこちらへどうぞ!

speee.connpass.com

speakerdeck.com

いつもは開発者を増やすための発表をするのでこういう紹介をすることがないんですが、僕はけっこう、仕事でも趣味のコードでも、なぜそれをやるか。というのは大事にしていて、と言ってもただ楽しいからだけでもよかったりもするんですが、Charty を作るにあたっては、るびま55号の mrkn さんの記事が腑に落ちるというか、僕にとって自然に作業と向き合うことができる事実だったように思います。僕はけっこう現実をそのまま認識できる方が動機になったりするかも。

ここまで過去数回の記事ではたしかボーナスステージ的に、次はなにについて書きます。とやってきましたがやっと次は未定です。 来年の準備をいくつかしていたり、最近、データ分析基盤を作るというのにそれなりに時間を費やして取り組んでいるのでそちらで得たこととか、なんかそういうのをいい感じに公開できるようにしたいなと思っています。

When I talked at the RUBYCONFTH 2019

I was a little late to write, I talked at the RUBYCONFTH 2019 (9/6 - 9/7).

rubyconfth.com

The title is "Charty - Visualize Real-world Data with Ruby".

speakerdeck.com

Continuing from the RubyConf Taiwan, Speee is also speaker sponsor. Thanks for supports.

This time it was an opportunity to talk about Charty in English a month after talked at Taiwan.

Here is a quick summary of what I have experienced:

Charty

  • Introducing the basic functions of Charty and the latest additions
  • Charty now supports JRuby through development in Thailand. And I was able to introduce it
  • It was always difficult for me to explain Charty. However, this time I was able to speak with a nice feeling
  • I was also able to talk about the improvement of the internal interface and the plan for the stable version

Language

  • Last time (RubyConf Taiwan), the standard for me was made, so I think I could do better this time
  • It was also an opportunity to learn a little bit of Thai language
  • There was a speaker dinner the day before and I had the opportunity to test my daily conversation in English
    • It made the standard for me now
    • I felt it would be a loss if I couldn't communicate in English a little more fluently

Achieved

  • I went to Thailand for the first time
  • Saw the Chao Phraya River
  • RUBYCONFTH is the first Ruby Conference in Bangkok, I am the first person who checked in the reception :)

Charty with JRuby

I was able to meet again in Thailand after fulfilling my promise with Charles in Taiwan :)

The code is here:

github.com

benchmark-driver/benchmark_driver-output-charty

and then, After RUBYCONTH, @k0kubun acted and benchmark-driver/benchmark_driver-output-charty: benchmark_driver plugin to render with Charty that can render with box plot was created. This is also thanks to RUBYCONFTH and k0kubun-san.

github.com

ruby/csv

I also got a very happy word. Really thanks.

thanks everyone. I look forward to seeing you again.

After my talk, so many people told me what they thought and I enjoyed it a lot. My English is inadequate and I want to improve it because I wanted to talked more and told better. There were a lot of nice people here, so it seems more fun to talk more freely in my English.

That's why I would like to continue writing Charty code and other code and improve my English so that I can meet again. I hope I can participate in RUBYCONFTH 2020.

RubyConf Taiwan 2019 is great

About a week has passed since RubyConf Taiwan 2019.

In a word, RubyConf Taiwan 2019 is great. I write down some of the events that were impressive.

Through this conference, I communicated with many people. And I wrote code with them. This is the most enjoyable experience for me.

For example these code:

Charty

I met Anuj for the first time in After Hack event. He said he was interested in Charty and then wrote and sent this code.

github.com

I was talking with him while writing a code. I also talked about Rabbit and kou. I hope he will meet kou if he visits Japan :)

Goby

Another case, I wrote goby code for the first time.

Stan is very kind. He guided me to my first bubble tea experience and also answered questions about the goby code. He also told me a lot of delicious food. So I appreciate very much.

So I thought it would be fun to send him a code at this opportunity. As a result, it was a good opportunity to know about goby, and the code I wrote was merged. I had a great time.

github.com

Pre-Party

This is not a code, but an impressive event for me.

At the pre-party, I talked a lot about Japan and Taiwan with Grace. I often couldn't communicate well in my English, but I thank her for not giving up communication. I should imitate her behavior. and I hope I improve my English :) This time I didn't go to 象山 that I was told, so I'm looking forward to going there next time.

After my presentation

By the way, my presentation is here. I talked about Charty, a visualization library in Ruby.

speakerdeck.com

I got some feedback after my talk. Thank you so much. The feedbacks makes me glad and encouraging. What impressed me was the words from @headius that developed JRuby.

There are currently no Java libraries in the Charty backends (Only supported Ruby, Python, JavaScript library, some language independent APIs), but I think it would be interesting to support them. I will try to implement in order.

Future things

Fortunately, I have a chance to talk about Charty in September at RubyConf Thailand 2019.

rubyconfth.com

By that time, we will finish updating the interface of Charty we are working on. And we will release the stable version.

Based on that, Next time, I would like to introduce Charty focusing on cases that can represent Real-world data with a more intuitive interface.

For a while I will focus on making Charty more usable. Like Seaborn, for example.

Enjoy your code!!

Red Data Tools

If you are interested in developing Charty and other libraries, how about writing code together? I'm also a member of Red Data Tools, I like the policy.

red-data-tools.github.io

Asakusa.rb

I think you can enjoy Asakusa.rb when you visit Japan :)

One last thing: Ruby Association Grant

While I was writing this article, Ruby Association Call For Grant Proposals 2019 is published. Charty is a project of Ruby Association Grant 2018. How about submitting if you are interested in it?

www.ruby.or.jp

名古屋Ruby会議04 と名古屋観光日記

6/7 (金) に名古屋へ行き、6/8 (土) に帰宅。さすがに一日では多くは回れないものの、大いに名古屋を楽しんで来ました。

今回は、これまでと継続しての目的 (上 2 つ) に加え、3 つ目のやつを加えて Pragmatic Charty というタイトルで発表しました。

  • Charty を知ってもらいたいなあ
  • (Charty に限らず) 一緒にコード書く人が増えたらうれしいなあ
  • そろそろ実用的な例を示していきたいなあ

speakerdeck.com

発表準備的には、色々考えたりちょっとした挑戦だったりしたわけですが、カッコいいタイトルにしたのでその名に届く内容をお届けできたかと言うと物足りない部分はあったなあと思います。 この点では、Real-world なデータで説明する。というのが次に発表するに当たってまず早いところ用意したいものだなと感じました。こういうことが出来ますというサンプル用のサンプルデータだとしても、それが現実のデータで、なんのためにどう整理されたデータが最終的に今ここで plot されて、こういう見方が出来るからこういうことが分かっちゃったりするんです。みたいにしないと、なんかふわっとしちゃうのだと思った。 なのでそれを用意して、引き続き必要な機能を加えたり、今月辺りで既存の実装の整理をひととおり終えて、その後インターフェイスを FIX してリリースして、サンプル集を意味のあるデータで置き換えて push して、ぐらいまではこの次一気に進めたいなとか考えています。実際に Charty が使われている例とかも、徐々に紹介できる状態にしていきたいところです。

今回に関しても、やっぱり一番嬉しかったのは、発表の後で Charty に興味があるんですけど。と声をかけてもらえたことです。名古屋Ruby会議04 をきっかけに ggplot2 の対応が進んだ話とかがその内表に出せたらいいですよねー。

まあ、やりたいことはたくさんあるのですが、ひとつずつなるべく速くなるべく楽をしながらやろうと思います。

で、そういえば名古屋と言えばにせれぶさんに伝えようと思っていたけれど結局伝え忘れてしまったなとさきほど思い出したことがあって、六本木のよく行っていたお店(地下の方です)の方からにせれぶさんに会ったらよろしく言っといて!と言われていたのでした。次に名古屋でにせれぶさんに会った時には今度こそ直接伝えようと思います。 あの内径 35m のギネス記録らしいすごいプラネタリウムなどは行きたいので、また来るほかないです。

以下は写真とか。次回は RubyConf Taiwana 2019 のことを書きたいわん。台湾は始めてなので楽しみわん。

2019.rubyconf.tw

RailsConf に初めて行った時の話

4/29 出発、5/6 帰宅。なスケジュールで、RailsConf 2019 に参加してきた。帰りの飛行機の中で文章を書くはずだったところ、色々とあってそうはいかず時間が経ってしまった。

RailsConf のことは書くに難しくて、色々あったのだけれどあまりここに書くことがないなぁという感じ。

行く前後の差分で、主に後の状態について書いてみる。

  • 実際に行って、実際に現地でいろいろと体験したこと
  • だから RailsConf を現実のこととした上で、僕が話したい人と会話することができる
  • ちょっと慣れた。まだ続くわけだし
  • お金が 50 万円ぐらい減った
  • こういう働き方もあるかー
  • とか、こういう選択肢も取れるんだ
  • とかいう発想は向こうで人と話してもらったもの
  • ミネアポリスでバスに乗ることができる
  • ミネアポリスでレンタル自転車に乗ることができる
  • ミシシッピ川に触ったことがある
  • 飛行機の乗り継ぎに間に合わない時のやり方をいくらか知った
  • この作者が、この実体か。といくらか紐付いた。
  • こういうこと考えているのか。とかも
  • 総合すると、楽しかったですね
  • 行ってよかった
  • 行ってよかったと言えるだけの得たものがあった
  • あらためて、RubyKaigi すごいと思ったり
  • 手荷物はもうできる限り預けない

書くにあたって、これらを詳しく説明することを諦めた。

より英語でのコミュニケーションがマシになると、より楽しめそうなのでそこは、モチベーションになっていて良いです。

そういえばなぜ行ったかという話を補足すると、(以前書いた気がするけれど)、yahonda さんと話してもう行くことは決まっていたので、実際に行ってきた感じです。

LT は、今回もできなかったわけですが進歩していて前回 (RubyConf) は 28 番目だったところ今回は 20 番目に名前を書き 19 人目まで順番が回ってきた。おしい。この調子で行くと次回は成功する。ちなみに今回は 11 番目の平野さんことカルパス氏が LT 成功していますね。

f:id:at284km:20190521130626j:plain
RailsConf 2019 LT

今回は自費だったのだけど、宿代は yahonda さんと折半したり、僕が一日長く残る都合で (そうするとなんと帰りの飛行機代が 10 万円ほど安くなった!! )、最終日の宿は、koic さんも RailsConf 2019 に参加していて、幸運なことに永和さんにまたしても宿スポンサーをして頂きました。本当にありがとうございます。

最後にこちらは、RailsConf 一日目に行われた Ruby Tuesday Meetup の様子で、これは Matt's Bar での写真です。

mattsbar.com

次はおそらく、名古屋 Ruby 会議 04 のことを書きます。

regional-gh.rubykaigi.org

RubyKaigi 2019 で発表しました日記

みなさんお疲れ様でした。今は飛行機の中ですのくだりで書き始められた形跡がありますが vim で書きかけのままもう木曜日でした。

blog を書くまでが RubyKaigi 。ということで、日記を書きます。

僕は 2 日目 14:20 からの枠で、須藤さんと CSV に関する発表を、2 日目 afternoon brake の直前の枠で、RubyGrant 2018 で開発した Charty に関する発表をしました。

今回の発表にあたっては、書いてきたコードはもうあるので、自分と、一緒に登壇する須藤さんと、聞きに来てくれた人達が楽しめて、あわよくば仲間が増えたらうれしいなーということを考えてやりました。

slide.rabbit-shocker.org

speakerdeck.com

vim で開きっぱなしのファイルにはなんか色々書いてあるけど、読んでも何言っているかよくわからない...。使える文章がまったくないので自分で書きますが、

なんだろう、closing で松田さんが言っていたと思うけれど、We code です。僕は前回の RubyKaigi からも幸いなことにコードを書き続けて生活してくることができました。これはラッキーだなと思っています。

福岡は非常においしい場所で、1 週間程度の滞在ではおよそ足りないという感じでした。良い場所を知ることができたし、また来たいですね。

で、来週は RailsConf に行ってきます。始めてです。次の月曜にはもう出発ですが、またそのことについてなにか書けたらよいなと思います。