請求書管理システムSiwappのRails版のUIを日本語に対応させました

請求書管理システムSiwappのRuby on Rails版のUIを日本語に対応させました。ソースコードはGitHubで公開されており、MITライセンスです。
Siwappは定期的な請求書の自動生成、そしてそれをPDFとして添付したメールの送信までできる素敵なシステムです。
入金履歴の管理機能もついています。
Herokuサーバを利用すれば無償で動かせます。

そもそものきっかけはMisoca有料化

シンプル操作の便利なクラウド請求書作成サービス「Misoca(ミソカ)」。
ちょうどフリーランスになる直前、2014年頃から愛用していました。

請求書の作成だけではなく郵送もワンクリックでできるし、回収保証サービスもオプションで契約でき、さらに弥生のスマート自動取込に対応するなど、どんどん機能が充実していきました。

ただ、その一方で、どんどん画面がごちゃごちゃしていって複雑になって、その割には欲しい機能が実装されなかったりで(きちんとMisocaにリクエストは送っています)、「なんか違うなあ」と感じていた矢先に有料化が発表されました。

もちろん対価を払うべき高機能ぶりだと思っていますが、契約を続けてもよかったのですが、その一方で「そんなに多機能じゃなくていいのにな」と感じたのも事実です。

そこで代替案を探していたところ、請求書の発行管理ができるSiwappに出会いました。

Siwapp、けっこういいじゃん

まだまだ開発途中のアプリケーションのようですが、請求書の発行管理には必要最低限以上のことができました。
画面もシンプルで、好感が持てます(個人的にはここが一番大事)
せっかくDIVE INTO CODEの授業を通じてRuby on Railsでプログラムを書けるようになったところだし、授業以外でも何か書いてみたい、それが誰かの役に立つかもしれないことならなおさら!ということで、「Siwappを日本語で使えるようにする」ことを思いつきました。
Ruby on Railsをどんどん好きになっています(笑)

チーム開発でのGitHubの使い方を習いました

自前でシステムを構築できない場合

もしHerokuやローカル環境などのシステムを自分で構築できない場合は、自由度は下がりますが、そのぶんシンプルな「Square」もおすすめです。
こちらはクレカ決済機能も搭載されており、より物品販売の方に適したサービスですが、月額の定額決済も可能なので、小規模なオンラインサービスを提供されている方にも便利そうですね。

Misocaの代替、オンライン請求書作成にSquareをお勧めする3つの理由

はじめての公開プロジェクトへのContribute

フリーランス業務の中でGitHubのプライベートリポジトリを使用したことはありますが(HTMLテンプレートの管理をしていました)、公開プロジェクトになんらかのソースコードを寄稿(Contribute)するのは前々からやりたかったけど一度もできていなかったことでした。
心につかえていた未練が消えてスッキリしました。
このプルリクいいねと君がマージしたから、5月12日はGitHub記念日。しかもキリ良く512とは。

Siwappの日本語での使い方(最低限)

公式サイトを参考にSiwappをHerokuインストールして立ち上げたあと、トップページの最下部「Available Language」で「ja」を選択すると、日本語のインターフェースになります。
本当はプロフィール設定で使用言語も保存できるようにしたかったのですが、とりいそぎ…。

やったこと

dotenv-railsをgemに追加

Herokuでは動くものの、もともとのSiwappのデータベース接続設定が(私の)ローカル環境で動かない記述だったことをきっかけに、開発環境の環境設定をファイルに記述できるdotenv-railsを追加しました。

route_translatorをgemに追加

Siwappは多言語対応アプリではなかったので、まずはどうやって日本語化させるかを考えました。
今回は、一番簡単だと思われる「URLのパラメータに言語情報(locale)を与えると、指定言語で表示される」形式にしてみました。
言語切替URLのためのルーティングを作成してくれるroute_translatorを導入しました。

Viewファイルを編集

翻訳ファイル(ja.yml)を参照してくれるように、Viewファイルを編集しました。
そもそもまだそこまでSiwappを使いこなしているわけでもなかったので、この作業は地味に骨が折れました…。
さらにHTMLを簡易的に記述できるとHamlという言語をこのアプリケーションでは採用していたため、そちらの学習も平行して行う形になりました。

さらに、URL構造を拡張子までViewに直書きしているものは、route_translatorを入れたことによりうまく動作しなくなったため、直書きしないように書き換えました。
この言い方だとわからないと思うので、具体的にかくとこう↓です。

= link_to ‘Download PDF’, print_invoice_path(@invoice) + “.pdf” , class: ‘btn btn-primary’

= link_to t(“download pdf”), print_invoice_path(@invoice,:format=>:pdf), class: ‘btn btn-primary’

翻訳ファイルを作成

辞書ファイル、ja.ymlの中身を記述しました。
実際に機能を使ってみないとその意味合いがわからない英語記述があったので、とりあえず確信がもてるものから翻訳していきました。
こちらは引き続き翻訳文を作成していきたいです。

現時点での反省点として 「単語を翻訳するのではなく、意味を翻訳すべきだった」 と思っています。
当初、「edit:編集」「address:住所」など、単語単位で翻訳していけば、「Edit Address」「Edit PDF」など、各所で翻訳を使いまわせるだろう、と思っていました。
実際には英語と日本語では語順が違うので、単語単位で翻訳してしまうと、日本語として不自然な翻訳になってしまうことが多々ありました。
また、文化的な面を考えても、単語単位の翻訳は文章(あるいは、メニュー)としての翻訳としては、必ずしも一致しないことが多いです。
この点はテンプレートファイルごと修正していきたいです。

やりたいこと

  • まだすべてを日本語化できていないので(エラー文章など)、翻訳文とテンプレート対応を引き続き行う

日本語PDFテンプレート

日本語PDFテンプレートはこちらです。
単に元のテンプレートを日本語化しただけではなく、日本の請求文化に合うように大幅にカスタマイズしています。
基本はHTMLですので、自由にいじって変更できます。

日本語PDFテンプレートをGitHubで見る

METAオプション

請求書の管理画面に、謎の「META attribute」欄がありました。
どうも中をみるとHTMLのMETAとは関係なさそうなので、勝手に請求書の活用欄としてテンプレートで活用してみることにしました。

上記画像を参考にしていただきたいのですが:
META値のsubjectを設定すると、「件名」として表示します。
同declare_monthの値を1にすると、「○月分」として、請求月を件名に補足として加えます。

使い方

後日公開予定

以下の記事を後日公開予定です。

  • SiwappのHerokuへのインストール方法(herokuにて日本語PDFを生成するために必要な日本語フォントの登録)
  • Siwappの使い方

この記事にコメントする

メールアドレスは公開されません。コメントは管理者による承認後に公開されます。

関連記事

静的サイトの運営にGitHub(Git)は大げさという意見も聞きますが、実際に静的サイトのHTMLソース管理にGitHub+Sourcetreeを使い始めて数年、もうなしで管理するのは考えられないと思うようになりましたので、ざっくりとその理由を書きます。
続きを読む

個人事業主(フリーランス)のウェブ制作者として働く傍ら、チェーンメイルアクセサリー制作をしています。
今回、自社サイトとは別にYahoo!ショッピングにも出店申請してみましたので、その過程を記録します。
続きを読む

DIVE INTO CODE関連記事のまとめ

Ruby on Railsスクール、DIVE INTO CODEの6ヶ月にわたる即戦力コースを修了して約3ヶ月が経ちました。
ここで一度記事をまとめます。
続きを読む

特に複数のRailsアプリケーションをmacの開発環境で並行して作成している場合。
Railsサーバを起動する際、いちいちターミナルを開いて指定ディレクトリにcdしてrails sするのが面倒だったので、ダブルクリックするだけでRailsサーバを起動できるショートカット(と言いつつシェルスクリプト)を作成してみました。
続きを読む