OmniAICreator/Qiita-1.07M huggingface dataset:
Golangで自分自身で定義したパッケージをインポートする方法あれこれ


Go初心者の自分が躓いたのでメモ
[Go速習会](http://qiita.com/awakia/items/d646cc3fd7ee3d223909)という記事を参考に自分自身で実行していた所躓いた．

# 本題

たとえば，goの[negroni](https://github.com/codegangsta/negroni)というWAFでwebアプリケーションを作成しようとしていたとする．

ツリー構造は以下の通り．

```
.
├── models
│   └── user.go
├── public
│   └── index.html
└── server.go
```

各ファイルは以下の通り

```go:server.go

package main

import (
        "fmt"
        "github.com/codegangsta/negroni"
        "github.com/[username]/[appname]/models" // 自分のパッケージ
        "net/http"
)

func main() {
        mux := http.NewServeMux()
        mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
                user := models.NewUser("Tanaka Tarou", 10)
                fmt.Fprintln(w, user)
        })
        n := negroni.Classic()
        n.UseHandler(mux)
        n.Run(":8080")
}
```

```go:models/user.go
package models

import "strconv"

// User defines an user
type User struct {
        ID   int
        Name string
        Age  int
}

// NewUser creates user instance
func NewUser(name string, age int) *User {
        return &User{
                Name: name,
                Age:  age,
        }
}

func (u *User) String() string {
        return u.Name + "(" + strconv.Itoa(u.Age) + ")"
}

```

`server.go`というファイルがメインになっており，
モデルとして定義した`models/user.go`の NewUser関数をmain関数で利用する時，

```go:server.go
import (
        "fmt"
        "github.com/codegangsta/negroni"
        "github.com/[username]/[appname]/models" // 自分のパッケージ
        "net/http"
)
```
このようにして，自分自身のモデルを定義しなければならない．

特に意識せずに，このまま実行すると…

```
$ go run server.go 
server.go:6:2: cannot find package "github.com/[username]/[appname]/models" in any of:
	/usr/local/opt/go/libexec/src/github.com/[username]/[appname]/models (from $GOROOT)
	/Users/[username]/src/github.com/[username]/[appname]/models (from $GOPATH)
```
このようにしてエラーが起きる．

##その1(推奨)
@1l0さんより推奨していただいた方法です．

`$GOPATH/src/github.com/[username]/[appname]`
この中で最初から作業をしてしまう．

つまり，今回の場合では，
`/Users/[username]/src/github.com/[username]/[appname]`
という場所を作り，はじめからそのdir配下で作業をすれば良い事になる．

```
github.com
└── [username]
    └── [appname]
        ├── models
        │   └── user.go
        ├── public
        │   └── index.html
        └── server.go
```

これで最初から`$ go get` などせずに済む．

##その2

githubにpushする．

```
$ git init
$ git add .
$ git commit -m "update model"
$ git remote add origin [githubのリポジトリ]
$ git push origin master
```
次に，githubへのpushが完了した事を確認してから，

```
$ go get github.com/[username]/[appname]/models
```

を実行し，再び`$ go run server.go `をすると上手くいく．

##その3(非推奨)
相対パスでpackageを指定する方法．
[Go言語でローカルパッケージをインポート](http://system.hateblo.jp/entry/2013/06/22/020918)という方法があるらしい．

しかし，一般的にはオススメされている方法では無いそうです．

以下は，@1l0さんのコメントより引用です．

>相対パスは以下の理由でお勧めしません。

> - 毎度pkg化することになるのでコンパイルが遅い
> - 他人が普通にgo getできない
マイコンとモバイルバッテリーについて

# はじめに
- マイコンとモバイルバッテリーは相性が良くない場合が多い
- ただし、大丈夫なモバイルバッテリ(古い？タイプ)もある
- (参考)NoePixelはIOと電源電圧が合わないと光らないリビジョンがある。（M5StackのGroveでは要注意)
# 気づくまで
- 勝手に電源が切れる。
- ACアダプタ型の充電器やPCのUSB給電では正常に動いていたが、モバイルバッテリーの使用中に動作が不正になる。
- Neo Pixel のみ点灯しない(マイコンは動作している）
 
# 考えられる理由
## AutoOFF
モバイルバッテリーは充電後自動でPowerOFFする機能がついているので一定量の電流が流れていないと、勝手にPowerOffになる。最初にどんと流すとあとは少なくてもOFFにならないものもあった。

- Anker・Astro E1 5200mAh　は　50mA以上流す必要があった。
- Cheero・Power Plus 3 13400mAh　は　90mA以上流す必要があった。
- iBuffalo BSMPB04 は90mA流してもOFFになるので、調べていない。。
参考　RedBearLab BLE Nanoは10mAぐらいしか使わない。

## NEOPixelRingが上手く点灯されない理由
これは予想です。
モバイルバッテリーの中を開けてみると、電圧調整のDC/DCコンバータらしきものが存在した。
なので、スイッチングノイズがある程度あることが考えられる。
充電量確認の為電圧を変動させている可能性もある。。。mbedは止まらないので、電流の多いNeo Pixel Ringだけ影響。。。

#補足
電池を入れて使うタイプものもダメでした。。。（なかにDC/DCコンバータらしきもの存在）

# 良さそうなもの
自己責任でお願いします。

https://www.switch-science.com/products/3167

https://www.switch-science.com/products/2618

https://www.switch-science.com/products/6759
El Capitan で Provisioning Profile を追加するには Xcode を使うのがよさそう


今まで iPhone 構成ユーティリティで Provisioning Profile を管理してたんですが El Capitan にアップデートしたら　iPhone 構成ユーティリティがなくなってました。

いろいろ調べたら Apple Configurator2 が iPhone 構成ユーティリティ みたい。
参考：https://support.apple.com/en-us/HT201460

※2015.10.19追記：このページ最後の追記の方法がよさそうです。


App Store からインストールしました。

![スクリーンショット 2015-10-18 21.48.19.png](https://qiita-image-store.s3.amazonaws.com/0/27210/0071a7ba-520e-50f2-d363-fde2bc2b6b7d.png "スクリーンショット 2015-10-18 21.48.19.png")

# Provisioning Profile を追加してみる

Apple Configurator2 を起動して、iPhone を接続した状態で、追加ボタンから Provisioning Profile を追加してみました。

![スクリーンショット 2015-10-18 21.56.10.png](https://qiita-image-store.s3.amazonaws.com/0/27210/27c6ab46-8ee8-8d19-5c3f-f6984cba2613.png "スクリーンショット 2015-10-18 21.56.10.png")

その後 Xcode を起動して確認してみたら確かに Provisioning Profile が追加されていました。

なんとか追加はできましたがこれだと端末が繋がってないと Provisioning Profile が追加・削除できないような・・これまで iPhone 構成ユーティリティで管理してた Provisioning Profile はどこいったんだろう・・。誰か詳しい方教えて下さい。

# 追加(2015.10.19)

さらに調べてみたら Xcode のメニュー [Xcode] → [Preference] のアカウントの詳細部分から Provisioning Profile がダウンロードできるようです。

![スクリーンショット 2015-10-19 7.38.56.png](https://qiita-image-store.s3.amazonaws.com/0/27210/6f373f1b-27f2-1a30-dba3-0595980b386b.png "スクリーンショット 2015-10-19 7.38.56.png")

こっちで ダウンロード、管理するのがよさそうです。
Vimperator から Tree Style Tab を操作

# はじめに

ブラウジング環境としての Firefox + Vimperator + Tree Style Tab (ツリー型タブ) が最強なんだけど、
Vimperator からツリー型タブを操作できるようにしたらもっと快適だった。


# vimperator から Tree Style Tab の API を呼ぶ

Tree Style Tab にはツリーを操作したり要素を取得するための JavaScript の API があり、これを Vimperator のマッピング等で呼び出すようにすればいろいろなことができる。
API についての説明は [Tree Style Tab の公式ページ](http://piro.sakura.ne.jp/xul/_treestyletab.html) にある。

Vimperator から JavaScript の関数等を呼び出すには `:javascript` (または `:js`) コマンドを使えば良い。

例えば、現在のタブの複製を子タブに作成するようなマッピングは下記のように設定する。

```vim:.vimperatorrc
nnoremap <C-S-t> :<C-u>js TreeStyleTabService.readyToOpenChildTab(gBrowser.selectedTab, false)<CR>:tabduplicate<CR>
```

`TreeStyleTabService.readyToOpenChildTab` というのが Tree Style Tab の API で、タブを作成するコマンド前にこいつを呼ぶと作成されたタブが現在のタブの子になる。


# もっと複雑な場合

もっと複雑なことをしようとするとワンライナーで JavaScript を書くのが辛くなってくる。
そういう時は実現したいことをあらかじめ JavaScript の関数にしておいて、マッピングからその関数を呼ぶようにすれば良い。
複数行の JavaScript を Vimperator から呼ぶには `:js <<EOF` と `EOF` の間の行に JavaScript を書けば良い。(EOF の部分は好きな文字列でよい)

例えば、すべてのルートのタブを折りたたむような機能は下記のように設定する。

```vim:.vimperatorrc
nnoremap zM :<C-u>js treeFoldCollapseAll()<CR>
js <<EOF
function treeFoldCollapse(tab) {
  gBrowser.treeStyleTab.collapseExpandSubtree(tab, true);
}

function treeFoldCollapseAll() {
  TreeStyleTabService.rootTabs.forEach(treeFoldCollapse);
}
EOF
```

※ 自分の vimperatorrc
https://github.com/cohama/dotfiles/blob/master/.vimperatorrc
SwiftBondをver4.Xへ移行したときのメモ

以前["SwiftBondを使ってみての所感"](http://qiita.com/ushisantoasobu/items/54a3ff86722693da6498)という記事を書いたのですが、バージョンを`4.0.0`に、つまり`Swift 2`に対応したものにアップデートして実装しなおしたのでそのときのメモを書いておきます。

公式のドキュメントとしては以下に書かれています。

https://github.com/SwiftBond/Bond#migration

他のライブラリの`Swift 2`移行にともなうdiffとか全然みていないのでですが（`Alamofire`は自分が使う範囲内であればそれほど変更入れずに使えました）、

> It's core has been rewritten from scratch and ...

とあるように（`It's`は厳密には`Its`かな??）、`SwiftBond`はかなり大幅なAPIの変更があります

## `Dynamic`が`Observable`に

> Dynamic becomes Observable

とあるように

```swift
var someCount  = Dynamic<Int>(0)
```

が

```swift
var someCount  = Observable <Int>(0)
```

になります

## `DynamicArray`が`ObservableArray`に

```swift
var someList = DynamicArray<Some>([])
```

が

```swift
var someList = ObservableArray <Some>([])
```

になります。またメソッドも結構変わったので、利用するときは、ドキュメントがそれほどまだ整備されていないので、`ObservableArray.swift`のファイルの中身みておくと良いかもです。

今回実際に修正したものは以下になります

```swift
self.list.removeAll(false)

self.list.append(list)
```

を

```swift
self.list.removeAll() // 引数がなくなった

self.list.extend(list) // 配列を足すときにappendがextendになった
```

に修正

## プリフィックスが`dyn`から`bnd_`に

[以前の記事](http://qiita.com/ushisantoasobu/items/54a3ff86722693da6498#uikit%E3%81%BE%E3%82%8F%E3%82%8A%E3%81%AE%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3)にも書いたのですが、`SwiftBond`ではUIKitのプロパティにバインディングするときには`dynText`のように`dyn`というプリフィックスがついたものを利用していたのですが、

```swift
group.name ->> cell.nameLabel.dynText
```

が

```swift
group.name.bindTo(cell.nameLabel.bnd_text)
```

になります

## `->>`よりも`bindTo()`を推奨に

上の例がそのまま使えるのですが、`->>`らのオペレータよりも`bindTo()`メソッドを推奨する、とのことです。


## `UITableView`まわり

いろいろ複雑だったテーブルまわりの書き方が整理されたかなという印象。
これまでどう書いていたかは[以前の記事](http://qiita.com/ushisantoasobu/items/54a3ff86722693da6498#uitableview%E3%81%BE%E3%82%8F%E3%82%8A%E3%81%8C%E6%84%8F%E5%A4%96%E3%81%AB%E7%85%A9%E9%9B%91)にある通りなのですが、以下のような感じで書くことができるようになります

```swift
var list = ObservableArray<Some>([])

//...

self.list.lift().bindTo(self.someTableView) { (indexPath, array, tableView) -> UITableViewCell in
    let cell = SomeTableViewCell()
    let some = array[0][indexPath.row]

    // バインディング処理を諸々書く
    some.body.bindTo(cell.bodyLabel!.bnd_text)

    return cell
}
```

ドキュメントとしては[こちら](https://github.com/SwiftBond/Bond#uitableview-and-uicollectionview)にあります

## 他

[以前に記事](http://qiita.com/ushisantoasobu/items/54a3ff86722693da6498#queue%E3%81%BE%E3%82%8F%E3%82%8A%E3%81%AE%E8%A9%B1)でキューまわりの話を書いたのですが、作者さんから返事いただいた通り、

```
some.imageUrl
  .deliverOn(Queue.Background).map { (urlString) -> UIImage in
    // UIImageの取得処理はメインスレッド以外で行う
  }.deliverOn(Queue.Main).bindTo(cell.avatarImageView.bnd_image)
```

こんな感じで書いて正しく動きました。感謝です。
内部の実装とかはまだ全然見れてないので、そちらもちゃんと見ておこうと思います

## 追記(2015/10/29) - 双方向バインディングについて

双方向バインディングは以下のように書く（これまで`<->>`と書いてたもの）

```swift
self.someData.name.bidirectionalBindTo(self.hogeTextField.bnd_text)
```

そういえばどう書くんだろうと思って追記・・・
Homebrewで古いバージョンをインストールする場合


```shell
# 例：gradle 2.4をインストールする場合
brew tap homebrew/versions
brew search gradle
brew uninstall --force gradle # インストール済みのものを削除
brew install gradle24
```

```shell
# 以下のように表示されていれば、OK
gradle -v
------------------------------------------------------------
Gradle 2.4
------------------------------------------------------------

Build time: 2015-05-05 08:09:24 UTC
Build number: none
Revision: 5c9c3bc20ca1c281ac7972643f1e2d190f2c943c

Groovy: 2.3.10
Ant: Apache Ant(TM) version 1.9.4 compiled on April 29 2014
JVM: 1.7.0_51 (Oracle Corporation 24.51-b03)
OS: Mac OS X 10.10.4 x86_64
---------------------
```
node環境でsinon.jsのfakeServerを使う

# やりたいこと
node.js環境でsinonのfakeServerを使いたい。

# なんで？
sinonのfakeServerを使うと、特定のurlへのアクセスに対して任意のステータスコード、ヘッダー、レスポンスボディを返すstubサーバを作る事ができ、APIを呼んだらこうなる、というテストを書く事ができる。

[sinon.js#server](http://sinonjs.org/docs/#server)

しかし、このfakeServerはnode環境だと使えない。sinon.jsの初期化処理を眺めるとわかるが、global環境にXMLHttpRequestが定義されているか否か、そのXMLHttpRequestオブジェクトに`withCredentials`属性があるか否か、といったことをチェックしており、実行環境にXMLHttpRequestがあることが前提となっている。

# 対処法
てことは、globalにXMLHttpRequestのインタフェースを実装してあげれば良さそうである。自分で一通りインタフェースを実装すれば良いのかもしれないが、その前にGoogle先生に聞いてみると、[node-xmlhttprequest](https://github.com/ykzts/node-xmlhttprequest)なる、XMLHttpRequestをnode.js上で実装したモジュールが出てくる。一通りXMLHttpRequestのインタフェースが実装されているので、テスト環境においてこのモジュールを`global.XMLHttpRequest`に設定してあげると、sinon.jsの初期化時にXMLHttpRequestが検出され、`fakeServer`がちゃんと動作するようになる。

# コード
以下サンプルコード。XMLHttpRequestをglobalに設定するファイル(browser.js)と`sinon`の読み込みは別ファイルにして、必ず`browser.js`を先に読み込ませる。一つのファイル内でどうにかできないもんかと思いつつ、ES6のimportやglobalが最終的にどうコンパイルされるかまで見てないのでよくわからず。。。

個人的な事情で、`mocha`と`chai`のテストコードです。

```
mocha --compilers js:babel/register test.js
```

```js:browser.js
// ブラウザ環境っぽいものを作る
import jsdom from 'jsdom';
import jQuery from 'jquery';
import { XMLHttpRequest } from 'w3c-xmlhttprequest';

global.XMLHttpRequest = XMLHttpRequest;
global.document = jsdom.jsdom('<!doctype html><html><body></body></html>');
global.window = document.parentWindow;
global.$ = jQuery(window);
```

```js:test.js
// chai使ってます
import './browser';
import chai, { expect } from 'chai';
import sinon from 'sinon';
import sinonChai from 'sinon-chai';
chai.use(sinonChai);

describe('FakeServer in node.js', () => {
  let server;
  let spy;
  beforeEach(() => {
    server = sinon.fakeServer.create();
    spy = sinon.spy();
  });
  afterEach(() => {
    server.restore();
  });
  it('fake responseが返ること', () => {
    server.respondWith('GET', '/sample.json', [
      200,
      { 'Content-Type': 'application/json' },
      JSON.stringify({message: 'Hello World'})
    ]);
    $.getJSON('/sample.json')
     .then((data) => {
       spy(data);
     });
    server.respond();
    expect(spy).to.have.been.calledWith({message: 'Hello World'})
  });
});
```

# まとめ
node環境でもfakeServer使えそうです。

同じようなXMLHttpRequest in node.js実装として、[xhr2](https://github.com/pwnall/node-xhr2)というのもあったのだけど、こっちではうまく動きませんでした。`withCredentials`が実装されてないのが原因っぽいですが、詳細は追ってません。
アイディアの出し方

アイディアの出し方

Webサービス、アプリ企画に関わらず、どんなものに対しても。


##前提条件
以下のような習慣だとでやすいと感じる。
リラックスした状態、十分な睡眠と運動（ぼーっとした状態の方がでやすい）を定期的に作る。忙しくさせすぎない。夜寝る前はでやすい。
思いついたらすぐにメモを取ること。忘れるから。その方が深く腑に落ちるから。
違和感を大切に。テーマは以下。
「賛成する人がほとんどいない、大切な真実はなんだろう？ by Peter Thiel」
人の心を動かすのは何かを徹底的に考え抜く。魔法のようなツールはなくて、徹底的に考えぬく。
マーケティングリサーチに頼ったりは絶対にしない。それだったら誰でもできる、アンケートや調査は作ったあとでいい。

##思考のパターンとして有効だと思うもの

* 問題に対して他の人とは違う捉え方をする
* 他の人がこわくてできないようなリスクを取る
* 大勢に立ち向かい、自分の信念も守る
* 他の人が屈してしまった障害や課題を乗り越える方法を探す（規制の変革をとらえる。etc（遠隔医療、派遣法改正、旅館業法））
* 長らく寡占化されている市場、もしくはフラグメントな市場を調査
* 行動を変えるテクノロジー（スマホの登場、将来はVRデバイスや小型投影デバイスなど）

##方法
大量の情報を頭に詰め込む（情報ソースは人づて、本、映画、流行っているもの（なぜ流行しているか？まで考えて）、Webなど、ありとあらゆる人、事、物すべて）
人の本質的な欲求を知るために、歴史的に続いてきた事象を調べてみること
現状の問題や課題など調査、お客さんが困っていることなどヒアリングすることからはじめる。

その後、
→アイディアを寝かす、睡眠後	→ひらめく
→運動する、歩く、走るなど	→ひらめく
→人に話す					→ひらめく
→Action					→Generate


##ひらめいた後
論理検証。ロジックを詰める。
後付でよいので、なぜそれがおもしろいのか？を論理付けする。
似たようなサービスがすでにあっても、表現、手法、媒体を変えてアウトプットする。

##なぜそれが必要なのか
* なぜそれを作ったのか、他の人はなぜそれが必要なのか
* この問いになんとなくおもしろいでは、ダメで、明確に答えられるように
* コンセプト（一言で）、デザイン（統一感、導線）、哲学（何を実現するか、何を根本的に解決したいか）、名前（シンプルでわかりやすい、shareされやすい）


##最後に実行
アイディアに価値はない、実行がすべて。

* おもしろい一発屋サービスを出すには、アイディアの数をだしまくる。批判はなし
* 長く愛されるものを生み出すなら、楽しさだけを追い求めると一発屋になっちゃう。ゆくゆく社会インフラになるサービスは奇をてらった発想じゃ生まれない。
なので人間の普遍的な欲求とはなにかを考えるために、歴史的に続いてきた事象を調べてみる。
* 想像のつかないものを考えるのは楽しいが、誰かにとって必要とされるものを作るのも大切なこと。そこから何か生まれるものもある。

* 不確実性の高いアイディアは賛同が得られにくい（合意コストが高い）ので、
多数決とかで決めない。そういうのは勝手に個人でやる。
* 多数決でやるなら、社会通念のバイアスとその破壊方法の合意にHowの部分で多数の力を借りる。

##参考
* [ピーター・ティールが、日本の学生に語った10のこと - wired](http://wired.jp/2015/03/06/peter-thiel-startup/)

* [賛成する人がいない、大切な真実とはなにか。ピーター・ティールと糸井重里の対談 - ほぼ日刊イトイ新聞](http://www.1101.com/peter_thiel/2015-04-27.html)

* [ひがやすを×橋口恭子が”LINEを超えるアプリ”を誌上ブレスト「長く愛されるサービスを作るプロセスとは？」](http://engineer.typemag.jp/article/yasuoxhashi2)

* [創造性は才能というよりむしろ習慣。今から身につけることもできます - lifehacker](http://www.lifehacker.jp/2014/04/140425creative_thinking_habit.html)
ES6/7(Babel)文法メモ


# 文字列テンプレート

## 変数展開
```
const str = 'hello';
`value: ${str}`

# => 'value: hello'
```

## 改行
```
const message = `hello!
world!`;
```

# モジュール

## モジュールをエクスポート
```
export const Hoge = {
  doSomething() {
    ...
  }
};
```

## デフォルトモジュールをエクスポート
```
const Hoge = {
  doSomething() {
    ...
  }
};

export default Hoge;
```


## モジュールをインポート
```
import {A, B} from './Hoge';
```

## モジュールを名前を変えてインポート
```
import {A as MyA} from './Hoge';
```

## デフォルトモジュールをインポート

```
import X from './Hoge';
```

## デフォルトモジュールとそれ以外のモジュールを同時にインポート
```
import X, {A, B} from './Hoge';
```

# 変数

## レキシカルスコープ変数
constは再代入不可。letは再代入可。

```
const a = 1;

let b = 2;
b += 1;
```

## Destructuring

```
const props = {
  a: 1, b: 2, c: 3
};
const {a, b, c} = props;

[a, b, c]

# => [1, 2, 3]
```

# オブジェクトリテラル

## 変数経由のプロパティ名にアクセス
```
const key = 'name';
{[key]: 'hoge'}

# => { name: 'hoge'}
```

## プロパティ名の省略

```
const code = 101;
const message = 'hello';

{code, message}

#=> {code: 101, message: 'hello'}
```

# 関数

## デフォルト引数

```
function hoge(a, b, c = 0) {
  ...
}

hoge(1, 2);
hoge(1, 2, 3);

function fuga({a, b, c = 0}) {
  ...
}

fuga({a:1, b:2});
fuga({a:1, b:2, c:3});

```

## アロー

```
_.map([1, 2, 3], (x) => { return x * x; });
_.map([1, 2, 3], x => x * x);

# => [1, 4, 9]
```

# クラスフィールド/クラスメソッド

## クラスフィールド
```
class Hoge {
  static name = 'hoge';
}

Hoge.name;
# => 'hoge'

```

## クラスメソッド
```
class Hoge {
  static x2(value) {
    return value * 2;
  }
}

Hoge.x2(5);

# => 10
```

## クラス内からクラスメソッドへのアクセス

```
class Hoge {
  static x2(value) {
    return value * 2;
  }
  
  static x4(value) {
    return this.constructor.x2(value) * 2;
  }
}

Hoge.x4(5);

# => 20

```

# 継承

## クラス継承

```
class Concrete extends Abstract {
  ...
}
```

## 親クラスのメソッド呼び出し

```
constructor(props) {
  super(props);
  
  ...
}

```
シンプルなswitch checkboxを自作してみる

# 背景

スイッチ可能チェックボックスを表現するにはいろいろな便利なライブラリーがありますが
それだけのためにライブラリー入れるのも嫌だし、文字を表示したりしたいこともあり、
angular directive作成の学習の意味も含めて自作してみました。

ソースは[ここにおいています。](https://github.com/aungjcs/switchCheckbox)

# 出来上がったイメージ

**オン**
![on](http://aungjcs.github.io/switchCheckbox/on.png)
**オフ**
![on](http://aungjcs.github.io/switchCheckbox/off.png)

実際の動きは動作は[デモページ](http://aungjcs.github.io/switchCheckbox/)でどうぞ。

# 仕組み

スイッチのスライドはCSSで行っているのでスクリプトが殆どありません。
`css`は兄弟セレクターと`:checked`擬似セレクターでチェックされた状態のスタイルを切り替えています。

```css
.switchCheckbox input[type=checkbox]:checked + .switchBox .switchContainer
{
    height: 30px;
    margin-right: -30px;
    margin-left: 0;

    color: white;
    background-color: #007aff;
}
```

テンプレートも小さいのはそのままスクリプトで埋め組んでしまいます。

```js
require: 'ngModel',
restrict: 'E',
template: '' +
    '<label class="switchCheckbox">' +
    '    <input type="checkbox">' +
    '    <div class="switchBox">' +
    '        <div class="switchContainer">' +
    '            <div class="on">ON</div>' +
    '            <div class="switch"></div>' +
    '            <div class="off">OFF</div>' +
    '        </div>' +
    '    </div>' +
    '</label>',
```

**disabled**の対応は属性をチェックしてイベントをキャンセルするようになっています。

```js
cbx.on( 'click', function( evt ) {

    if ( attr.disabled ) {

        evt.preventDefault();
    }
});
```

最後に[ngModelController](https://docs.angularjs.org/api/ng/type/ngModel.NgModelController)でモデルとビューの値を交互に設定してあげます。

# 注意点

angularのjqliteは要素検索の機能を大分削られているので要注意です。
例えば`find`はタグ名でしか検索できないなどがあります。

いろいろ改良すべき点もありますが先ずは目標を達成できたのでここまでにします。
AngularJS勉強メモ その1(環境構築)

これはAngularJSを勉強した内容をまとめたものです。

# 今回したこと
AngularJSをダウンロードして簡単に動きをみる

# 環境
* Ubuntu 14.04 (VirtualBox)
* AngularJS 1.4.7

# AngularJSをダウンロードして簡単に動きをみる
１. [https://angularjs.org/](https://angularjs.org/)からangular.min.jsをダウンロード
２.  以下のようなhtmlを用意

```html
<!DOCTYPE html>
<html ng-app>
  <head>
    <title>Hello World</title>
    <script src="angular.min.js"></script>
  </head>

  <body>
    {{"Hello" + "World"}}<br/>
    1+1 = {{ 1 + 1 }}
  </body>
</html>
```

３. 同じディレクトリにダウンロードしたangular.min.jsを配置
４. ブラウザで作成したhtmlを見てみる
![hello_world.jpg](https://qiita-image-store.s3.amazonaws.com/0/97052/100d6c29-28d0-0e02-6295-8660073eb4c1.jpeg)

おお！できた！！{{}}で囲った場所がちゃんと処理されて表示されている!
htmlタグに書いた**ng-app**がポイントらしい。
このあたりは今後の勉強でわかるはず。。

ということで今回はここまで。
El capitanのSafariでSafariStandを設定するー(mac OS sierraについての追記あり)


Mac OSXを10.11 El capitanにアップデートしてから、改めてSIMBLをインストールし直してSafariStandをセットしてみた。

---
記事の投稿:(2015/10/18) 
追記、加筆あり:(2015/10/19) 
追記、加筆あり:PhotoStandも入れてみた (2015/11/02) 
追記、加筆あり:mac OS sierra での挙動 (2016/09/27)

---

###流れ
1. EasySIMBL から SIMBL への移行
2. SIPを解除する
3. SIMBLのインストール
4. SIPを有効にする
5. SafariStandのインストール  :2016/09/27現在 mac OS sierra(OS X 10.12)では機能していません。
6. 追加でPhotoStandも入れてみた　:2016/09/27現在 mac OS sierra(OS X 10.12)では機能していません。

この作業で、今の所El capitanでは問題なく使えていましたが、Sierraに於いてはSafariStand、PhotoStand共に対応待ちの状況です。なお、DockカスタマイズのcDock2とアプリの前面表示、ウインドウ透過用のAflatは機能しています。
  
経緯、詳細は省きますが、参考サイトのリンクを貼っておきますので、サイトをよく読んで行ってください。  
EasySIMBLは削除した方が良いと判断したので、まずはEasySIMBLを削除、その後SIMBLをインストールするという流れになりました。

###EasySIMBL から SIMBL への移行

[How to transition from EasySIMBL to SIMBL · GitHub](https://gist.github.com/hetima/51b71091aedf622f61f7)
日本語の説明有り(EasySIMBLの削除のみを参考にした)

**追記(2015/10/19) SIMBL -0.9.9 のインストールは、上記サイトの方法ではなく、下記サイトを参考に行う。**

* 理由、SIMBL -0.9.9pkgのインストールをコマンドラインから、場所などを指定して行う方が正確かなと思い、下記サイトの方法にしたのと、el capitanへの導入に関しては下記サイトの方を信頼したため。

###SIMBLのインストール及びSafariStandのインストール

流れの2~5は、
[Install SafariStand on El Capitan and Get Those Favicons Back](http://dispatchist.com/how-to-install-safaristand-on-el-capitan/)
で説明されています。

**よく見るとハイライトでの注意書きがあり、その部分はクラッシュなどの原因になるようなのでよく読むことをお勧めします。**

英語のサイトですがGoogleなどの翻訳でも十分にわかります。

＊尚、セキュリティーに関しての設定を変更したりする作業なので、あくまでも自己責任でお願いします。

---
### PhotoStand

Photos.app(写真.app)のオリジナルファイルにアクセスしやすくするPluginの **PhotoStand** も追加で入れました。

Download
[PhotoStand:hetima](http://hetima.com/photostand/)

ダウンロードした` PhotoStand.bundle`を

	/Library/Application Support/SIMBL/Plugins
	
へ、移動もしくはコピ＆ペーストすることで導入できます。

* サイトでは、EasySIMBLを使うような書き方ですが、それは無視してます。

* 使い方は、上記のダウンロードサイトに画像付きで出ていますので、そちらを参考にしてください。




---

<div style="text-align:center">
SafariStandを作ってくれた <a href="http://hetima.com/safaristand/" target="_blank">hetima</a> に感謝します。<br />
SIMBLを作ってくれた <a href="http://www.culater.net/software/SIMBL/SIMBL.php" target="_blank">Mike Solomon </a> に感謝します。<br />
el capitannでの設定を解説してくれた <a href="http://editeddaily.com/how-to-install-safaristand-on-el-capitan/" target="_blank">EDITED DAILY</a>に感謝します。  
</div>

---
WordPressフィルターフックとは

#はじめに
WordPressのadd_filter関数を使っている参考書を読んだが,いまいちどういったことをする関数なのかをつかめなかったのでメモを取ろうと考えた.

#フィルターフック
フィルターフックは,単純にフィルターとフックに分けられる.

## 1.フィルターとは
WordPressは様々な入出力を行う際にフィルターという処理を行っている.
例えば,文字を出力する際に全てにpタグが自動的に適応されるといったことがあげられる.

## 2.フックとは
フィルターにフックするということで,フィルターが実行される際に引っ掛かって一緒に実行されると考えられる.

#実際の動作
add_filter( 
'フックされるWordPressのAPI', 
'フックした際に実行される関数', 
(数値)同じ関数をフックする際にどっちを優先するかの度合い(数値が小ほど優先される), 
(数値)フックした際に使う引数の数
);

例えば
hogehoge.php

    <title>
      <?php
        function the_my_name( $title, $id ){
          return 'kokoax';
        }
        add_filter( 'the_title', 'the_my_name', 10, 2 );
        the_title();
        remove_filter( 'the_title', 'the_my_name' );
      ?>
    </title>

といった感じで実行するとtitleがkokoaxになってくれる.

* 引数に関してはフックする関数によって戻り値が異なるので適宜調べて実装する.
the_title()の場合は,title名とその記事のIDを戻すので引数の数は2になる.
<br>

* remove_filterはadd_filterしたフィルターを解除する関数.
<br>
Ubuntu 14.04 LTSにRedmineをインストール

#希望
- Redmineが使いたい
- メモリーの資源を大切にするためにNginxを使ってみる(単に使いたいだけでもある)
- RMagickもせっかくだからインストールしたい


##Azureでお決まりのこと
`sudo apt-get update`
`sudo apt-get upgrade`
`sudo add-apt-repository -y ppa:brightbox/ruby-ng`
`sudo apt-get update`
`sudo apt-get -y install ruby2.1`

*rbenv使用する方は以下を忘れずに・・・*
`sudo apt-get install build-essential`
`apt-get install -y libssl-dev libreadline-dev zlib1g-dev`

#インストールスタート
- 必要なものをインストールしていく
- Railsをインストールする

##RMagickに必要なもの
まずは、RMagickに必要なものをインストール
`sudo apt-get install imagemagick libmagickwand-dev ruby-rmagick`

##次にmySQLの場合
`sudo apt-get install libmysqlclient-dev`

##Railsのnokogiriで詰んだ時
`sudo apt-get install build-essential ruby2.1-dev zlib1g-dev libxslt1-dev`

#結論
ガントチャートでpng出力とかに使用する場合は必要かもしれませんね。
それ以外の使用用途ってあるんだろうか。
**そもそも意外とRedmineのインストール方法ありふれているけれども自分がよく迷う落とし穴を掲載**

##Redmineインストール
あとは、以下の近辺を参考にしながら実施すれば問題なし。
[Redmineインストールガイド](http://redmine.jp/guide/RedmineInstall/)

##ガイドにもあるけれど…
`sudo bundle install --without development test postgresql sqlite`
いらないGemは消しちゃいましょう。特にAzureなどのサーバの資源のためにも。

##もしも
ここの手法でインストールできなければ助言いただければ幸いです
チケット駆動開発にメールの文化を持ち込まない

# サマリ
　ガチガチのチケット駆動開発に限らずですが、プロジェクト全体でRedmineみたいなチケットベースのタスク管理ツールを使って開発を進める場合、仕様連絡だってQAだって、コミュニケーション自体がチケットベースになって、メールの使用機会が極端に少なくなることが多い。
　というか、注意が一元化できるので個人的にもそのほうが嬉しいです。

　掲題の意は、せっかくメールから脱却したこのコミュニケーションのプラットフォームに、わざわざメールの作法を持ち込みたくないなぁという話。

# NG集

## ・お世話にならない

> お世話になっております。□□社の○○です。ご指摘の件ですが～

⇒せっかく話題の絞られたチケットなので、いきなり本題で書きだすべし

## ・「○○様」と書かない

> ＞○○様
> 先ほど会話させていただきました通り、
> ××様への確認をお願いいたします。

⇒普段「○○さん」と呼ぶ関係ならば「○○さん」と書く

　これ自体は細かいことだけれど、「ここでは口語的な表現でいきましょう」というわかりやすい意思表示になります。


## ・謝罪を書かない

> ご指摘のとおりチェックミスがございました。
> 多大なご迷惑をおかけして申し訳ございません。
> 以後、チェック体制を見直し、このようなミスが再発しないよう
> 重々注意いたします。

⇒ノイズにしかならないので、「すいません＞＜」程度にしたい

　あらかじめ「謝罪は書かないこと」とルール決めしておくのが良いかもしれません。

# それでも不安な人へ

　でも、他社の人とやりとりするときには気を回しておいたほうが・・・と不安になる人もいるかもしれませんが、気を回そうと思ったら、こんな意味のない作法よりも有益に気をきかせられるポイントがいくらでもあると思うのです。
　急ぎでないとのことでしたが早めにやっておきますよとか、文章だとわかりにくいので図にしておきますよとか、一応キャプチャ添付しておきますよとか。

　いずれにしても、最初に全体でルール決めしておけば失礼だと思われることもないし、理想はこの程度のことで揺らがない信頼関係のあるチームを作っていくことですよね！
Asterisk 13をDebian 8(Jessie)にセットアップする。

### 前提条件
- `vagrant`上のDebian8(Jessie)環境にAsterisk 13(13.6.0)をインストールする手順
- Wikiに載ってる手順通りでインストールした事がなかったので、チャレンジ。
- v13はLong Term Support (LTS)かつ、WebRTCサポートが入ってるということで、採用。

### 手順
1 . Asterisk 13のダウンロードと展開

```
sudo apt-get update

sudo apt-get install build-essential

mkdir /opt/asterisk
cd /opt/asterisk

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.6.0.tar.gz

tar zxvf ./asterisk-13.6.0.tar.gz
cd ./asterisk-13.6.0

cd contrib/scripts
sudo ./install_prereq install
sudo ./install_prereq install-unpackaged
```

- 注1: インストール中に`This is the numeric code for the region your phone system will be operating in ...`的なプロンプトが表示されたら`81`(日本の国際電話番号)を入力し、Enter(OK)する。

2 . pjproject(WebRTC用パッケージのインストール)

```
mkdir /opt/pjproject
cd /opt/pjproject
svn co http://svn.pjsip.org/repos/pjproject/trunk/ pjproject-trunk
cd pjproject-trunk

./configure --prefix=/usr --enable-shared CFLAGS='-O2 -DNDEBUG'
make dep
make
sudo make install

sudo /sbin/ldconfig -p | grep pj
でインストール結果の確認。(空じゃなければOK)

echo "export PKG_CONFIG_PATH=/usr/lib/pkgconfig" >> ~/.bashrc
echo "export LC_ALL=en_US.UTF-8" >> ~/.bashrc
source ~/.bashrc
```

3 . SRTPのインストール

```
mkdir /opt/srtp
cd /opt/srtp
wget  https://downloads.sourceforge.net/project/srtp/srtp/1.4.4/srtp-1.4.4.tgz
tar zxvf srtp-1.4.4.tgz 
cd srtp
./configure --prefix=/usr
make
make runtest
make install
```

4 . `pjproject` & SRTPインストール結果の確認

```
cd /opt/asterisk/asterisk-13.6.0
./configure
make menuselect
```

*こんなのになってればOK*
![after pjproject install.png](https://qiita-image-store.s3.amazonaws.com/0/26275/f7cbbe7f-9139-6d45-8955-4ac1ae7e41f7.png)

```
dpkg -l | grep uuid
でインストール結果の確認。(空じゃなければOK)
```

5 . Asterisk 13のインストール

```
make
sudo make install
sudo make config
sudo make install-logrotate
```

6 . Asterisk 13の起動

```
sudo /etc/init.d/asterisk start

sudo /etc/init.d/asterisk status
```

*こんなのになってればOK*
![asterisk status.png](https://qiita-image-store.s3.amazonaws.com/0/26275/cca33931-a635-783b-b11b-8231f77b837e.png)

7 . ここまでで終了です！お疲れ様でした！

### インストール後は・・
#### 以下を参考にWebRTCを遊んでみてはいかがでしょうか！
- [SIPML5(WebRTCのOSS実装)を利用する場合のチュートリアル]
(https://wiki.asterisk.org/wiki/display/AST/WebRTC+tutorial+using+SIPML5)

- [WebRTCサポートの詳細]
(https://wiki.asterisk.org/wiki/display/AST/Asterisk+WebRTC+Support)

#### 参考
- 利用したbox:[ARTACK/debian-jessie](https://atlas.hashicorp.com/ARTACK/boxes/debian-jessie)
- http://www.ipcomms.net/sample-device-configurations/41-asterisk/181-install-asterisk-13-on-ubuntu-debian
- [公式Wiki](https://wiki.asterisk.org/wiki)
- http://qiita.com/hiroeorz@github/items/1092b0ee2503be30792f
- http://qiita.com/kitsuki00/items/27f0aeede8d96980ecd5
Pillow(PIL)で1文字の画像をたくさん生成する


# モチベーション

とある事情から複数の言語でOCRしてみようと思ったのですが、どうも自由に使えそうなデータセットがなく、自作する必要が出てきたのでスクリプトを組みました。

# 使ったもの

Pythonの画像処理ライブラリである Pillow(PIL) を使います。
http://pillow.readthedocs.org/en/3.0.x/index.html

# 生成する画像

1文字につき1画像を生成します。

# スクリプト

生成部分本体のコードは以下の通りです。

```py3
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

def generate_char_img(char, fontname='Osaka', size=(64, 64)):
    img=Image.new('L', size, 'white')
    draw = ImageDraw.Draw(img)
    fontsize = int(size[0]*0.8)
    font = ImageFont.truetype(fontname, fontsize)

    # adjust charactor position.
    char_displaysize = font.getsize(char)
    offset = tuple((si-sc)//2 for si, sc in zip(size, char_displaysize))
    assert all(o>=0 for o in offset)

    # adjust offset, half value is right size for height axis.
    draw.text((offset[0], offset[1]//2), char, font=font, fill='#000')
    return img

def save_img(img, filepath):
    img.save(filepath, 'png')
```

gistには実行コード全体を置いときました。
https://gist.github.com/lazykyama/dabe526246d60fa937d1
**（2015/10/18 23:47追記：`Image.save()`の仕様か、アルファベット大文字小文字のファイル名が区別されないようなので少し修正しています。ご注意ください。）**

なお、各言語ごとに文字リストを生成するには以下のようにすればOKです。

## 英語（アルファベット大文字小文字＋数字）

```py3
eng_char_list = list(string.digits+string.ascii_letters)
```
( stringモジュールのリファレンス → http://docs.python.jp/3.3/library/string.html )

## 日本語

頑張って適当にWikipediaとかから文字を抜いてきましょう。

## 他の言語

(ﾟ⊿ﾟ)ｼﾗﾈ

# 注意

* フォント名は、実際の `*.ttf` ファイルの名前を指定する必要があるので注意
    - 情弱ゆえ見事にハマった次第

# 参考

* [Python3.3対応画像処理ライブラリ Pillow(PIL) の使い方](https://librabuch.jp/2013/05/python_pillow_pil/)
* [Python PIL テキストサイズ取得時の注意点](http://takadamemo.wikidot.com/python004)
* [Alphabet range python](http://stackoverflow.com/questions/16060899/alphabet-range-python)
Android Studio用にHidden APIを使う環境を作る

皆さん、AOSPの中には、Android SDKからアクセスできない隠しAPIが無数に入っていることをご存知ですよね。

Eclipseで使うには、ここのページが詳しいです。
https://sites.google.com/site/hippunosource/home/android/androidnohide-apiwo-shi-yongsuru-rifurekushonha-wei-shi-yong

簡単にまとめると、以下のようになります。
1. AOSP成果物の中から、framework.jarとcore.jarを取り出す。
2. Eclipseの参照プロジェクトにこいつらを指定する。

Android Studioを使う場合、jarを参照するだけ、という使い方ができません。
ので、android関連のクラスをAndroid SDKに移植します。
（この記事は心持ちWindowsユーザーがターゲットです)

#1. AOSPをビルドする
J-AOSPさんの以下のページが詳しいです。
https://sites.google.com/site/jaosp72/Home/environment/ubuntu14-04
https://sites.google.com/site/jaosp72/Home/aosp_build/marshmallow

個人開発であれば、VMWare PlayerにUbuntu14.04をインストールするのが、遅いけど確実です。
上記ページを参照して、環境設定・ソースの取得・ビルドを行いましょう。

#2. ```framework.jar```/```core.jar```を取り出す
以下のファイルをそれぞれ取り出しましょう。

```
%AOSP%/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
-> framework.jar 
%AOSP%/out/target/common/obj/JAVA_LIBRARIES/core-libart_intermediates/classes.jar
-> core.jar 
```

Ubuntuの使い方については、この記事ではフォローしません。適宜ググってください。

#3. Android SDKにマージする
上で取得したファイルを以下の様にリネームします。

```
framework.jar → framework.zip
core.jar → core.zip
```

リネームしたら、ダブルクリックして展開しておきます。

次に、```%AndroidSDK%/platforms/android-23/android.jar```を、7-zip File Managerで開きます。
ここのルートディレクトリに、以下のディレクトリを上書コピーします。

```
framework/com/
framework/android/
core/com/
core/android/
```

※java/javax などのディレクトリはコピーしてはいけません。

コピーが終われば、7-zip File Managerを終了させます。

※```android.jar```の元のファイルと、```改変後のandroid.jar```はそれぞれバックアップを取っておきましょう。

このAndroidSDKを使えば、隠しAPIに自由にアクセス出来るようになります。
ただし、リフレクションを使う場合と同様で、将来または過去のバージョンとの互換性は一切保証されませんので、ご利用は計画的に。

#4. おまけ

ビルドが面倒くさい人のために、ビルド済みのものをここに置いておきました。
https://github.com/jiro-aqua/JotaTextEditor/tree/master/android-23

自己責任でご利用ください。

以上です。
S3からAmazon Elasticsearch Serviceへログを流してみた


AmazonElasticsearchを使ってみたいと思い調べました。
現時点で、S3/Kinesis/DynamoDB/CloudWatchからデータを流しこめるということなのでS3に溜めているログファイルで試した内容をざっくりメモ。

## 材料
- Amazon Elasticsearch Service(AmazonES)
- S3
- ログファイル
- Lambda

## Amazon Elasticsearchを立ち上げる
ドメインの作成方法はこちらに詳しく書いてあります。
（見れば確実に分かるので、、割愛します）
http://aws.typepad.com/aws_japan/2015/10/amazon-elasticsearch-service.html


## S3にBucketとログファイルを用意する
自分の場合は、自社サービスの運用で既にアクセスログなどをS3に保存していたのでそれを使いました。
もし必要なデータがない場合は、アプリケーションからFluentdなどを使ってS3に投げるようにすると良いと思います。
そちらの方法は今回の話題と別なので割愛させていただきます。

## LambdaにFunctionを登録する
###実行するjsファイルを用意
以下にLambdaを動かすjsのサンプルコードがあります。
https://github.com/awslabs/amazon-elasticsearch-lambda-samples
こちらのs3_lambda_es.jsを使います。

ここからの説明はこちらにかいてあります。
http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-aws-integrations.html#es-aws-integrations-s3-lambda-es

書いてあるままですが、、
以下のようなディレクトリ構成を用意して、↑で取得したjsファイルのファイル名を『index.js』へ変更してeslambdaに置きます。
※ここハマりどころだと思います。LambdaにHandlerという目立たない設定項目があるのですが、デフォルトが『index.handler』となっています。このindexという部分とjsファイル名を合わせないと`Unable to import module 'index'`というエラーが出て一向に何も実行されません。ご注意ください。（なのでindexじゃなくても設定とファイル名が揃ってればOKです）

```
eslambda
    index.js
    \node_modules
```

jsファイルに書かれているAmazonESへの接続情報を更新します。
説明に従って`/* Globals */`の部分をご自身の環境に合わせて書き換えてください。

必要なモジュールを取得します。
サンプルコードのままであれば以下のコマンドを実行します。

```bash
npm install byline clf-parser path stream
```

そしてフォルダごとzip圧縮します。

```bash
cd eslambda
zip -r eslambda.zip *
```

###ロールの作成
実行するFunctionに権限を与えるためのロールを作ります。
IAMで新しいポリシーを以下のポリシードキュメントで作成してください。
※CloudWatchで動作確認できるように、そちらの権限も追加しています。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:*"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Action": [
                "es:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::log-file-bucket-name/*"
            ]
        }
    ]
}
```

次に新規ロールを作成し先ほどのポリシーを登録します。

###Functionの作成
Lambdaのトップ画面から『Create a Lambda function』＞『Skip』で作成画面へ進みます。
Function名を決めたら『Code entry type』は『Upload a .ZIP file』選択します。
『Role』には、↑で作成したロールがプルダウンに表示されているので、そちらを選択します。
『Next』＞『Creat function』で作成完了です。

###トリガーの設定
Lambdaの画面で『Event sources』タブを選択します。

『Add event source』をクリックし
『Event source type』から『S3』を選択。

『Bucket』でログを保存しているバケットを選択し、
『Event type』で『Put』を選択。

必要があれば『Prefix』でパスを指定、
『Suffix』で指定したい拡張子を設定してください。

『Submit』をクリックして完了です。

###動作確認
Lambdaの画面で『Monitoring』タブを選択します。

右にある『View logs in CloudWatch』をクリックすると、そのFunctionが吐き出したログを確認できます。
S3へログファイルが投入されるタイミングでLambdaが動くのでエラーなどないか確認してください。
Storyboard/xib から生成した ViewController を NavigationController 下にホストする


Storyboard/xib から NavigationController にホストされた ViewController を作りたい場合、Storyboard 上で先に NavigationController をホストする方法もありますが、この場合、自分で作った ViewController に変数を渡したい時が面倒です。


・Storyboard 上で NavigationController にホストされた ViewController の例
![スクリーンショット 2015-10-18 18.12.46.png](https://qiita-image-store.s3.amazonaws.com/0/27210/4afb69c7-633a-ad6e-7a75-be5508f718a0.png "スクリーンショット 2015-10-18 18.12.46.png")

そこで、Storyboard 上には Navigation Controller を生成せず、コードで NavigationController を追加します。

・ViewController のみを定義
![スクリーンショット 2015-10-18 18.15.36.png](https://qiita-image-store.s3.amazonaws.com/0/27210/61603774-1fe4-28dd-7797-b1b7e049c390.png "スクリーンショット 2015-10-18 18.15.36.png")


```
let vc = UIStoryboard(name: "Main", bundle:nil).instantiateViewControllerWithIdentifier("storyboardId") as! UIViewController
vc.some_variable = xxx // ここで変数を渡す
let navigationVC = UINavigationController(rootViewController: newsVC) // navigation controller にホストさせる
```

これで NavigationController にホストされた ViewController に変数を渡しやすくなりました。

# おまけ - 生成した ViewController を Tab の一部にする

この生成した NavigationController を Tab の一部にしたい場合、 tabBarItem を設定してあげると Tab 中にアイコン・名称が表示されるようになります。

```
vc.tabBarItem = UITabBarItem(title: "ニュース", image: UIImage(named: "News"), tag: 0)
```

このように表示されるようになります。

![スクリーンショット 2015-10-18 18.20.26.png](https://qiita-image-store.s3.amazonaws.com/0/27210/0ca19663-063c-4e5f-a606-a047e7f47dee.png "スクリーンショット 2015-10-18 18.20.26.png")
ssh -T git@github.com で Permission denied (publickey). 

# 問題

githubとの接続を確認しようと思って

```
$ ssh -T git@github.com
```

を打つと

```
Permission denied (publickey).
```

githubのpullもpushもうまくいっていてあれっと思いました。

#解決策

```
$ ssh -T git@github.com -i ~/.ssh/id_git_rsa
Hi kuboshizuma! You've successfully authenticated, but GitHub does not provide shell access.
```
＊-i のオプションでは自分のgithubとの接続で使用している秘密鍵を使います。

ssh接続の際「~/.ssh/id_rsa」、「~/.ssh/id_dsa」、「~/.ssh/identity」しかデフォルトでは見にいきません。今回はこの3つ以外の名前の秘密鍵だったので鍵を指定しないといけませんでした。

ちなみに
```~/.ssh/config```に以下のように設定しているので

```
Host github
  HostName github.com
  IdentityFile ~/.ssh/id_git_rsa
  User git
```

これでもいけます。

```
$ git -T github
Hi kuboshizuma! You've successfully authenticated, but GitHub does not provide shell access.
```



また、以下でうまくいかないのも気にくわないので、

```
$ ssh -T git@github.com
Permission denied (publickey).
```

以下のように記述すると

```
Host github github.com
  HostName github.com
  IdentityFile ~/.ssh/id_git_rsa
  User git
```

うまくいきますね！

```
$ ssh -T git@github.com                                                                                                                                                                 
Hi kuboshizuma! You've successfully authenticated, but GitHub does not provide shell access.
```
Blurエフェクトを使ったUIデザインがしたい

今回はiPhoneでよく見る曇ったようなエフェクトのBlurエフェクトの実装について話していきたいと思います。今回は全体でUIImageViewにBlurエフェクトを実装していきますが、UIImageViewである必要はありません。

# UIBlurEffect
実際にBlurエフェクトを実装する場合はUIBlurEffectというものを使っていきます。UIBlurEffectにはLightとDarkとExtraLightと三つのスタイルがあります。
例

```swift
//ssk.jpegからsskというImageViewを作成する
let ssk = UIImageView(image: UIImage(named: "ssk.jpeg"))
ssk.frame = View.bounds

//Blurエフェクトを作成
let blurEffect = UIBlurEffect(style: .Light)

//Blurエフェクトからエフェクトビューを生成
var visualEffectView = UIVisualEffectView(effect: blurEffect)

//sskのサイズに合わせる
visualEffectView.frame = ssk.frame

//sskにBlurエフェクトビューを追加する
ssk.addSubview(visualEffectView)

self.view.addSubView(ssk)
```

**.Light** は **UIBlurEffectStyle.Light** のことを指していて、この文のように **.Lightと省略することができます**。
Swift2.0から .(ドット)を打つだけで予測変換で出てくるようになりましたね。個人的に嬉しい変更点の一つです。

## 他にもこういう書き方あります

```swift
//sskというImageViewを作成する
let ssk = UIImageView(image: UIImage(named: "ssk.jpeg"))
ssk.frame = View.bounds

//初期化と同時にエフェクトビューとBlurエフェクトの生成を同時に行う
let visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))

//sskのサイズに合わせる
visualEffectView.frame = ssk.frame

//sskにBlurエフェクトビューを追加する
ssk.addSubview(visualEffectView)

self.view.addSubView(ssk)
```
こういう書き方できるからなんだって話なんですが、これ以降でもこのような書き方ができるので参考までに、、、、

# VibrancyEffect
Blurエフェクトを実装することができた。次はその中でも文字を強調したい。と思った時はVibrancyEffectをつかっていきましょう。

```swift
//myLabelというUILabelを作成する
let myLabel = UILabel(frame: CGRectMake(0,0,200,100))

//テキストとその色を設定する
myLabel.text = "VibrancyEffect is good"
myLabel.textColor = UIColor.whiteColor

//Blurエフェクトを追加するsskというImageViewを作成する
let ssk = UIImageView(image: UIImage(named: "ssk.jpeg"))
ssk.frame = View.bounds

//BlurエフェクトとVisualEffectViewを作成する
let blurEffect = UIBlurEffect(style: .Dark)
let visualEffectView = UIVisualEffectView(effect: blurEffect)
visualEffectView.frame = self.view.frame
        
//Vibrancyエフェクトを作成する
let vibrancyEffect = UIVibrancyEffect(forBlurEffect: blurEffect)

//vibrancyEffectViewの作成
let vibrancyEffectView = UIVisualEffectView(effect: vibrancyEffect)

//今回強調したいmyLabelにサイズを合わせる
vibrancyEffectView.frame = myLabel.frame

//sskをviewに追加する
self.view.addSubview(ssk)

//sskにVisualEffectViewを追加する
ssk.addSubview(visualEffectView)

//vibrancyEffectViewのcontentViewにmyLabelを追加する
vibrancyEffectView.contentView.addSubview(myLabel)
        
//最後にvisualEffectViewのcontentViewにvibrancyEffectViewを追加する
visualEffectView.contentView.addSubview(vibrancyEffectView)
```

**VibrancyEffectはBlurEffectがないと使えません。**
vibrancyEffectViewとvisualEffectViewはオブジェクトを **contentView** に追加する必要があります。
僕の以前の記事でも述べたようにSwiftは階層構造です。Blurエフェクトがうまく機能していない場合はちゃんとエフェクトを加えたいViewの上にBlurエフェクトを追加しているのか確認しましょう。
LaTeX でサブディレクトリが自動的に探索されるようにする

## 背景

  * 2010 年以降の W32TeX または TeX Live を使っている。
  * 大規模な LaTeX 文書を作成している。[^1]
  * ソースファイル分割を行っていて、かつ大量の画像を使用しているので、文書のコンパイルに必要なファイルが大量にある。
  * そこでファイルを階層ディレクトリに置いて管理したい。

    ```text:こんな感じ
    thesis/
    |-- style/
    |   |-- thesis.cls
    |   |-- mytools.sty
    |   |-- tcphaistan.sty
    |   `-- ...
    |-- bib/
    |   |-- thesis.bib
    |   `-- names.bib
    |-- image/
    |   |-- photo/
    |   |   |-- hometown.jpg
    |   |   |-- sayaka28.jpg
    |   |   `-- ...
    |   |-- misc/
    |   |   |-- network-01.png
    |   |   |-- danger-bend.pdf
    |   |   |-- smiling.png
    |   |   |-- sushi.png
    |   |   `-- ...
    |   |-- graph/
    |   |   |-- ex-T13-low-01-c.eps
    |   |   |-- ex-T13-high-01-c.eps
    |   |   `-- ...
    |   `-- ...
    |-- part1-ARE/
    |   |-- graph/
    |   |   |-- ex-T11-base-01.eps
    |   |   `-- ...
    |   |-- bib/
    |   |   `-- ARE.bib
    |   |-- tikz/
    |   |   `-- ARE1-workflow.tex
    |   |-- 00lead-ARE.tex
    |   |-- 10introduction-ARE.tex
    |   |-- 11tex-ARE.tex
    |   |-- 13tikz-ARE.tex
    |   |-- 20advanced-ARE.tex
    |   `-- ...
    |-- part2-SORE/
    |   |-- 00lead-SORE.tex
    |   `-- ...
    |-- part3-QORE/
    |   |-- 00lead-QORE.tex
    |   `-- ...
    |-- 01acknowledge.tex
    |-- 02abstract.tex
    `-- thesis.tex
    ```

  * ソース中では次のように相対パスでファイルを指定する。
  
    ```tex:こんな感じ
    \include{part1-ARE/00lead-ARE.tex}
    \includegraphics[width=1em]{image/misc/sushi.png}
    ```

[^1]: これぐらいの大規模な文書が作れるくらいには LaTeX に習熟しているものとする。

## 問題

  * このままだと、ソース中にディレクトリを記述しているので、文書の編集中にファイルを移動させることが自由にできない。
  * **カレントディレクトリとその下位にあるファイルが自動的に探索されるようにしたい。**
      * つまり、ソース中ではファイル名しか書かないようにしたい。

        ```tex:こんな感じ
        \include{00lead-ARE.tex}
        \includegraphics[width=1em]{sushi.png}
        ```

      * もちろん、同名のファイルを複数置くことはしない前提。

## 解決法

環境変数 `TEXINPUTS` に `.//;` という値を指定する。

```cmd:WIndowsコマンドプロンプトの場合
set TEXINPUTS=.//;
```

```bash:bashの場合
export TEXINPUTS='.//;'
```

これにより TeX ソースファイル（`*.tex`、`*.sty`、`*.cls` など）および画像ファイル（`*.png`、`*.pdf` など）について、カレントから再帰的に探索されるようになる。

同様に、環境変数 `BIBINPUTS` に `.//;` という値を指定すると、文献データベースファイル（`*.bib`）について、カレントから再帰的に探索されるようになる。

make 系のツールを使っているのであれば、恐らくそれが持つ環境変数設定の機能を利用できると思われる。

※詳細については以下の記事を参照されたい。

  * [「LaTeX でサブディレクトリがナントカカントカ」に関する何か](http://d.hatena.ne.jp/zrbabbler/20151018/1445178623)

### 注意点

“ローカルの texmf.cnf”で同様の設定をする（変数 `TEXINPUTS` や `BIBINPUTS` を設定する）ことで、カレントから再帰的に探索される設定を既定にすることができる。しかし、そのような設定は意図しない副作用を起こす危険性があるので**推奨しない**。
VisualStudioCodeでUnityプロジェクトをデバッグする

VisualStudioCodeはMonodevelopと比べても軽量でインテリセンスもさくさく効くのでUnityのエディタにしている人も多いと思います。
Unityでのデバッグができないのが困ると思っていたんですが、最近のUpdateでDebugできるようになったようです。
やり方試してみたのでまとめます。

### 環境
Mac OSX Yosemite 10.10.5
Unity 5.2.0f3
VisualStudioCode 0.9.1

# 参考

[VisualStudioCode公式](https://code.visualstudio.com/Docs/runtimes/unity)
[plugin](https://github.com/dotBunny/VSCode/)

# 導入

`git clone https://github.com/dotBunny/VSCode.git`

で適当な場所にDLしておきます。
正直コピーでもいいですが、今後の更新を取りやすくなるのでcloneしといたほうがいいのかな。

`Plugins\Editor\dotBunny`をUnityプロジェクト内にコピー。
通常Assetsの下に入れるかと思います。参考サイトでもそういうふうに書いてますね。


## Unity側設定

Unity>PreferencesにVSCodeというタブができている。

![スクリーンショット 2015-10-18 15.54.25.png](https://qiita-image-store.s3.amazonaws.com/0/52072/2a57e40a-95b7-3bc7-de7a-bfff7166e930.png)

`Enable Integration`にチェック入れると他のも触れるようになります。
ひととおり全部チェック入れてしまって問題ないかと。
AlwaysWriteLaunchFileについては後ほど。

またメニューのAssetsの一番下に`OpenC#ProjectInCode`という項目ができているので、クリックするとVisualStudioCodeが開きます。

また以前のようにCodeを開き直してProject選んで〜ってやらなくてもProjectが読み込まれた状態になります。


## VisualStudioCode側設定

![スクリーンショット 2015-10-18 16.01.29.png](https://qiita-image-store.s3.amazonaws.com/0/52072/c5b493bd-972e-101c-14b6-6657817a83df.png)

タブの虫アイコン?を選択するとDebug画面にいきます。
ここで右上の設定アイコンをクリックしてください。
するとlaunch.jsonが開きます。こいつを以下の感じに修正(AlwaysWriteLaunchFileをOnにした場合は何もしなくても勝手にやってくれました)

```json
{
	"version":"0.1.0",
	"configurations":[ 
		{
			"name":"Unity",// DropDownに表示される名前
			"type":"mono",
			"address":"localhost",
			"port":56131  // AlwaysWriteLaunchFileをOnにしてたらここは適当で良さそう
		}
	]
}

```

ちなみにAlwaysWriteLaunchFileをOnにしとくと、UnityでPlayしたときに~~該当ポートで自動的にport部分が書き換わります~~適切にlaunch.jsonを書き換えてくれます。launch.jsonをまるごと書き換えてるのでデフォルトのものが消えるけど問題ないかと。

これでUnityをPlayしたあとにVSCode側でUnityを選んでDebugのPlayボタンクリックするとデバッガがアタッチされた状態になります。

# 機能

とりあえず適当にスクリプトつけてブレークポイントはってみました。

## Variables
![スクリーンショット 2015-10-18 16.15.36.png](https://qiita-image-store.s3.amazonaws.com/0/52072/381861db-1e01-1f3a-3045-0e81bd0dc090.png)

中身は一通り見れそうですね。
やってみて気付きましたが、オブジェクトのnon public memberのとこにへんてこな型表示的なのが出ちゃってますが、内容は問題なさそうです。

## Watch
![スクリーンショット 2015-10-18 16.21.26.png](https://qiita-image-store.s3.amazonaws.com/0/52072/7b622264-2291-0982-b331-8e0d858ce1b8.png)

中身は普通に見れたりちょっと式いれたりできますが、VS2015みたいにウォッチWindowでLinqは使えないようですね。

### 注意
ブレークしてる最中はUnity側から止められないようです。デバッグ中にUnityが止まらないってなって焦ったら、VisualStudioCode側でブレークしてないか確認しましょう。


# まとめ
PluginをUnityProjectに毎回入れたりlaunch.json変えたりしないとだめですが、各プロジェクト1回やればすむので、VisualStudioCodeつかってDebug.Log()うめて大変な思いしてた人はぜひためしてみてください!
画面タップ時のXY座標の取得方法

現在Android Studioでスマホのソフトウェアキーボードを開発している者です。 
そのキーボードの機能の一つとして画面をタップした際の指のXY座標をAndroid StudioのLogcatに表示させる機能を組み込みたいと思っております。 
webで検索した組み込み方法をいろいろと試したのですが、さっぱりうまくいきません＞＜ 

どのようなものをどのように組み込んだらいいか、ご存知の方がいらっしゃいましたらどうかご教授お願い致します。 
プログラミング初心者なのでわかりやすく教えていただけると本当に助かります...。 




開発環境は 
MacOS10.10.3 
Android Studio 1.3.2 
です。
AndroidStudioでKotlinを使う

Kotlinをやってみようと思って初歩の初歩で躓いたのでインストール手順をまとめておこうとおもった。

そもそもKotlinってなんですかとかは、えらい人がまとめてくれているはずなのでそちらを参照おなしゃす。

# AndroidStudioにKotlinPluginをインストール

まずPreferencesを開く
![スクリーンショット 2015-10-18 15.41.12.png](https://qiita-image-store.s3.amazonaws.com/0/16065/0d9ef0e5-afb7-e77b-5842-5174c6749c3e.png)

そのなかのPluginsを開いて、 「Install JetBrains plugin...」をクリック
![スクリーンショット 2015-10-18 15.41.33.png](https://qiita-image-store.s3.amazonaws.com/0/16065/5fc4b5b8-783f-f4fb-99dd-51dbb7732201.png)

kotlinで検索して「Kotlin Extensions For Android」をインストール。
![スクリーンショット 2015-10-18 15.42.03.png](https://qiita-image-store.s3.amazonaws.com/0/16065/df735125-eba0-a04f-9e2a-b94660a82ca3.png)

インストール後AndroidStudioを再起動しておわり.

# やってみる

あとは[ここ](https://kotlinlang.org/docs/tutorials/kotlin-android.html)を参考に実際にKotlinで空のAndroidアプリをつくって動くか確認。

![スクリーンショット 2015-10-18 16.26.08.png](https://qiita-image-store.s3.amazonaws.com/0/16065/bf01778c-71be-aa69-a8b4-ad838af08546.png)

動いた！やったぜ！

# まとめ
ちゃんとpluginはインストールしましょう…
iOSのPush通知のテストをMacでする方法

自分のアプリにPush通知をつけた時にいちいちサーバーからプッシュ投げるのも大変だったりします。（そういう仕組作ったりとか）

手軽に手元からPushを投げられたらいいのにということで、Macアプリが有ります。

大概Push用の証明書を作るのも同じマシンでしょうから、キーチェーンに入ってたりしますよね？

これらのアプリは、使う証明書を選んで、デバイストークンをセットして、、あとは送りたいペイロードを作ってやればいいだけ。

https://github.com/noodlewerk/NWPusher
https://github.com/Zambiorix/Cocoa-APNS-Test

ほかにもいくつかあるので使いたいのを選べばいいかなと思います。

追記：
VoIP用のPushに対応してるということもあり、NWPusherの方がオススメです。
録画したアニメをファイルごとに分けよう

# 録画したアニメをファイルごとに分けよう

Chinachuで録画したはいいものの、手動でファイルをタイトルずつ分けていくのは大変なのでrubyを使ってみた

``` ruby:anime.rb
#encoding: utf-8

#Document/recorded というファイルに保存されてるアニメを振り分ける

title = [
        "それが声優",
        "実は",
        "オーバーロード",
        "監獄",
        "ソーマ",
        "下ネタ",
        "モンスター",
        "六花",
        "がっこう",
        "赤髪",
        "空戦"
]

#　フォルダの位置
pwd = Dir::pwd + "/recorded"
# ファイルの中身
file = Dir::entries(pwd)

title.each do |e|
        unless system("mkdir #{pwd}/#{e}")
                next
        end

        file.select { |t| /#{e}/ =~ t}.each do |name|
                if system("mv #{pwd}/#{name} #{pwd}/#{e}")
                        puts "OK"
                else
                        puts "Error: #{name}"
                end
        end
end
```

もう少しうまい書き方あると思うので誰か教えてください　(..)
Nightmare(v2) + mocha ベースに、ES6でE2Eテストを書く


## はじめに
本投稿は、Nightmare v2を前提とした内容になっています。
v1については、こちらの[投稿](http://qiita.com/imunew/items/4b636c7c5604d2e5828b)を参照ください。

## Nightmare v2になって

### いつからv2になったのか

```
$ npm info nightmare

{ name: 'nightmare',
  description: 'A high-level browser automation library.',
  'dist-tags': { latest: '2.0.7' },
  versions:
   [ '0.0.1',
   
   ...(( 中略 ))...

  time:
   { modified: '2015-10-01T18:28:53.265Z',

   ...(( 中略 ))...

     '2.0.0': '2015-09-13T08:14:23.986Z',
     
```
どうやら、2015-09-13にv2.0.0がnpm上でリリースされたようです。

### v2になって何が変わったのか

#### ブラウザが[phantomjs](http://phantomjs.org/)から[electron](http://electron.atom.io/)に変更
- 実行速度の大幅改善が見込まれる
- electronがデスクトップアプリとして動作するので、実行中にウィンドウを見ることができる

#### ES6の[ジェネレーター](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/function*)構文を採用
- ~~mochaを使う場合は、co-mocha（または将来的に、mocha-generators）が必須になる~~
- mochaを使う場合は、mocha-generatorsを使う
  - [#281 Replace co-mocha w/ mocha-generators](https://github.com/segmentio/nightmare/pull/281)
  - [#290 Initialize mocha-generators so tests run](Initialize mocha-generators so tests run)

#### coffee-scriptは現実問題使えない
#### APIの変更
- インスタンスの生成が、`new Nightmare()`ではなく、`Nightmare()`に
- evaluate関数の値の受け渡し方が変更
- end関数の導入

### ~~現状の問題点（v2.0.7時点）~~（v2.1.4で解消）

- ~~screenshotを使うとtimeoutになる~~
- [#217 implement screenshots](https://github.com/segmentio/nightmare/pull/217)


## Example
githubにあげていたexampleをv2に対応させました。
https://github.com/imunew/nightmare-example


## おわりに
v2で破壊的変更が加えられたnightmareですが、実行速度は大幅に改善されています。（v1がphantomjsのために遅過ぎたというのはありますが）
ただ、ES6構文が取り込まれたことで、コードの書き直しが発生するなど、利用する側の負担も正直、小さくはありません。
構文は変えずに、phantomjs→electronの変更だけをするバージョンがあっても良かったのかなと。
UnityでiPhoneの実機テストを無料で行う際にハマったところ

##この記事について
Xcode7よりiPhoneでの実機テストが無料で出来るようになりました。
この記事は私がUnityで試した際にハマったところを備忘録も兼ねて簡単に纏めたものになります。
※修正点や追加項目があればその都度バージョンを上げていくつもりです

ネタとしてはそれほど新しいものではありませんが、一つの記事にまとまっていない....
要するに全部ハマる人は稀なんでしょうが、私みたいな人もどこかにいると思いますので
そんな人の参考になれば幸いと思います。

##ハマりポイント
以下は私がハマったポイントです。

1. 実行ボタンを押すと「Xcode cannot run using the selected device.」
2. 実行ボタンを押すと「No provisioning profiles found」
3. 実行ボタンを押すと「An App ID with Identifier」

要領の良い方ならきっとハマらない可能性がありますので
そのあたりはご容赦ください。


###実行ボタンを押すと「Xcode cannot run using the selected device.」
原因は「iPhoneがMacに繋がれてい無い」ただそれだけです。
初歩的すぎますが、色々と失敗してテンパっていると見落としがちです。
Xcode上に「デバイスの名前が無い場合」は冷静に実機とMacが繋がっているかを確認しましょう。


###実行ボタンを押すと「No provisioning profiles found」
原因はiOSのバージョンのImage Diskが無いためです。
こちらはiPhone側でiOSのバージョンUPを行ってすぐに起きそうなトラブルです。

####解決策
1.以下のPATHに移動

```
Path: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
```

2.存在するバージョンのImage Diskをフォルダ事コピーしリネーム
私が行った通りに書くと、iPhoneのiOSのバージョンが「9.0.2 (13A452)」 、存在するImage Diskでバージョンが一番新しいものが一「9.0 (13A340)」なのでこれをコピーし「9.0.2 (13A452)」にリネーム。

### 実行ボタンを押すと「An App ID with Identifier 」
原因はUnityのBundle Identifierがデフォルト。

####解決策
Unityで実行する前に のBundle Identifierを記述しておきましょう。
詳しくは[こちら記事][link-2]が参考になります。

##まとめ
私のような超鈍臭い人間でも出来ましたので本当に簡単です。
まだ試されてい無い方は是非お試しくださいませ。


##参考
[Xcode7で1円も払わずに自作iOSアプリを実機確認する][link-1]
[link-1]:http://qiita.com/FumihikoSHIROYAMA/items/a754f77c41b585c90329
[iOSアプリを実機でテストする (Cocos2d-x, Unity)][link-2]
[link-2]:http://studio.cretia.net/blog/277
[Swift: iOSアプリ開発初心者がXcode 7で実機デバッグしようとしたときにハマったこと。][link-3]
[link-3]:http://seiya-orz.hatenablog.com/entry/2015/07/05/163207