SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
プルリク送ったら
ライブラリ壊し
たった
鍋太郎
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
自己紹介
プログラマー✓
Debian JP 事務局✓
小市若者連 委員長 ←New✓
https://about.me/nabetaro✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
Phony
電話番号を扱う✓
世界中が目標✓
E164準拠✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
使い方
Phonyモジュールのメソッド
normalize 正規化✓
format 整形✓
etc...✓
✓
Phony['国番号']
その国の電話番号が使える…はず✓
✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
使ってみる
Phony.normalize('+81 3-1234-5678')
=> "81312345678"
Phony.normalize('03-1234-5634', cc: '81')
=> "81312345634"
Phony["81"].normalize('+81 3-1234-5634')
=> "81312345634"
Phony["81"].normalize('03-1234-5634')
=> "312345634" # !?
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
使ってみる
Phony.format('81312345634', cc: '81', format: :international)
=> "+81-3-1234-5634"
Phony.format('81312345634', cc: '81', format: :national)
=> "03-1234-5634"
Phony.format('81312345634', cc: '81', format: :local)
=> "1234-5634"
Phony['81'].format('0312345634', format: :international)
=> "+81-03-1234-5634" # !?
Phony['81'].format('0312345634', format: :national)
=> "003-1234-5634" # !?
Phony['81'].format('0312345634', format: :local)
=> "1234-5634"
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
犯行動機
国内で利用している電話番号も
使えるようにしたかった。
'0312345634' を 03-1234-5634 に✓
✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
犯行内容
テストケースを書いてプルリク
送った
✓
https://github.com/floere/phony/pull/453
2日で修正された
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
結果
Phony.format('81312345634', cc: '81', format: :international)
=> "+81-3-1234-5634"
Phony.format('81312345634', cc: '81', format: :national)
=> "03-1234-5634"
Phony.format('81312345634', cc: '81', format: :local)
=> "1234-5634"
Phony['81'].format('0312345634', format: :international)
=> "+81-3-1234-5634"
Phony['81'].format('0312345634', format: :national)
=> "03-1234-5634"
Phony['81'].format('0312345634', format: :local)
=> "1234-5634"
ええやん
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
結果
Phony.normalize('+81 3-1234-5678')
=> "81312345678"
Phony.normalize('03-1234-5634', cc: '81')
=> "810312345634" # !!!
Phony["81"].normalize('+81 3-1234-5634')
=> "81312345634"
Phony["81"].normalize('03-1234-5634')
=> "0312345634"
まって、まって、まって
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
影響
phony_rails
rails向けライブラリ✓
電話番号の正規化✓
電話番号のvalidation✓
✓
https://github.com/joost/phony_rails
おかしくなっとる!!!
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
自分の取った対応
追加テストケースのプルリク
https://github.com/floere/phony/
pull/456
✓
未マージ✓
✓
revertのプルリク
https://github.com/floere/phony/
pull/457
✓
✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
おすすめ対応
2.18.10 で止めておく✓
プルリク #457 を適用✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
考察
Phony["81"].normalizeの結
果の先頭に国番号を付加
✓
日本の電話番号は 国内プレ
フィックス「0」を取って国番
号を付加
✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
余談
市外局番には国内プレフィック
ス(trunk)は含まれない
https://en.wikipedia.org/wiki/
Telephone_numbers_in_Japan
Talkページで先頭の0について議論してる✓
わかりにくい…✓
✓
✓
プルリク送ったらライブラリ壊したった Powered by Rabbit 3.0.0
まとめ
オチはありません。✓
良かれと思ってもうまくいかな
いこともあります。
✓
適切な改善案を出しましょう。✓
おちこんだりもしたけれど、私
はげんきです。
✓

Weitere ähnliche Inhalte

Mehr von Nozomu KURASAWA

sidで始める開発者生活
sidで始める開発者生活sidで始める開発者生活
sidで始める開発者生活Nozomu KURASAWA
 
Debianのパッチ事情
Debianのパッチ事情Debianのパッチ事情
Debianのパッチ事情Nozomu KURASAWA
 
OpenLayersで地図表示
OpenLayersで地図表示OpenLayersで地図表示
OpenLayersで地図表示Nozomu KURASAWA
 
Debian パッケージングチュートリアル
Debian パッケージングチュートリアルDebian パッケージングチュートリアル
Debian パッケージングチュートリアルNozomu KURASAWA
 
PGP/GPG キーサインパーティ 接触編
PGP/GPG キーサインパーティ 接触編PGP/GPG キーサインパーティ 接触編
PGP/GPG キーサインパーティ 接触編Nozomu KURASAWA
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話Nozomu KURASAWA
 
真・HTML help文字化け対策
真・HTML help文字化け対策真・HTML help文字化け対策
真・HTML help文字化け対策Nozomu KURASAWA
 
Heroku に ChiliProject を入れてみた
Heroku に ChiliProject を入れてみたHeroku に ChiliProject を入れてみた
Heroku に ChiliProject を入れてみたNozomu KURASAWA
 
PO ファイルで翻訳管理
PO ファイルで翻訳管理PO ファイルで翻訳管理
PO ファイルで翻訳管理Nozomu KURASAWA
 

Mehr von Nozomu KURASAWA (12)

sidで始める開発者生活
sidで始める開発者生活sidで始める開発者生活
sidで始める開発者生活
 
Debianのパッチ事情
Debianのパッチ事情Debianのパッチ事情
Debianのパッチ事情
 
OpenLayersで地図表示
OpenLayersで地図表示OpenLayersで地図表示
OpenLayersで地図表示
 
Debian パッケージングチュートリアル
Debian パッケージングチュートリアルDebian パッケージングチュートリアル
Debian パッケージングチュートリアル
 
PGP/GPG キーサインパーティ 接触編
PGP/GPG キーサインパーティ 接触編PGP/GPG キーサインパーティ 接触編
PGP/GPG キーサインパーティ 接触編
 
aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話aptのマニュアルをpo4a化した話
aptのマニュアルをpo4a化した話
 
OSMを楽しむ2012
OSMを楽しむ2012OSMを楽しむ2012
OSMを楽しむ2012
 
真・HTML help文字化け対策
真・HTML help文字化け対策真・HTML help文字化け対策
真・HTML help文字化け対策
 
おきらく翻訳
おきらく翻訳おきらく翻訳
おきらく翻訳
 
Heroku に ChiliProject を入れてみた
Heroku に ChiliProject を入れてみたHeroku に ChiliProject を入れてみた
Heroku に ChiliProject を入れてみた
 
PO ファイルで翻訳管理
PO ファイルで翻訳管理PO ファイルで翻訳管理
PO ファイルで翻訳管理
 
OpenStreetMapの紹介
OpenStreetMapの紹介OpenStreetMapの紹介
OpenStreetMapの紹介
 

プルリク送ったらライブラリ壊したった