1. Qiita
  2. 投稿
  3. Ruby

Rubyで作った.jarファイルにまつわる記事(おまけ付き)

  • 2
    いいね
  • 0
    コメント

RubyAdventCalendar2016 12/2の記事です。

今年、作成したアプリケーションの振り返りをしたいと記事を書いています。つまらないと感じたら、読み飛ばしても次の記事に進んでくれればよろしいと想います。

雨水を作ろうと思い立って、実際に作り始めたのは京都へ行ってRuby会議2016に参加してからWantedlyというアプリを使って職場見学(就活なはずだった)をしていたとき。このアプリでは、見学はできても入社するためにはまだまだ先があるということがわかって、人生を考えていた時期でした。

そのときに、圧縮ファイルで.docxファイルや.xlsxファイルをまとめてメールで送信する必要性があったので、雨水を圧縮、解凍ができるファイルにしようと試みて作成しました。

Githubでは非公開にレポジトリをしているので、コーディングの内容は省略したいと想います。

[rubyで圧縮・解凍するには]

調べると、ziprubyとrubyzipがあるみたいで、私はブロガーおすすめのrubyzipで作ることにしました。

[選んだ実行環境]

.jarファイルを作成したのは、単体でライブラリなどの依存ファイルをまとめられてシンプルにどの環境でもjavaがあれば動作するはずだから。

[問題点]

進めていくうちに、大きな問題点に直面しました。

・解凍

 ∟同じ名前のファイルがあったときに、上書きしないこと

・圧縮

 ∟圧縮できるファイルを1ファイルのみに限られてしまうところ

 ∟日本語ファイル名で文字化けを起こし圧縮できないところ

[結果]

最新バージョンでは、問題点を解決している。ただし、まだまだ改良点があるとしたら、圧縮できるファイル数は有限であるところ(いくらでも増やせるが、適切な量増やすわけではない)。utf8の日本語文字は認識できるがsjisになるとやはり文字化けるところがとても気になります。

[その先]

Vectorでシェアウェアにしようかと考えています。寄付という形で雨水を配布していくために、現在改良をしています。作ったソフトの圧縮・解凍を雨水ですることで、簡単に登録申請できるようになるのが理想ですね。登録できたときよろしければ、使っていただけると幸いです。

引用先

1.RubyGems / usui

2.リリース情報

3.転職という覚悟

おまけ

公式mecab

形態素解析が過去に流行したことがありましたね。
そのときは、chasenとmecabでしたか。今回は、mecabとnattoを紹介しておきます。hadoopだと、GoSenとjatextminingでしたね。もう、動作を確認できないのですが、まだGoSenたちは健在なんでしょうか。

今は、Windowsでmecabがとても簡単に使えるようになりました。インストーラで1発です。なかのエンコーディング、utf8かsjisかどちらかを端末の環境で決めれば問題なく環境構築できています。

Github/natto

require 'natto'

text = "納豆は、和布蕪とご飯にあわせると日本の朝食だ /納豆/納豆/納豆/"
pattern = /納豆/

nm = Natto::MeCab.new('-F%m,\s%f[0],\s%s')
#puts nm.parse(text)

nm.enum_parse(text, boundary_constraints: pattern).each do |n|
  puts n.feature if !(n.is_bos? || n.is_eos?)
end

このコーディングはGithubで紹介されているのを模写しています。まだまだ、色々できそうですので参考になれば、幸いです。

Rubyで作る.jarファイルにこのmecabとnattoを使ったプログラムをまとめることができれば、きっとhadoopでもmecabで形態素解析を可能にすることができるのだろうと考えています。今後、研究する余地がありそうな分野を話して記事を終えます。話した内容を、実現することができれば、Qiitaで久しぶりに、記事を更新しますので、そのときにまた会いましょう。

記事を最後まで読んでいただきありがとうございます