Linkers Tech Blog

リンカーズ株式会社の開発者ブログです。

リモートオフィスでの仕事を紹介! 2019年3月Matz会ダイジェスト

こんにちは、リンカーズ情報システム部の鈴木です。今回は弊社に残るMatz会アーカイブから2019年3月開催分をお送りします。

似た企業名を探す

メンバーの村繁さんによる発表です。業務要件で「既存データと似たような入力があったら検出する」という依頼があり、そこから発展したテーマです。

アルゴリズムの紹介

今回は「レーベンシュタイン距離」による文字列比較スクリプトを実際に実装して性能を検証しました。なお他の文字列比較アルゴリズムとして「ジャロ・ウィンクラー距離」「N-Gram」「形態素解析」「word2vec」の名前も紹介されました。

レーベンシュタイン距離とは、2個の文字列を入力に取り、片方に対して「挿入」「削除」「置換」の3操作によってもう片方と一致させるための最小回数と定義されます。ただしこれらの操作を同じスコアとして扱うと実用的でないので、特に「置換」に対して大きめのスコアとして扱う(つまり距離を離す)などの調整をすることもあります。Rubyで実装するためには levenshtein Gemが利用できます。

パフォーマンス計測

検証では事前に3821件のレコードを予めDBに格納しておき、入力文字列に対して「レーベンシュタイン距離が一定以下」のレコードが存在するかどうか出力するスクリプトのパフォーマンスを計測します。上記 levenshtein Gem の他に MySQL のストアドプロシージャ として実装した関数も比較していました。

  • Gem (levenshtein) 利用: 0.24秒
  • MySQL: 5.2秒

この通りパフォーマンスを圧倒、またコードのメンテナンス性も考えるとGem (levenshtein)を使うべきとの結論です。

Ruby本体での採用例

まつもとさんに対し「文字列比較に対してより良いアプローチはあるか」と質問したところ、「妥当だと思う」との回答でした。現在Ruby本体に取り込まれている did_you_mean ライブラリでも似たような処理(ここではジャロ・ウィンクラー距離アルゴリズムも取り入れているそうです)があるとのことです。

リモート勤務3年目

続いて弊社エンジニアの石川さんです。弊社唯一のサテライトオフィス勤務メンバーという立場からの気付きを発表していただきました。

東海オフィスの環境

当ブログ初登場となるサテライトオフィスは愛知県刈谷市にあり、10畳のメインルームのほかキッチン・風呂・トイレ、さらに休憩所として使える和室・洋室を備えたスペースとなっています。ただし石川さんの自宅でのリモート作業ではなく、勤務日は毎日出社しています。このことは「移動することでON/OFFを明確にできる」「セキュリティの担保が楽」といったプラスの効果を実感しているそうです。

メリット・デメリット・注意していること

メリットとして「思考を中断されない」(話しかけられない、電話が鳴らない)ことを強調されていました(エンジニアなら共感…!)。一方、大人数でのインターネット経由のビデオ会議は不都合とのことです。これに関しては「諦めの境地」とも…

意識している事として、メンバーとのコミュニケーションを円滑にするために「チャットやメールのレスポンスは早めに返す」こと、またコードやドキュメントなど「目に見える成果物を出す」ことを挙げていました。

まつもとさんから

まつもとさんはリモートオフィスは利用せず自宅の一室を作業部屋として使っているとのことです。またテレビ会議での問題点は同様に感じており、最近(ここ数ヶ月)使い始めたツールとして HackMD の紹介がありました。Rubyコアチームではテレビ会議に加えてHackMDによる共有ドキュメント機能を利用することで、話し合いの効率がだいぶ上がった実感があるそうです。

まとめ

バラエティ豊かな2本立てとなりました。メンバーの持っている知見を共有できたと同時に、Rubyの内部実装やまつもとさんの勤務環境(!)についても話題を引き出すことができ、充実した会になったのではないかと思います。

We are hiring!!

リンカーズでは社内勉強会に力を入れています。今回取り上げた月例勉強会の他、毎週月曜に前島真一(@netwillnet)氏との読書会も行なっています。またMatz会は7月度より時間帯が 18時開始 になったので、リンカーズ社外の方もより参加しやすくなっております! 興味を持たれた方は以下のフォーム、または 公式Twitterアカウント までご連絡ください。

採用情報|オープンイノベーションはリンカーズ。マッチングで世界を変える。

今後も更新を継続していく予定です。ご期待ください!