コマンドラインツール作ってみた。
はじめに
最近、外人さんとメッセージすることが多かったり英語を書く機会が多いです。そんな時に英訳するときに単語が浮かばなかったりすることがあります。いちいちブラウザを開いて検索するのも大変なので、コマンドラインツールを作って、辞典をコマンドで使えるものを作ってみました。 Githubにも公開しましたー。
ツールの概要
今回は、Rubyを使って作ってみた。以下、今回使ったツール一覧です。
Thor
Thorは簡単にスマートにカジュアルにコマンドをつくることができるライブラリである。 下記のサイトがうまくまとまっているのでインストールの仕方や使い方は下記を参照にしてください
ThorでRuby製のオリジナルコマンドを作る | メモ帳代わりのブログ
Google 翻訳 API
Google Developer Consoleに登録する。 Google Developer Consoleに登録し、新しいプロジェクトを作成する。 https://console.developers.google.com/project
- APIと認証 -> 認証情報から「新しいキーを作成」を押して、サーバーを選択し、キーを作成する。
- 「課金と設定」からクレジット情報を登録する クレジット情報を登録しないと、403エラーが起こってしまう!!のでしっかり登録すること。
詳しい使い方とかはこちら
Using REST - Google Translate API — Google Cloud Platform
以上。
Rspecを使ってRailsでテストしてみた話
Rspecを用いてRailsでテストを書いてみたのでそれの備忘録。 テストについてもよくわかっていなかったのでまとめてみた。
テストについて
テストは大きく分けて下記の三つである。
- ユニットテスト
- ファンクションテスト
- インテグレーションテスト
ユニットテスト(単体テスト)
プログラムを構成するできるだけ小さい単位(ユニット)の機能に対して正しく動作するかどうかを検証するテスト。 関数やメソッドに対して行われることが多く、関数やメソッドのバグを取り除く目的がある。 railsの場合ではモデルに対して行うテスト。
ファンクションテスト(機能テスト)
システム開発の際に行われるテストのうち、ユーザー側から要求された機能をシステムが満足しているかどうかを検証するテスト。 ユーザーから渡されたデータと処理の結果を比較するブラックボックステストなど中でどんな処理をされてるかなどのテストというよりは要求書通りにうまくいってるかを確認するのが目的である。 railsの場合ではアクションに対して行われる。
インテグレーションテスト(総合テスト)
システム全体に行うテストであり、最終確認のテスト。 サインアップからログインまでの流れなどの一連の流れのテスト。 railsではアクション間に対してのテスト。
Rspecの導入
Railsではデフォルトでテストユニットが用意されているがRspecを用いた自動テストの環境を整えテストをしやすくする。
Rspecのインストール
Gemfile
に以下のgemを追加してbundle install
group :test do gem 'rspec' gem 'rspec-rails' end
テストを書いてみた。
Model編
準備編
まず、Rspecを用いてテストするためのmodelクラスを一つ 用意する。以下のコマンドでモデルを作成する。
$ rails g model post title:string subtitle:string invoke active_record create db/migrate/20141030015802_create_posts.rb create app/models/post.rb invoke test_unit create test/models/post_test.rb create test/fixtures/posts.yml
次に作成したpostクラスをテストするためのRspecを用意する。
$ rails g rspec:model post create spec/models/post_spec.rb
最後に以下のコマンドを入力してtest用のデータベースを作成する。
$ rake db:migrate RAILS_ENV=test
これで準備は終了。
テスト編
コマンドによって生成されたテストファイルを見てみると以下のような感じになっている。
なにもテストが書かれてない状態なので早速テストを書いていく。フィールドのvalidationをテストする。 仮に今回のテスト項目は以下の4点であるとする。
- titleは空であってはいけない
- titleは5文字 ~ 40文字以内でなければならない。
- subtitleは空であってはいけない
- subtitleは200字を超えてはいけない
まずは上の4つの仕様が通る場合のテストデータと通らない場合のテストデータをfixtures/posts.yml
に書いていく。下のようなテストデータを書いた。
次にこれをテストデータを用いてテストを書いていく。
流れはテストデータを読み込んでそれを実行してみて期待している値と合致してるかどうかをチェックする。
expect
文の使い方は以下のリンクを参照。
rspec/rspec-expectations · GitHub
書いたテストを実行してみる。実行の方法は以下のコマンドである。
$ bundle exec rspec spec/models/......rb
まだ、validationになにも記述していないため、7個かいたテストのうち2つしか通らない。
postモデルにvalidationを記述してテストが通るようにする。
テストが無事に通るようになった〜!!
注意点
fixturesの書き方
fixturesはテストデータを読み込むためのファイルである。このファイル内ではタグを入れてはいけない。タグを入れたい気持ちをぐっと抑えてスペースを入れましょう。
Repecは元のテストとは違うディレクトリにあるので注意
Railsではデフォルトでテストツールが用意されている。それはプロジェクトのtestディレクトリ内にfixturesからいろいろ用意されているが、もちろんのことだがこれはRspecとは違うので注意が必要である。
Rspecはspecディレクトリである。(これに気づくまでに無駄に時間を食われた。)
fixturesを読み込み忘れに注意
デフォルトのテストツールではfixturesも自動で生成され、特に指定もなしに読み込んでくれるのだがRspecではfixtures :xxxx
と手動で入力しなければならないので注意。
参考サイト
Android開発 | HttpPostしてみた話
AndroidでHttp通信をしてサーバーにデータをPostしてみたので備忘録として記録します。
AndroidでHttp通信する方法
サンプルプログラムではボタンを押すとtestという文字列をhttp://localhost:3000にPostするプログラムです。
ポイント
- AndroidManifestファイルの設定
プログラムからインターネットに接続するにはAndroidManifestファイルに接続許可するpermissionをONにする必要があります。
<uses-permission android:name="android.permission.INTERNET" />
- NetworkOnMainThreadExeption
32行目を見ると以下のような命令が書いてあると思います。
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
もし、この文が抜けてしまうとNetWorkOnMainThreadExeptionという例外が発生します。この例外はAndroid3.1以降の端末で起こります。
原因
Android3.0までは「StrictMode」が有効になっていたのですが、これ以降のバージョンでは無効になっています。 これが無効になっているとメインスレッド(UIスレッド)でネットワーク処理を行うようなプログラムを書くと例外が発生してしまいます。
解決策
- 「StrictMode」を有効にする(32行参照)
- 「AsyncTask」を継承した内部クラスを作ってそこでネットワーク処理を行う
参考サイト
Unicorn + NginxでさくらVPSにデプロイしてみた
Unicorn + Nginxを使ってrailsアプリケーションをデプロイしてみたので、備忘録として残しておきます。
ここでは、Ruby, Railsの環境は入ってるものとします。
Unicorn
Unicornとは
UnicornとはRackアプリケーション向けのHTTPサーバーです。詳しいことはよくわからなかったので以下を参照ください。Everything You Need to Know About Unicorn
Unicorn!
Unicorn is an HTTP server for Ruby, similar to Mongrel or Thin. It uses Mongrel’s Ragel HTTP parser but has a dramatically different architecture and philosophy.
https://github.com/blog/517-unicorn
unicornのインストール
インストールはgemを使います。$ gem install unicorn
unicornの設定
railsアプリケーションのconfigディレクトリの配下にunicorn.rbというファイルを作成します。以下は最低限の設定しかしていませんが、ここにlogファイルの書き出し先とかタイムアウトとか設定することができます。
4行目、5行目に記述されているsockファイルやpidファイルについては自動に生成られるしいのでクライアントが作成する必要はありません。
pidファイルやsockファイル用のディレクトリを生成します。
unicornの起動
unicornの起動は以下のコマンドです。以下のコマンドはデーモンモードとしてバックグラウンド(-D)で起動させます。また、環境はdevelopment(-E)とします。
$ unicorn_rails -c /home/railsapp/config/unicorn.rb -E development -D
Nginx
Nginxとは
軽量・高速のwebサーバーです。エンジンエックスと読むらしいです。最近、シェアが伸び初めてきているみたいで注目のwebサーバーだそうです。アーキテクチャとかもっと詳しいことを知りたい方は以下を参考にしてください。
Nginxのインストール
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
$ sudo yum install -y nginx
これでインストールは終了です。確認するにはNginxサーバを動かします。
$ sudo service nginx start
起動できたらプラウザで確認すると下のような画面が表示されます。
Nginxの設定
/etc/nginx/conf.dの直下にアプリの設定ファイルを作成する。Nginxの起動
ここまでできたらNginxを再起動する$ service nginx restart
参考にさせていただいたサイト
CentOS 6.3にRails実行環境を構築する(Nginx+Rails+Unicorn+PostgreSQL)CentOS6で最新版のnginxをyumでインストールする
UbuntuでNginxとUnicornを使いRailsアプリを動かす
[開発環境] さくらVPS 開発環境編 (Rails+nginx+unicorn)
HTMLやCSSをSmartに書くためのツール(Stylus編)
前回はJadeを使ってHTMLを簡単に完結に記述する方法を紹介しました。
今回はStylusというものを使ってCSSを簡単に完結に記述する方法を紹介します。
どのようにきれいになるのかまずは例をみてみましょう。下記のsample.cssは普通のCSSのコードです。下のsample.stylはsample.cssをStylusで書いたものです。
CSSのあの括弧とかセミコロンとかがなくなってすっごくきれいになりました!!
Stylusとは
StylusはSassやLessと同様であるCSSメタ言語の一つです。
特徴はLessやSassと同様にCSS内で変数が使えたり、Mixinsができたり、入れ子ができたら.......etc といろいろあるのですが
最大の特徴はコードをRubyっぽく書けるということです。
具体的にどういうことかというとLessやSassと違ってこんなことが出来ます。
- コロンが省略可能
- セミコロンが省略可
- カンマも省略可
- 波括弧{}は省略可
- 変数宣言もRuby構文
Stylusのインストール手順
インストールにはNodeのnpmを使います。次のコマンドでインストールは終了です。
$ npm install -g stylus
インストールされているかどうかの確認は「stylus -V」で可能です。
$ stylus -V
0.42.3
Stylusの使い方
- stylファイルを作成する。以下はサンプルです。
- 先ほど作成したstylファイルをコンパイルする。成功すると下のような感じになります。
$ stylus sample.styl
compiled sample.css - 出来たCSSファイルをHTMLで読み込むと使えます。
おまけ
Sublime Text 2でStylusのシンタックスハイライトを設定する
- Package用のディレクトリを作成し、そこにgitからJadeの設定をcloneする
$ mkdir -p ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone https://github.com/LearnBoost/stylus.git Stylus
- Sublime Text2 を再起動する
- View -> Syntax -> Stylusを選択する
HTMLやCSSをsmartに書くためのツール(Jade編)
HTMLの<>をいちいち書くのがめんどくさいしごちゃごちゃしてるように見える可読性が悪くなると思います。Jadeを使ってsmartにHTMLソースを書く方法を紹介します
突然ですが、以下の2つのソースコードを見て下さい。上の方は普通のHTMLのコードです。下は上のHTMLのコードをJadeで書いたものです。
どうですか?すばらしくないですか?これがJadeの力ですよ!!
あの、タグだらけのHTMLコードが簡単で完結になソースコードに生まれ変わりました。
Jadeとは
では、Jadeとは一体どんなものなのかを説明していきます。
Jadeはnode.jsテンプレートエンジンの一つです。なので、サーバーをnode.jsを使って作るときでないと使えません。
Jadeの最大の特徴はHTMLを簡単に完結にかけることです。
公式ホームページはこちらです。
Jadeのインストール方法
Jadeのインストール方法は以下のコマンドを叩くだけです。
$ npm install -g jade
正しくインストールされている場合は、「jade -V」コマンドでバージョンが表示されるはずです。
$ jade -V
1.3.0
Jadeの実行方法
- Jadeファイルを作成する。以下はサンプル。
- サーバーの設定する。
ポイント
サーバーでは通常のhtmlファイルを読み込む方法と少し違います。
先ほどのサーバーの設定をしたソースコードの4行目をみると
var html=jade.renderFile('index.jade',null);
と書いてあったと思います。これは作成したjadeファイルをコンパイルしてhtmlファイルを生成し、そのファイルを読み込むという命令です。
jadeファイルはhtmlファイルではないのでコンパイルを行う必要があります。
ちなみに、Jadeファイルが間違っているとこの時点でエラーが出てきます。以下は一例です。
おまけ
Sublime Text 2でjadeのシンタックスハイライトを設定する方法
- Package用のディレクトリを作成し、そこにgitからJadeの設定をcloneする
$ mkdir -p ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone https://github.com/davidrios/jade-tmbundle.git Jade
- Sublime Text2 を再起動する
- View -> Syntax -> Jadeを選択する。
まとめ
Jadeを使ってHTMLソースコードを簡単に完結に書く方法を紹介しました。しかし、HTMLソースコードがきれいに書けても特に意味がありません。なぜかというとデザインをするとなるとCSSのソースコードも記述しなければならないからです。
ということで、次回はCSSのソースコードをきれいに完結にかけるツールStylusについて紹介します。
確定申告 | 医療費控除の作成手順
毎年毎年、確定申告の医療費控除で苦労しているのでここに備忘録としてのこしておきます。
医療費控除とは
昨年1月1日〜12月31日までに病院などの医療に支払った金額が10万円を超える分を控除されるものです。詳しくはこちらを参照してください。
提出する期間
普通の確定申告は2月の中旬から同年の3月の中旬までなのですが、医療費控除のみでの確定申告のいつでもいいみたいです。これも詳しくはこちらを参照してください。
提出する書類
確定申告の際に必要な書類は以下の通りです。
- 確定申告書A
- 医療費の明細書
- 確定申告添付書類台紙
- 病院などで支払った際にもらえるレシート
- 源泉徴収書
確定申告書Aと医療費の明細書は以下からダウンロードできます。
確定申告書A・添付書類台紙
http://www.nta.go.jp/tetsuzuki/shinkoku/shotoku/yoshiki01/shinkokusho/02.htm
医療費の明細書
http://www.nta.go.jp/tetsuzuki/shinkoku/shotoku/yoshiki02/pdf/003.pdf
書類の書き方
医療費の明細書
レシートを整理して医療費の合計を計算しましょう。ちなみに、この医療費控除では人間ドックは対象になりません。くわしくはこちら
- 昨年の1月1日〜12月31日までのレシートを整理する。
医療費の明細書に「医療を受けた人」という欄があるため、医療を受けた人ごとに、かかった病院別、薬局別に領収書をひとまとめにします。それぞれクリップやホッチキスでまとめておくと楽である。 - 先ほど整理したレシートをもとに医療費の明細書に記述します。
- 記述が終了したら、「支払った医療費」の合計(A)と補填された金額の合計(B)を算出します。
- 医療費の明細書の【控除額の計算】をもとに記述します。
確定申告申告書Aの書き方
第一表
源泉徴収書の情報を確定申告書Aに書き写します。
アーA
⑤ーB
⑯ーC
⑱ー医療費明細書のG
⑳ー合計
㉑ー⑤ - ⑳
<㉒の税額の求め方>
㉑の金額を所得税の速算表に当てはめます。
税額 = ㉑ × 税率 - 控除額
例)「課税される所得金額」が500万の場合
税額 = 500万 × 0.2 - 42万7500 = 54万2500円
残りの32,34~36は申告書に従って記述していきます。
最後に
36の金額と源泉徴収のDの額を引きます。
この差分の金額が帰ってくるお金になります。
第二表
下の図のように源泉徴収書の金額と医療費明細書の金額を書き写します。
確定申告添付書類台紙
源泉徴収書を台紙にのり付けします。
提出方法
これで必要な書類は全てそろいました。提出方法はいろいろあるのですが、今回は直接税務署に持って行くときに気をつけるべきことを紹介します。
- 提出する税務署は住民票がある市の税務署へ!!
- 書類は封筒に入れて行かなくても大丈夫!!
今回書いた4枚の書類はわざわざ封筒に入れる必要はありません。ただ、レシートはばらけてしまうのでまとめて提出すると税務署的にはうれしいそうです。 - 記述に心配なことがあっても税務署で相談にのってくれる!!