もじれつとがめん

プログラムの忘備録とゲームとかその他色々。

dbへのレコード保存・更新

saveメソッドについて

http://book.cakephp.org/2.0/ja/models/saving-your-data.html#model-set-one-two-null

[code lang=text] //レコードを新規作成 $this->;Model->;set( array( 'title' =>; 'テスト', 'hoge' =>; 'こんなかんじでセットするカラムと値を連想配列で定義する' ) ); $this->;Model->;save(); // このモデルにある、セットしてある情報とかをリセットする $this->;Model->;clear();

// レコードを更新 $this->;Model->;set( array( 'id' =>; 1001, 'title' =>; 'テスト1', 'hoge' =>; 'idを指定するればupdateになる' ) ); $this->;Model->;save(); [/code]

基本的にはset()で必要なカラムに定義してsave()で保存するのが最もシンプルらしい 別のsaveの使い方もあるけで、現状はこれで使うのには困らないからおいおいで...

凄く更新ひさしぶりだし、サイトの使い方を変更するかんじに...

今後も使うであろう知識を細々と書き出していくよ...

有料アプリとセールについて

年明け&久しぶりの投稿になりますねぇ。。 だいぶ忙しくてチェックだけはして、記事を書くことをサボっていました。 さて、本題だけど今回はandroidiosのアプリについて書こうかと。

有料アプリとセールの関係

おそらくほとんどの人は有料アプリに対しては抵抗があると思う。 私は最初、100円のアプリでも買うのにめちゃくちゃ抵抗があって有料アプリをダウンロードすることは全くなかった。

でも、やっぱり気になるアプリはたくさんあるわけで欲しいと思うことも多々あった。 そこで私は閃いた"セールやってんじゃね?" 早速調べると結構セールは常識っぽくて自分の情報収集が甘いことを痛感しちゃったりした。 どうやら定期的にというよりかは、不定期にセールは行われるようで値段の上下も結構激しい。 私がびっくりしたのは600円くらいのアプリが15円になっていた時は感動すら覚えた。 しかし、毎日チェックするとなんらかのアプリは必ずセールになっているのに気付いた。 当然イベントシーズンなんかもセールは行われるようで、年末・クリスマス・GW等の世間的な長期休暇前とかにもセールしていて 有名アプリなんかはそこらへんで安くなるような印象を受けた。 あとは、シリーズ物のアプリの新作がリリースされた時に過去作のセールもやる様子。

有料アプリの無料化?

そのセールの一環でたまに一時的に無料にしている時があった。 私はandroidを使っているので、あまり有料が無料になるような事態は見かけないのだが、iosはそうでもないらしく結構な頻度で無料になっているのを見かける。 一応私はandroid,iosの両方のセール情報を毎日チェックしているけど、アプリのセール頻度はiosの方が多くて安くなっている感じに思える。 というのも、値段の下がり方がすごいのが多いのと無料化があるのがその要因ではある。 なぜandroidも定期的に無料化しないんだ...

セール情報を載せてるおすすめサイト

せっかくなので私が個人的に気にっているサイトたちを紹介する。

APPLION

http://applion.jp/ このサイトは新着アプリの情報や特集を組んで公表してくれているので、なんとなく新しいアプリを探す時にも役に立つ。 肝心のセール情報はandroidios両方公開しており概要もついていて非常に見やすいのでかなりおすすめ。 私は最初の頃はこのサイトのみでセール情報を調べていた。

あんスマ

http://android-smart.com/ このサイトはandroidのみだけどセール情報を載せている。 こちらはandroidに関連するガジェットや便利に使う術など総合的な情報を公開しているので、androidユーザーはチェックしておくと便利になるかもしれない。 ただ、セール情報についてはスマホからアクセスするとメニューに表示されているのでチェックしやすいのだが、PCからアクセスするとなぜか表示されないので注意してほしい。

有料アプリ購入への抵抗について

これはちょっとした考察なので、興味なければすっ飛ばしてもらって構わない。

なんというか私はいわゆるゆとり世代をきっちり受けた世代なのだが、どうにも電子的に課金することに抵抗がある。 が、なぜ抵抗があるかと考えると特に理由はなくて所謂食わず嫌いな感じもあるのかなー、と思ったのである時思い切って購入してみた。 そうすると、重荷がとれたようにあれよあれよと有料アプリを買い始めたので食わず嫌いってのが主な要因であることがわかった。

しかし個人的に気になるのは、電子的に課金することへの抵抗の違いが気になった。 例えば、

有料アプリを購入するのには抵抗はあるけど、
・パズドラやモンスト等のアプリに課金することに抵抗は無い
・LINEのスタンプを購入するのに抵抗は無い

このように、 アプリそのものにお金をかけるのは嫌だけど、アプリ内の機能でお金をかけるのは気にならない このような状態というか、心理というべきか、とにかくこの傾向にあるのは個人的に間違いないと思う。 つまりアプリで儲けたければ、有料アプリより課金制の方が売れるのではないかな?という結論にたどり着いた。

終わりに

久しぶりに書いた記事なので、色々文章的におかしかったり以前とフォーマットが違うからすごく違和感を感じている。。 まぁたまには有益であろう情報を発信してみたいとおもったのでまとめてみた。 私の周りでもあまりセールに詳しい人はいなかったので、他にも情報があれば是非共有してほしいと思うので Twitterあたりで連絡ください!

エラーはよく見ようぜ、というありふれた当たり前の話

エラーや応答はよく見ましょう

多分当たり前なんだけど、上手く出来てない自分が居る事に非常に腹を立てています。
という訳で今回は、各所で見かけけるよく見るエラーのタイプを分けて、おおよその原因を分類しようかと。

エラーメッセージの共通点

エラーメッセージが大量に出てきたり、少ししか表示されなかったり、いろんなパターンがあって戸惑うかもしれないけど大抵はエラーメッセージにそのまま答えがでてるのでそれを元に修正する事で解決できるので"うわ!なんか意味わかんないのが出たっ..."ってなるより、"パソコン様がどこが悪いのか指摘してくださった.."という認識にしたほうがすこしはやる気になれるかもしれない。

エラーメッセージで大抵付いてくるヒントは
問題の発生した行数、関数名、変数名、要素名、クラス名、ディレクト
さらにエラー状態を表示してくれる。

これだけわかれば何が悪いのかたいてい分かる。
問題の発生した行数、変数が判明して、エラー状態は undefind 系なら変数に何も入ってないとか、そもそも変数が存在しないとか具体的な推測が可能になるのでエラーメッセージは超重要。

何かしらの要素が無い系

Undefind index

[code] Undefined index: ~ [/code] このタイプは大抵連想配列や配列の中に要素が定義されて無い!!って怒っています。
Undefinde index の後ろに大抵ヒントとして行数やれ、変数名とか表示されているので、ソースの中で代入し忘れとかそもそもそんな要素作っていなかったなんてことは無いか調べよう。

Undefined variable

[coode] Undefined variable: ~ [/code] このタイプは最初に紹介したやつの変数版。配列じゃなくて、変数が定義されてないとか初期化してないとか。
なので、該当箇所のソースを調べてキチンと定義されているか調べよう。

存在してない系

~ not found

[code] Fatal error: Class 'hogehoge' not found in /test/hogehoge.php line:100 [/code] このタイプは、クラスが無い時に良く見かける。
っていうか not found 自体が"見つからない"的無い意味だしね。
in の後が問題の発生したファイルで、lineの後が行数になっているので、対象のクラス名を使用してないか、または存在しているのか確認しよう。

Call to undefined function

[code] Fatal error: Call to undefined function hoge ~ [/code] このタイプは関数のスペルミスか、そもそも関数を定義してなかったり、さらには関数がインストールされてなかった時に出てくる。
この場合は疑うべきは スペルミス > 関数の定義ミス、継承とかのミス > 関数のインストールをしていない
の順番で疑うと良い気がする。

終わりに

とりあえずちまちま遭遇したら書き足していく。 珍しいとか複雑に要素が絡まって別の原因とかもあるから、とにかく引き出しを増やす事が一番エラー対策になるのかも知れない。

electronをインストールして使ってみた

electronとは

node.jsで使用できるモジュールで、これを使う事によりnode.jsが動作する環境ならプラットフォームに関係なく動作するアプリケーションを作る事が出来る。
htmlとnode.jsの記法でアプリケーションを作る事が出来るから、webサイドの人でもアプリケーションを開発出来るようになる。

インストール

node.jsとnpmは既に導入済みの前提で話を進めていく。

[code] npm -g install electron-prebuilt [/code] これだけでインストールできるはず...だったけど実行するとエラーになった。 [code] $user npm -g install electron-prebuilt

npm ERR! Darwin 13.4.0 npm ERR! argv "node" "/usr/local/bin/npm" "-g" "install" "electron-prebuilt" npm ERR! node v0.12.4 npm ERR! npm v2.13.2 npm ERR! path /usr/local/lib/node_modules/electron-prebuilt npm ERR! code EACCES npm ERR! errno -13

npm ERR! Error: EACCES, rmdir '/usr/local/lib/node_modules/electron-prebuilt' npm ERR! at Error (native) npm ERR! { [Error: EACCES, rmdir '/usr/local/lib/node_modules/electron-prebuilt'] npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! path: '/usr/local/lib/node_modules/electron-prebuilt' } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! error rolling back Error: EACCES, rmdir '/usr/local/lib/node_modules/electron-prebuilt' npm ERR! error rolling back at Error (native) npm ERR! error rolling back { [Error: EACCES, rmdir '/usr/local/lib/node_modules/electron-prebuilt'] npm ERR! error rolling back errno: -13, npm ERR! error rolling back code: 'EACCES', npm ERR! error rolling back path: '/usr/local/lib/node_modules/electron-prebuilt' }

npm ERR! Please include the following file with any support request: npm ERR! /Users/hogehoge/node_test/electron-readus/npm-debug.log [/code]

どうやら、"ディレクトリが作れないからインストールできないぜ!"って怒られてる?
という事でsudoで実行してみる。

[code] sudo npm -g install electron-prebuilt [/code]

すると、あっさりインストール完了。
多分 -g オプションでどこからでも使用できるようにインストールしようとしてるからsudo付けないと駄目なんだろう。   多分普通にディレクトリ以下のみに適応させるだけならsudo付けなくても大丈夫なハズ。

テストしてみる

テストでアプリケーションを作ってみる。
Qiitaにある記事を元に作っていってみる。
http://qiita.com/Quramy/items/a4be32769366cfe55778

作業ディレクトリを作る(プロジェクトフォルダ)

作業する為のディレクトリを作成する。
場所はどこでも良い。
[code] mkdir electron-readus [/code]

エントリポイントを決める

起動した時に、実行するファイルを指定する。
ここだとpackage.jsonの"main"で指定できるので開いて編集する。
[code] { "name": "electron-readus", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "glob": "^5.0.14" } } [/code] 個人の環境によって微妙に左右したりするからそこは臨機応変にしてほしい。

main.jsをつくる

さっき決めたmain.jsを作成する。
一応このmain.jsは最初に実行されるから様々な分岐を持たせる事で、アプリを起動した時に幅を持たせられるかもしれない。
[code language="js"] 'use strict';

var app = require('app'); var BrowserWindow = require('browser-window');

require('crash-reporter').start();

var mainWindow = null;

app.on('window-all-closed', function() { if (process.platform != 'darwin') app.quit(); });

app.on('ready', function() {

// ブラウザ(Chromium)の起動, 初期画面のロード mainWindow = new BrowserWindow({width: 800, height: 600}); mainWindow.loadUrl('file://' + __dirname + '/index.html');

mainWindow.on('closed', function() { mainWindow = null; }); });

[/code] mainWindow.loadUrl()で読み出すhtmlを決めれるっぽい。
mainWindow.on('closed'~の部分は閉じるボタンを押したときの挙動制御だろうか。
記法はネイティブのjavascriptというよりnode.jsな感じが近い。

index.htmlを作る

読み出すindex.htmlを作る。
こいつがアプリを起動した時に画面に表示される。
とりあえずhellowordから。

[code language="html"] <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Electron Read Us</title> </head> <body> <h1>Hello, electron!</h1> </body> </html> [/code] こちらはほぼ普通にhtmlだからとっても分かりやすい。

実行してみる

実行は作業ディレクトリ内で実行する。
コマンドは
[code] electron . [/code] だけ。これを実行すると画面が新しく立ち上がって "Hello, electron!" と表示されるハズ。

終わりに

とりあえずテストで起動するまでやってみたけど、とても簡単に出来た。
結構作りやすいかもって印象だからオリジナルでなにか私もアプリケーションを作ってみようと思う。

vagrantの使い方とか色々

vagrantって?

仮想環境を構築したり実行したりと仮想環境を扱うためのツール。
VirtualBox仮想マシンを起動するのでvagrant以外にVirtualBoxのインストールが必要だけど、コマンドで簡単に仮想環境を作れたりその環境をコピーして配布したりできるので開発環境の用意とかに使える。
また、仮想マシンの状態を保存できるのである地点の状態をバックアップして置くとかも出来るし、設定ファイルをgitとかで管理するとチーム全員で同じ開発環境をすぐに用意できるのが強み。

インストール

私は環境がmacなのでbrewで入れちゃう。
windowsとか他の環境は各自のインストール方法で。
[code] brew cask install virtualbox brew cask install vagrant [/code]

vagrantの流れ

大体の流れとして、まず仮想環境の元になるboxをダウンロードして、次にダウンロードしてきたboxを元に環境を展開し、最後に起動...
という流れで非常に短く分かりやすい。
この最初に出てきたboxだが、簡単にイメージするなら各種osのデーター的なものである。
が、boxは自分の環境を保存するときにも生成されるので、その生成されたboxを他の端末にコピーして環境を展開すると簡単に環境の構築が出来る。
ここで注意したいのが環境を展開する際には、展開したディレクトリに各種設定ファイルとかが生成されるので、キチンと環境毎にディレクトリを作って分けた方が良い。
プロジェクト毎みたいな感じで。

[code] //Vagrantにboxを追加する vagrant box add box名(好きな名前でok) http://boxファイルの置き場所

//boxの一覧を表示してみる vagrant box list

//boxの展開 mkdir test //任意のディレクトリを作成する cd test vagrant init box名(またはboxを直接指定する)

//仮想マシンの起動 vagrant up

//仮想マシン内にアクセス vagrant ssh * * * 仮想マシンからログアウトしたら * * *

//仮想マシンの完全終了 vagrant destroy [/code]

こんな流れになる。
ようはboxファイルを展開してそれを元に構築、アクセスするの別にweb上からダウンロードしなくても、普通にコピーとかでboxをローカルに持ってきて、そのパスをaddの時に指定しても同じ事が出来る。

コマンドの使い方

各種コマンドの使い方について説明。
ちょこっとややこしいと個人的には感じた。

仮想マシンのダウンロード

vagrant box add
これはvagrant仮想マシンをダウンロードして登録するコマンド。
webからダウンロードしてくる場合、パスはwebのパスをつかう。
普通にローカルにあるboxファイルを指定する事もできるし、開発とかで環境をそろえるならこっちの方が多い。 [code] vagrant box add box名 url(それかboxファイルまでのパス) [/code] box名は好きな名前を,urlにはboxファイルがおいてある場所を指定する。
ココで設定したboxの名前は至る所でつかうので、分かりやすいものを推奨。

仮想マシンの展開(初期設定・セットアップ)

boxを元に展開する。
コマンドを実行したディレクトリで展開するので、あらかじめ展開したいディレクトリをつくって移動しておく事。
[code] mkdir hoge//ディレクトリ作成 cd hoge

//展開 vagrant init box名 [/code]

展開が完了するとVagrantfileというファイルが生成されるはず。
これがこの仮想環境の設定がしるしてあるファイルでこいつをgitとかで管理すると、チームで同じ開発環境を共有できたりするので便利(まだチームで使った事無いし私自身もまだvagrantを使いこなしてない。。)
この"Vagrantfile"凄く重要で、このファイルがある所でしか仮想マシンを起動できない。

仮想マシンの起動

仮想マシンを展開した時にディレクトリに生成される"Vagrantfile"と同じディレクトリに居る時に実行すると起動する。
それ以外の場所だと何も起こらずに怒られる。

[code] vagrant up [/code] 拍子抜けするけどこれだけ。
ただし起動が完了しただけなので注意。

仮想マシンの状態確認

現在、起動している仮想マシンの状態を確認する。
[code] vagrant status [/code]

仮想マシンのシャットダウン

現在起動している仮想マシンをシャットダウンする。
仮想マシン自体を終了させるので注意。普通のpcのシャットダウンと同じで、仮想マシンをシャットダウンして使っている本体のリソースを解放する。
でも別に仮想マシン自体が消える訳ではない。

[code] vagrant halt [/code]

仮想マシンの一時停止

現在起動している仮想マシンを一時停止して本体のリソースを解放する。
普通のpcでいうスリープ状態で、再び起動すると一時停止した時点からいじれる。

[code] vagrant suspend [/code]

vagrant up で再び起動させる事が出来る。

仮想マシンの削除

現在構築されている仮想マシンを削除する。
だけど、Vargrantfileとかも削除されるのではなく現時点の仮想マシンを削除するだけなので再びvargrant upsするとVargrantfileを生成した時点まで構築出来る。
これが使われるような状況は、仮想環境でプラグインやパッケージの実験をしていて環境ぶっ壊した時にもっかい綺麗な状態に戻すとかだと思う。

[code] vagrant destroy [/code]

仮想マシンの再起動

現在起動している仮想マシンの再起動をおこなう。
普通のpcの再起動と同じ。
[code] vagrant reload [/code]

仮想マシンsshで接続

ssh仮想マシンにアクセスする。
このコマンドで仮想環境の中にはいってコマンドラインをいじれる。

[code] vagrant ssh [/code]

仮想マシンの保存

起動している仮想マシンの状態を保存してbox化する。
このコマンドによって配布用やバックアップ用のboxファイルが作れるので、あとは生成されたboxファイルをaddするなりコピーするなりで使用する。

[code] vagrant package //package.boxが生成される [/code] 生成されたpackage.boxはリネームして分かりやすいように名前を付けるのを推奨する。

参考にしたサイト

http://promamo.com/?p=3696 http://qiita.com/t_cyrill/items/ef9cb2b615bfb326f79c http://blog.mizoshiri.com/archives/1387 http://qiita.com/htk_jp/items/929875eaa5afc71c25ed

終わり

とりあえずはこんなもん。
ぶっちゃけこの手の記事は腐るほど書いてあるからググればあっという間だった。
私も使い始めたので備忘録にする。

パワポに変わる新しいツール?

パワポはもう古い?

たしかに...昔からプレゼンや資料作りなんかはパワポがド定番だけど、私はそれに変わるツールや別のものを知らなかったけど、 このpreziはちょっと良さげ。

preziとは?

2009年からサービスを開始したらしい。 おおきな一つのキャンパスに図や文章を書いていき、それらに対してズームやスクロール等の視点の移動・操作で伝えたいポイントをクローズアップする形式の資料をweb上で作る事ができるツール。 クラウドベースなツールなので、他の端末間でもブラウザとアカウントがあれば共有や移行も楽だし端末を選ばない。 AndroidiPhoneのアプリも公開されていてそれらの端末をつかってプレゼンしたりと幅広い。 クラウドベースが故に、基本的には作成した全ての資料はweb上に保管されるので機密の漏洩や可能性としてはサーバーのダウンや障害によった事故でデータが失われる危険がある。 ただし、それらは選択するプランによって使用できる機能はもちろんちがう。

無料?

無料プランもある。 だけど、仕事で使うには月2000円程度のproライセンスを購入しないと厳しいものがある。 無料プランであるpublicは無料だけど、強制的にweb上に公開情報としてつくった資料が公開される。さらに一部の機能も使えないようだが、資料づくりに関しては影響しない制限っぽい。 有料プラン三種類あって、

  • Enjoy 大体月1000円くらい。 web上にアップロードされるものの非公開設定が可能に。 使用できるストレージは4Gでサポートも付いてる。
  • Pro 大体月2000円くらい。 Enjoyで付属する機能からさらに、使用出来るストレージは無制限、画像編集が出来るように、 そして一番の目玉であるオフライン上でも作業が出来るようになる。
  • チーム 一つのアカウントに大体月2000円くらい。 Proで付属する機能からさらに"preziトレーニング"とアカウントを一カ所で管理できるようになる。 こちらは料金を一年単位でしか扱えない。

こんな感じになっている。

サービスの始め方

単純にアカウントをつくってログインするだけで作業が出来るっぽい。 有料プランであればもちろんクレジットカードで支払ってだけど。 いずれにせよ僕自身まだ触ってないツールなので、触ったら後日追記したいと思う。 一応公式の購入リンクをのせるとこちら https://prezi.com/pricing/

終わり

友人がサービス名を言っていたのを聞いて調べてみるとずいぶん興味深いツールだったので機会があれば是非触りたい。

npmの使い方

npmとは

node.jsのパッケージ管理をするやつ。
これがないと話にならない。

インストール

私はコマンド一発で出来た。
環境はmac osX [code] $ curl -0 -L http://npmjs.org/install.sh | sudo sh [/code]

これで特にエラーが出なければ完了。
ただし、パスを通す必要があったかも...

使い方

基本的には欲しいパッケージ名を調べてinstallするだけ。
削除もパッケージ名にuninstallする。
さらにプロジェクトとして管理したりしたい場合は設定ファイルが必要でそれを生成するコマンドである init、インストールされているパッケージ確認の npm listなどがある。

パッケージのインストール

普通にインストール

カレントディレクトリのnode_modules以下にインストールするので、そこのディレクトリ以下でしか扱えないので注意。
[code] $ npm install パッケージ名 [/code]

グローバルでインストール

どのプロジェクトでもどこからでも扱えるようにパッケージをインストールする。
[code] $ npm install -g パッケージ名 [/code]

プロジェクト(package.js)に依存関係を登録しながらインストールする

そのプロジェクトでのみ扱えるようにインストールしつつ、依存関係を登録するので後でもっかいやり直すとか他人に環境を構築させる時とかに便利になる。
[code] $ npm install パッケージ名 --save

//こっちはdevelop環境でのみインストールさせるやつ $ npm install パッケージ名 --save--dev [/code] 二つ目の --save--dev はdeveloper環境構築する時にインストールしたいパッケージを登録したい時につかうそうだけど
最初はプロジェクト管理するなら --save で良いと思う。

依存関係のパッケージ全てをインストール

プロジェクトのpackage.jsに依存するパッケージが登録されている場合一括で全部登録するやり方。
[code] $ npm install [/code] 単純に引数を省くだけ。

パッケージのバージョン指定でインストール

確かパッケージ名の後ろに@バージョンで出来たと思う(未検証)
[code] $ npm install パッケージ名@バージョン

$ npm install gulp@3.8.11 [/code]

パッケージのアンインストール

普通にアンインストール

これだけじゃpackage.jsから削除されないし、グローバルのも削除できないので注意する。
[code] $ npm uninstall パッケージ名 [/code]

グローバルでアンインストール

グローバルでインストールされたパッケージをアンインストール出来るが、こちらもpackage.jsから削除されない。
[code] $ npm uninstall -g パッケージ名 [/code]

プロジェクト(package.js)の依存関係も削除しながらアンインストールする

カレントディレクトリのpackage.jsの依存関係も削除できるので、必要があれば。
[code] $ npm uninstall パッケージ名 --save

//こっちにもdev版とかある $ npm uninstall パッケージ名 --save--dev [/code]

プロジェクトとかで必要な設定ファイルを生成する

必要なディレクトリを作成してその中でinitするだけ。
[code] $ mkdir test_project $ cd test_project $ npm init [/code] 作業する時は最初にやっておくの癖を付けてパッケージをインストールする時は --save 付けると環境を元に戻す時とかに便利そう

インストールされているパッケージの一覧

カレントディレクトリにインストールされているパッケージを確認とグローバルがあるっぽい。
まだ他にもオプションがありそうだけど

ローカルインストールされているパッケージの確認

[code] $ npm list [/code]

グローバルインストールされているパッケージの確認

[code] $ npm -g list [/code]

まだ試してないけど見つけたやつ

べつの記事とかでちらほら見かけたやつ
[code] //npm uninstallと同じ事が出来るらしい $ npm rm

//npm listと同じ挙動っぽい? $npm ls [/code]

終わり

node.jsも勢いがあって仕事でも使い始めてるので忘備録として。
ただ、ここら辺なら参考になる記事はたくさんあるけど、より実務に使えるような内容はまだ英語ドキュメントしかないので、英語苦手な学の無い私では色々厳しいものはあると感じてる。。。
参考になった記事達は
http://unageanu.hatenablog.com/entry/20150308/1425779692
http://hblog.glamenv-septzen.info/entry/2015/03/22/233241