見出し画像

Fakerの日本語ローカライズにOSS活動を通して貢献してみた話

こんにちは、エンジニアリングマネージャーの山口拓弥(@yamat47)です。
ワンキャリアの note に記事を書くのは初めてなので、簡単に自己紹介をします。
2022年の末にジョインをして、普段は 新卒採用メディア ONE CAREER の開発チームのマネジメントをしていたり、 Ruby on Rails を中心に設計やコードのレビューに入ったりもしています。
これまでのキャリアやこれからやっていきたいことについては、過去のインタビュー記事をぜひご覧ください!

さて、この記事では最近私が行った Faker という Ruby のライブラリに小さなプルリクエストを送った OSS 活動についてご紹介をします。
また、Faker 自体の紹介や私が実際に行ったこと、さらにそれを支えるワンキャリアの制度についてお伝えします。


Faker とは?

Faker とは Ruby の Gem であり、開発や検証をする際にフェイクデータを準備する支援をしてくれるライブラリです。
Factory Bot と組み合わせて、自動テストを毎回ランダムなデータで実行するために利用している人も多いのではないでしょうか。

require 'faker'

Faker::Name.name #=> "Christophe Bartell"
Faker::Address.full_address #=> "5479 William Way, East Sonnyhaven, LA 63637"
Faker::Alphanumeric.alpha(number: 10) #=> "zlvubkrwga"
Faker::ProgrammingLanguage.name #=> "Ruby"

Faker は国際化にも対応しており、ロケールの設定を切り替えることで日本語モードに切り替えることができます。 内部的にはデータを生成する仕組みとして Ruby I18n を利用しており、Faker::Config.localeというインターフェースを介して I18n で利用するロケールの設定を切り替えている だけです。

require 'faker'

# デフォルトの状態は :en モード。
Faker::Name.name #=> "Cortney Wintheiser"

# 日本語モードに切り替える。
Faker::Config.locale = :ja #=> :ja

# 対応しているデータセットについては翻訳された値が返ってくる。
Faker::Name.name #=> "青木 航"

国際化に対応していないデータセットがたくさんある

日々 Faker には新しいデータセットがたくさん追加されている一方で、その日本語対応はまったく追いついていません。
日本語の翻訳ファイルがまだないデータセットを実行してみると、なんとも残念な結果になってしまいます。

require ‘faker’

# 日本語モードに切り替える。
Faker::Config.locale = :ja #=> :ja

# 対応していないデータセットについては英語モードの値が返ってくる...。
Faker::Artist.name #=> “Dali”

主要なものは対応されているような感はあります が、まだまだ網羅はされていません。
これは OSS コントリビューションのチャンス!ということで、手頃そうなものを選んでプルリクエストを送ってみました。

実際にプルリクエストを送ってみた

実際に送ってみたプルリクエストがこちらです。

説明文にいろいろ書いてありますが、対応したことは大きく分けて次の二つです。

  1. Faker::Sport に定義されているメソッドたち向けに翻訳ファイルを追加する。

  2. Faker::Sport に定義されているメソッドたちが日本語モードの結果を返すことを  assert_not_english を使って 検証する。

過去に作られた同様のプルリクエストを基にして、コードの変更自体はとてもスムーズにできました。
CONTRIBUTING.md やプルリクエストのテンプレートがしっかりしていることもあって、様々あるオープンソースのリポジトリの中でも特に貢献しやすいと感じました。
また途中でメンテナーの @thdaraujo さん から日本語話者による追加のレビューを求められましたが、これもワンキャリアの同僚にお願いをして事なきを得ました。

社内の OSS 活動をシェアしあう Slack のチャンネルでレビューを求めた様子

同じように日本語話者によるレビューで困った方がもしいましたら...
私でよければ全力でレビューをしますので、いつでも Twitter で DM ください!

ワンキャリアはこうした OSS 活動を積極的に支援しています

ワンキャリアと OSS の関わりについて、以前当社のメンバー江副がこのような記事を公開しました。

エンジニアとしてOSSに生かされている以上、そのコミュニティに貢献していけるような人(組織)になっていきたい。

テックブログ「エンジニア全員でOSSにコントリビュートした話」から抜粋

記事を公開してから一年半ほどが経ちますが、当時のこの想いはまったく変わっていません。
OSS 活動を目標設定の項目として掲げているメンバーも出てきており(私も 2023 年の前半はそうでした)、むしろ当時よりも強まっているのではと感じています。

  • 普段利用している技術・ソフトウェアの発展に直接貢献をする。

  • 公開されているコードを通じて言語やフレームワークに対する理解を深める。

  • 技術書やブログで得た知識を OSS 活動で用いることで生きた知識に変える。

OSS 活動を通じてこのような経験ができるように、ワンキャリアでは OSS 活動を積極的に支援しています!

まとめ

Faker で利用できるデータセットを増やしたい(独自に拡張したい)と思ってソースコードを読んでいたら、思いのほか翻訳ファイルが作られていないことに気づいたのが今回の取り組みのきっかけでした。
まだまだ翻訳されていないデータはたくさんあるので、この記事をきっかけにプルリクエストを作ろうと挑戦してくださる方が一人でもいると嬉しいです。

ワンキャリアでは OSS 活動に積極的なエンジニアを大募集しています。
少しでも興味を持ってくださった皆さま、ぜひ私とカジュアル面談でお話をしましょう!


▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら

▼カジュアル面談を希望の方はこちら

▼エンジニア求人票


いいなと思ったら応援しよう!

この記事が参加している募集