mtsmfm blog

Autify に転職しました

リクルート (旧 Quipper Japan) を退職し、Autify に入社しました。

Quipper には友人に誘われ 2017 年に転職しました。 最終出社日に数えたら、この 5 年で 2419 の PR を作ってマージまでもっていったようです。 (いくつかはスクリプトによって生成した PR もあるかもしれません)

Quipper へは自社サービスの開発したさが 6 割、仕事で英語やりたさが 2 割、知り合いが何人かいるからが 2 割くらいでの転職でした。特に自社サービスにある...

Read more

オフラインリアルタイムどう書く E25 の問題 - ビッグ7

オフラインリアルタイムどう書く E25 の問題です。

格子状に並んだ点がある。一番大きな7を描こう。

ルール

「7」の1辺が最も長いものを求め、各頂点の座標を返す。

「7」の条件は以下の通り。

  1. 3本の直線でできている
  2. 1:1:2 の長さである
  3. 図のように直角に繋がっている

入力

4,7,(0,3) のような入力。 最初の2つの数字、 47 はそれぞれ縦と横の点の数。 (0,3) は 7 の左側の短い縦線の先端の座標。

出力

(0,0),(3,0),(3...

Read more

オフラインリアルタイムどう書く E21 の問題 - ドキドキロシアンルーレット

オフラインリアルタイムどう書く E21 の問題です。

ロシアンルーレットをして、何人かがアタリを引いた。

最初にリボルバーに弾がどう込められていたか求めよ。

ルール

  1. 順番に引き金を引く
  2. ハズレた場合、弾倉を回転させる
  3. アタリを引いた場合、リタイア
  4. ただし、全員回転させかたに癖があり、常に同じ方向に同じだけ回転させる
  5. 残弾が 0 になるまで順番に続ける

入力

31[1]/6 のような形式。 最初の数字、311 はそれぞれ参加者。 / の後ろの数字、6 はリボルバーの最大装...

Read more

オフラインリアルタイムどう書く E19 の問題 - カード当てゲーム

オフラインリアルタイムどう書く E19 の問題です。

1からNまでのカードが2枚ずつある。 このカードは、奇数と偶数で裏に書いてある模様が違う。 これをシャッフルし、裏向きにして左から小さい順に2行に並べる。

並んでいるカードを当てよう。

図

入力

xxoxo,oooxo のような形式。 o は奇数、x は偶数、, は行の区切り。

つまり、この場合、1 ~ 5 までのカードが2枚ずつあり、

xxoxo

oooxo

のように並んでいるということ。

出力

2,2,3...

Read more

RubyKaigi 2017 で Language Serverの話をします

RubyKaigi 2017 で Language Server の話をします。 http://rubykaigi.org/2017/presentations/mtsmfm.html

この発表を通じて、Language Server というもの、その考え方を知ってもらい、 「あのエディタならこの便利プラグインがあるがこのエディタにはない」という状況が発生しないようにすることで、開発者が Ruby をさらにキメやすくなるといいなぁと思っています。 また、Ruby の静的解析について僕自身...

Read more

Docker 版 pow もどきの Yaichi を作った

複数のアプリが連携しているような Web アプリを開発する場合、アプリ A が localhost:3000 で、B が localhost:3001 で… というような構成にして手元では開発することがあるだろう。

現に Quipper では生徒向け、先生向け、管理者向け、問題作成者向け etc といったようにアプリがいくつもあって、ポート何番で動いているのかよくわからなくなる。 前々から Docker 版 pow みたいなのが欲しいなー (pow 使ったことないけど) と思っていたので...

Read more

オフラインリアルタイムどう書く E14 の問題 - サイコロできるかな

オフラインリアルタイムどう書く E14 の問題です。

追記: 当日発表中に自分で気づいて懺悔しましたが、ある場合のテストケースが足りずに出題者の回答が特定の状況で誤検出していました。 @Nabetani さんありがとうございます。

問題の概要

でたらめにサイコロの目を印刷した紙がある。 サイコロを作ることができるか答えよ。

入力

5262,4631,2644 のような形式。 数字はサイコロの目。, は行の区切り。 この値の場合上の図のようになる。

出力

true もし...

Read more

転職しました

5月末で永和システムマネジメント を退職し、Quipper に入社してました。

前職は新卒で入社し、学生時代コード書ける方とか思ってたけれど微塵もできないことを突きつけていただいたり、 プログラマとしてのありかた、仕事のやり方など非常に多くのことを学ばせていただきました。

仕事だけでなくコミュニティ面でも多くの刺激を得ることができ、西日暮里.rb とか OSS とかもこの会社にいなければしなかっただろうなぁと思います。

中でも一番影響を受けたのは @tkywtnb さんの「まずは自分...

Read more

SQL マスキングツール Vanir を作った

本番データと同様の分量、分布のデータが欲しいことはよくあるが、 個人情報を含むとそのままコピってくるわけにもいかない。

そこで *** みたいにマスキングする必要があるが、なんかそれっぽいのが見つからなかったのでえいやで作った。

https://github.com/mtsmfm/vanir

名前は某見通す悪魔から。

マスクしたいテーブル名とカラム名の yaml に Go のテンプレート書けばおっけー。

ハッシュ化できるようにしたのは、メアドなどの個人情報を外部キーに使っているよ...

Read more

オフラインリアルタイムどう書く E12 の問題 - 積むけど消えない

オフラインリアルタイムどう書く E12 の問題です。

問題の概要

5 種類のテトロミノを積んでいく。高さを求めよ。

テトロミノ

入力

3S0T2O3I のような形式。

数字は右にいくつずらしてから落とすか、文字 (I、 L、 O、 S、 T) はテトロミノの形。

出力

8 のような形式。高さ。

補足

実装ができた方は Qiitaの記事 のコメント欄からリンクを張っていただくと見つけやすくて助かります。

サンプルデータ

# 入力 期待 状況へのリンク
0 1O3L0I0T 5 状況
1 0I 4 状況
2 0I0I
Read more