大学生からの Web 開発

会社の人に見つかってぽよぽよしてきた

日本語の読みがなを返す Gem を作った

日本語の読みがなを返す Gem である rubyfuri(ルビふり) を作った。

Yahoo!デベロッパーネットワークテキスト解析:ルビ振り を利用している。

github.com

使い方

YOUR APP IDデベロッパーネットワークで取得できるアプリケーション ID.

rubyfuri = Rubyfuri::Client.new('YOUR APP ID')

rubyfuri.furu('大きな空')
#=> 'おおきなそら'

rubyfuri.furu(['広い', '日光', '時計'])
#=> ['ひろい', 'にっこう', 'とけい']

作った理由

はてなインターンの前半課題に id:SWIMATH2 さんが ルビふりAPI を利用していたのを思い出して、自分も使ってみた。

この API, ただ読みがなを返してくれるわけじゃなくて以下のように形態素っぽい形にして返してくる(形態素ではない)。

<resultset xmlns="urn:yahoo:jp:jlp:FuriganaService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="urn:yahoo:jp:jlp:FuriganaService http://jlp.yahooapis.jp/FuriganaService/V1/furigana.xsd">
    <result>
        <wordlist>
            <word>
                <surface>
                    青い
                </surface>
                <furigana>
                    あおい
                </furigana>
                <roman>
                    aoi
                </roman>
                <subwordlist>
                    <subword>
                        <surface></surface>
                        <furigana>
                            あお
                        </furigana>
                        <roman>
                            ao
                        </roman>
                    </subword>
                    <subword>
                        <surface></surface>
                        <furigana></furigana>
                        <roman>
                            i
                        </roman>
                    </subword>
                </subwordlist>
            </word>
            <word>
                <surface></surface>
                <furigana>
                    そら
                </furigana>
                <roman>
                    sora
                </roman>
            </word>
        </wordlist>
    </result>
</resultset>

で、パースするのに一手間かかって面倒だったので Gem を作った。

便利なところ

rubyfuri には、実際に API とやり取りするより簡略化されているのともうひとつメリットがある。配列を与えた時、各要素をまとめて一回のリクエストで処理しているため、API 使用回数の節約、また愚直にひとつの文字列につき 1 リクエストを直列に送るよりも高速化される。

学び

ちゃんとテストを書こう、と思って作り始めた Gem なんだけど、このエントリを書いているときにテストあんまり書けてない。

それでも RSpec でいくつかテストを書いての学び。describe 節で対象メソッドを記述して、その下に subject でテストする処理を書く。で、その下に context 節を作ると DRY な感じで良く書ける。

describe '#furu' do
  subject do
    instance.furu(text)
  end
  
  context '文字列が空の場合' do
    let(:text) do
      ''
    end
    
    it '~~~~' do
      # ~~~~
    end
  
  context '配列が与えられた場合' do
    let(:text) do
      ['今日は', '雲が', '青い']
    end

    it '=====' do
      # ============
    end
  end
  end
end

まとめ

API ラッパー作った。

github.com

日記: ペット

夕方の帰り道、自転車で帰っていたら中年女性が独り言を言って散歩していた。しっかり見ると犬と散歩中で、独り言じゃなくてペットに向かって喋っていた。

「あんたすぐちょっかい出すからあっちはダメ」。

向こうからまたペット連れの女性が歩いてくるのが見えた。T字路だったので向かいの女性を避けて方向転換しようとする中年女性。を見たところで僕が自転車で追い抜いた。

そこから 10m ほど漕いだ時、「キャンキャン!!!!」。 犬の大きな声が響いた。

少し笑えたあと、「おばちゃんすげ〜〜〜〜」と思った。ペットの習性を分かってて、人間と接するように外でも言葉でもコミュニケーションする。愛されてる。

ペットは家族、というように本当にそうなんだと思う。翻って自分はそういう接し方を出来ていたかというと、No だった。大学一年生の 6 月に人生で初めてのペットとしてハムスターを飼った。それは手入れが行き届いてなかったせいで、冬の寒さにより亡くなってしまった。それ以来、動物を飼ってない。

亡くなった時の悲しみと、犬や猫などの動物に触るのが苦手な性分から、もうペットはいいかと思っていたけれど、和やかな一件を見て少し気持ちが変わった。

C2

普段よく聴いてる Base Ball Bear がニューアルバムをリリースするから、伝えたい。

https://itunes.apple.com/jp/album/c2/id1051246945?uo=4&at=10l8JW&ct=hatenablog

このアルバムに収録されている事前に発売されたシングル曲は YouTube で公開されている。

どれも良くて、特に第三弾の「不思議な夜」が好き。

ただその動画の再生数が 5~10万再生ほどである。うーん、という感じでその辺の YouTuber の方が見られてるじゃんって思う。

例えば流行りのゲスの極みの新曲だと、430万再生ほどある。すごい。

「おかしい、もっと見ないと!」っていう意見じゃなくてどうして少ないのかと不思議。

とにかく BBB が発表する音楽、3.5th アルバムの頃から自分の好みに合う感じでひとつひとつ新曲が楽しみである。

他にも好きなミュージシャンは多くいるけど、Base Ball Bear の、シングル3ヶ月連続リリースがどれも良い、からのアルバム発表の流れに喜ばせてもらったので書いた。