2015まとめ

2015

買い物

  • 家を買った
  • やたら歯を治療した

子供が生まれそうだったので新しい家を去年から探して回っていた。 10軒ぐらい見て2軒話を進め、最終的に1軒契約という形になった。

今年の前半はだいたいこれ。

子供

  • 産まれた
  • 育てた

今年の後半はだいたいこれ。

大変だったからなのかずっと家にいたからなのかで、あまり記憶が無い。 とにかく出来るだけのことはがんばった(なぞにほんご)。

写真を親族に見せるためのWebサービスも自作して、今も喜んでもらえている。

プログラミング

ほとんどはどうしようもないものだけど、ほんのちょこっとは誰かに使われている気がする。

PR

あまり大したことしてないなあ。。。

発表

RubyKaigi2015 LTした。

http://ksss9.hatenablog.com/entry/2015/12/12/231210

誰も使ってないよ。

その他

ひとことで言うとしょぼい。。。

http://booklog.jp/users/ksss

目標60冊、結果15冊。

壊滅的に駄目だった……。

2016

引っ越す

  • お金の勉強をする
  • 家具をみつくろっておく
  • どういう家にしたいのか考えておく

子供

  • 離乳食をつくる
  • これからの育児について勉強する

プログラミング

  • 役立つコードを書く
  • 新しい技術をおぼえれるコードを書く
  • 自分のプロダクトばかりでなく、他のプロダクトにもちゃんと目を向ける

発表

1回ぐらいはやる。

  • お金系、技術系をもっと読む

がんばる

ぞい

子育てしながらリモートで働いた半年間

この記事は子育てプログラマ・ITエンジニア・Webデザイナー Advent Calendar 2015の20日目の記事です。

前回は@elcondorさんの背中を預けるということ、あるいは共働き家庭での子育てについて - condor's diaryでした。

はじめに

僕はプログラマーとして働いていて、 はじめて子供が産まれてから今日でちょうど半年たち、 子供のハーフバースデーを迎えることができました。

これまで僕は子育てをしながら、ほとんどリモートで働くという生活を送ってきました。

この経験はそんなに一般的なものではなく(たぶん)、 エンジニアtypeさんにも取り上げていただきました。

engineer.typemag.jp

もしこれから子供が生まれるんだけど、仕事との折り合いをどうしようと考えてらっしゃる方の力になれればと、 これまでの生活を書いていこうと思います。

子供が生まれる前

子供が生まれる前から奮闘は始まっていました。

会社には、育休をとるかどうかも相談したのですが、 これからのことを考えると収入面での不安もあり、育休自体は断念しました。

そこで、子供が産まれてからしばらくはリモートで働けるように準備を進めていきました。

会社ではもとからリモートワーク可で、僕自身も入社時から週一程度の頻度でリモートワークを実施していました。

この頻度をもっと上げて、週4〜週5でリモートワークをこなした実績があれば、子供が産まれてからもやっていけるだろうと、事前に練習を重ねていきました。

妊娠後期の妊婦は、立ち上がるだけでも一苦労なため、 ささいな用事なら僕が立ち上がって、妻が立ち上がりたいときは毎回手を貸す用にしていました。

リモート勤務の恩恵はリモートワーク Advent Calendar 2015 - Adventarでも数多く語られていますが、

僕自身も、この時点で非常に恩恵を感じていました。

子供が生まれる直前

妻が産婦人科に入院してからも、リモートワークによって浮いた時間を使って、 毎日お見舞いに行っていました。

いつ生まれるかわからない状態なので、僕も小心者なため妻から「おなかいたい」とメッセージが来れば、 「産まれる!?」と取り乱してしまいます。 直ぐに病院に駆け込めるようになっていたのは安心できました。

子供が産まれてから

子供が産まれてからは、初めてのことに手探りながらも、二人で十分話し合う時間をとることができたので安心でした。

妻は産後1ヶ月は安静にしていなければいけないので、仕事をしながらもこまめに子供のおむつをチェックしたりだっこしたりと、 仕事と育児が細かくスイッチして働く生活になりました。

僕自身は「プログラマーのフロー状態のためには十分な時間が必要だ」みたいなのはいいわけだと思っているので、 慣れさえすればよい仕事の気分転換になっていたので、そこまで作業に支障を感じませんでした。

一ヶ月もすると育児しながら働く状態にもなれてきて、生活のリズムも安定してきました。

家に二人いることの自由度

子供は一瞬たりとも目が離せません。

そのため一人で子供を見るとなると、買い物に行くにも人が多い場所に行くため、感染症のリスクが高まります。

一人で歯医者に行くことさえできません。

家に二人いることで、片方が子供を見つつ片方が外出することもできるので、一人で子供を見ているよりもかなり行動の自由が広がります。

とはいえ正直仕事をしている場合じゃないときもあるんじゃないの?

正直なところを言うとYESです。 妻の体力が尽きたり、たまたま出かけている時に大泣きしだしたりすると、僕も仕事どころではなくなってしまいます。

もっとも辛いのはそのタイミングとサービスの障害対応が重なる時で、 子供を片手であやしながら片手で障害の原因を調べてsshでサーバーのおもりをしてと阿鼻叫喚の絵になってしまうことがまれにありました。

ふれる仕事は他のエンジニアに任せたり、抱っこ紐をつけながらスタンディングでタイプしたり、膝の上で子供を揺らしながらテーブルでタイプするなど自分の姿勢を工夫したりして乗り切っていました。

キャッチアップ

子供が生まれると、最新技術のキャッチアップやプログラミングの時間が減ると言われますが、 たしかに自分のために使える時間は減ったと感じます。

家族のために時間を使うことは自身の幸せにつながるので苦ではないですが、 エンジニアとしての能力が下がってしまえば、今後のIT業界で生き残っていけなくなります。

このジレンマもリモートワークで浮いた時間が緩和してくれます。

いつもの通勤時間に当てていた時間は本を読んだり、コードを書く時間として過ごすことができます。

参考までに僕のGitHubでのPublic contributionsグラフはこんな感じ。

f:id:ksss9:20151220142049p:plain

細切れになる作業時間にさえなれれば、キャッチアップの時間はなんとか取れていると思います。

がんばれば7日連続でgemを作ることもできるしRubyKaigiでLTをすることもできます

もちろんミートアップや勉強会などへの参加率は極端に減っていて、会社の飲み会さえあまり行かずにいるという面もあります。

まとめ

育児とリモートワークの相性は最高だと思います。

自分の人生にとって、何が大切で何が大切でないか考え、大切なものに集中できれば自分の満足の行く生活がおくれるはずです。

このブログがこれから育児生活を迎える人のなにか助けになれば幸いです。

次は@chezouさんの「子供の風邪と戦う必殺アイテムについて」です。

text2svgをつかってfontawesomeをSVG化する

人気アイコンフォント、fontawesomeをSVG化したい。

そんな方にもtext2svgは便利にご利用いただけます。

fontawesomeでは指定のunicode毎にアイコンがフォントの文字として登録されています。

https://fortawesome.github.io/Font-Awesome/

この文字は公式サイト等で確認することができ、このunicodeを出力した文字をtext2svgに食わせれば、 fontawesomeのアイコンをSVG化できそうです。

指定のunicode文字を出力するには、環境によりますがIMEに付属するツールスクリプトなどを利用するとよいと思います。

例えば「github」のfontawesomeをSVG化したい場合。

まずは、fontawesomeをローカルにダウンロードします。

次にlibfreetypeをインストール。

そしてtext2svgをインストールすれば下ごしらえは完了。

rubyの場合は、unicode"U+F09B"を出力するには

ruby -e 'print "\u{f09b}"'
#=> "\xEF\x82\x9B"

unicode=U+F09BUTF-8エンコード出力="\xEF\x82\x9B"を得ることができるので

ruby -e 'print "\u{f09b}"' | text2svg --font=fontawesome.ttf > out.svg

で作成完了です。

いちいちunicodeを調べるのがめんどくさいという方は、手前味噌ですがfaコマンドがご利用いただけます。

ksss9.hatenablog.com

fa github | text2svg --font=fontawesome.ttf > out.svg

先ほどリリースしたv0.0.2では、出力文字の色を変えたり、入力textのencodingを指定できるなど、オプションが追加されています。

よければご利用ください。

text2svgでは、作成されたSVGファイルの権利には一切かかわりません。 作成されたSVGについての扱いはフォントの規約をご確認ください。

テキストの外形をsvgにする、text2svgをRubyで作った

テキストとフォントファイルを与えると、テキストの形をsvgで表現した出力が出てくる夢を見たことがありますよね?

作りました。

github.com

$ text2svg "Hello, World\!" --font="/Library/Fonts/Times New Roman.ttf" > test.svg
$ open test.svg -a /Applications/Google\ Chrome.app

sample

な感じで試すことができます。

freetypeを使っているのでこちらのインストールが事前に必要です。

$ brew install freetype

svgでは、<text>タグで文字を表現するのが普通ですが、表現したいフォントが決まっている場合フォントファイルのダウンロードを必要とします。

テキストの外形をsvgのpathにして<path>タグで表現することができれば、 サーバーでsvgファイルを生成してクライアントにフォントファイルをダウンロードさせること無しに文字を表現できます。

文字の並びやtext-align、改行やkerningにも自前で対応していて、

imagemagickなどで画像化した場合と遜色ない文字並びで扱うことができます。

f:id:ksss9:20151217182838p:plain

(上がtext2svgで作ったsvg、下がimagemagickで作ったpng画像)

実装

内部ではfreetypeAPIを呼んでいます。

freetypeAPIffi経由で呼ぶgemも作りました。

github.com

freetypeはフォントファイルを扱うCのライブラリーで、文字の外形pathやbitmap化なんかができます。

http://www.freetype.org/

https://ja.wikipedia.org/wiki/FreeType

ffiはCと他言語の間をとりもつやつ。

https://github.com/ffi/ffi

https://ja.wikipedia.org/wiki/Foreign_function_interface

TrueTypeだけならttfunkを使えばなんとか外形を取ることができますが、 .otfなPostScriptフォントに対応していません。

freetypeであればTrueTypeとPostScriptフォント両方の形式を同じAPIで扱うことができます。

今回はじめてffiで書いてみたけど、 コンパイル無しで(ffiコンパイルいる)CのAPIが呼べるのはよさげでした。

しかしながらStructの構成は自動でできてくれたらなあという感じ。

ffiは初めてなのでまだまだ至らぬ点もあるのかもしれないです。

ちなみにテストはRubyKaigiのLTで話したrgotを使っています。 メソッド一つづつテストするというよりは、ストーリー仕立てでテストするのに向いている気がする。

注意

フォントのSVGを公開してもいいかどうかはフォントの規約に依存します。 作成したSVGを公開する際は、フォントの規約にご注意ください。

RubyKaigi2015でLTした。

「A New Testing Framework Rgot」というタイトルで rgot についての紹介LTをしました。

スライドも公開しました。

発表では時間切れになって見れなかった最後の2ページも乗っています。

以下ダラダラとした話。

LTをやったのは初めて、トーク自体も二回目なのでうまくできたかよくわからないけど、「よかったよ」と言われて嬉しかった。

大学生時代はバンドをやっていた経験があって、「LTはライブだ」「LTを作曲する」みたいな気持ちで考えていたので、わりとノッた感じに仕上げられた。

削った話題としては、

「強い言葉は使わない」

「テストが通ればいいだけの時代は終わった」

「これからのテスト」

みたいなキャッチーなフレーズがあったけど、こねくりまわしているうちに削られた。 お風呂入ってる時はいいアイデアが出やすい。

わりと発表駆動で集中して考えられたので、テスティングフレームワークについて、考えなおすいい機会になった。(ちなみにテストを書くこと自体は好きじゃない)

CFPはもう一つ送っていて、「2つ送ればどれか通るかも、足りなかったらもっとだそう」ぐらいの感じで、 最近作ったいくつかのツールからCFPが募集始まった直後から書いていた。

僕が2個出した時点で合計3個、大江戸RubyKaigiの時点で合計12個しかCFPが出てなかったので、 「確率からすればかなり高い確率で当選するはず。だめならそれが自分のレベルなんだろう。」と思っていた。

もう一つのCFPでは kor について書いていたけど、 大江戸のパーティーでは「tbを読んで打ちのめされてきてください。」と言われていたし、 今思うとrgotの方でよかったと思う。

ちょっと酔ってるのでもっとダラダラした話

ある日、フリースタイルラップバトルの動画を見た。

www.youtube.com

別にラップが大好きなわけではなくて「エミネムの映画でやってたやつか〜」くらいの気持ちで見て、 見た後も特に感想がなかったんだけど、なぜか自分の中でずっと残ってて、

「あれ、LTとフリースタイルラップバトルって似てない?」と唐突に思って、

まあ思っただけで何もしなかったけどLTでラップするのおもしろいと思うので誰かやってみるとよいのではないでしょうか。

font awesomeのunicodeを出力するヤーツ

Font-Awesomeという便利アイコンフォントがある。

これをkeynoteなどで使いたい場合、ローカルにインストールしてから、 各アイコン指定の\uf09bのようなunicodeを打たなければならない。

これを探すのもめんどくさければ、文字をキーボードから作れないので、

わざわざruby -e 'print "\uf09b"'としなければならない。めんどくさい。

何かツールはないかと探してみたところ、

alfredでできる神ツールをみつけた。

しかしながらalfredの有料プラグインが必要らしく、

それならいっそ簡単そうなので自分でCLIを作ってみることにした。

github.com

$ fa github

とすると、\uf09bというunicode文字がprintされるので、これをMacだとpbcopyするなどしてから貼り付けて使う。

全リストを表示する機能もあるので、

$ fa --list | peco | cut -f2 | pbcopy

のようにすれば雑に名前を打ってそれっぽいものを探すことができる。

アイコンの見た目がわからないのが難点か……。

シェルのフォントを一時的に変えることができれば……できるのか?

mgem3連投

mruby関連、最近は全然さわってなかったので少しだけアップデート。

mgem3連投

https://github.com/ksss/mruby-signal

昔作ったやつ。CRubyのsignal.cのほぼコピペ。 コードはコピペだし公式っぽい名前なので恐れ多くてブログにすら書いてなく完全に無告知だったけど、 Trafficから使われている予感を感じていたので登録。

https://github.com/ksss/mruby-rake

昔作ったmrubyでrakeできるようにするやつ。 恐れ多くてmgemにしてなかったけど、1年たっても他者の実装が現れてないっぽいので出してみた。

https://github.com/ksss/mruby-research

昔ブログにも書いたメタmrubyみたいなやつ。 mrb_stateから、GC関連の情報がmrb_gcというstructに切り出されていたため動いてなかったので、ついでに直した。

経緯

こんなこと言ってたら

hb.matsumoto-r.jp

という、おそらくアンサーソングをいただいたのでほんとすみませんという感じで登録した。

とはいえ意外と2年前くらいの自分が主要なのは登録してたのでエライ。

みんなもmgem作ろう!あれやこれらが全然ないぞ!

OSS推進フォーラム

OSS推進フォーラム アプリケーション部会の文章にも自分のプロダクトがリンクされてたっぽい。

http://ossforum.jp/jossfiles/mruby%E3%81%A8CRuby%E3%81%AE%E6%80%A7%E8%83%BD%E6%AF%94%E8%BC%83(%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88).pdf

P.S.

Add mruby-signal by ksss · Pull Request #135 · mruby/mgem-list · GitHub

P.S. I often use your mgem in my software. It's useful, thanks!

というわけで少しは人の役に立ってるっぽい。わーい。