がべーじこれくしょん

技術系とかいろいろ

pod installでコケてSwift開発やめかけた話

毎度おなじみ環境構築でコケるシリーズです。

今回はiOSアプリ開発で一躍話題となったCocoaPodsに関する話題です。

gemと同様に、CocoaPodsもPodfileというものを元にしてパッケージをインストールします。

そのときに使われるコマンドが、pod installなワケですが、

極稀に以下のようなエラーメッセージが出ることがあります。

[!] Unable to find a specification for `Alamofire`

かの有名なAlamofireが「ありません」というわけですから絶対におかしい

これの対処法については、以下の記事に載ってました。

qiita.com

試しにpod setupしてみます。

$ pod setup
~~~省略~~~
Please move or remove them before you merge.
  Aborting
  Updating 7063eec..cfe42c8
[!] CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`

コンフリクトしてる…??

とにかくかなり古いpodを使ってたみたいです。(化石…)

とりあえず指示通りpod repo update --verboseしてみます。

$ pod repo update --verbose
~~~省略~~~
  Please move or remove them before you merge.
  Aborting
  Updating 7063eec..e5f960c
[!] CocoaPods was not able to update the `master` repo. If this is an unexpected issue and persists you can inspect it running `pod repo update --verbose`

うーん治らない。

記事漁りしてたら近そうなissueが発掘されました。

CocoaPods was not able to update the `master` repo · Issue #5077 · CocoaPods/CocoaPods · GitHub

とりあえず提案に沿ってみる。

$ cd ~/.cocoapods/repos/master
$ git reset --hard
Checking out files: 100% (113726/113726), done.
HEAD is now at 7063eec [Add] TaskQueue 1.0.1
$ git status
On branch master
Your branch is behind 'origin/master' by 29491 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)
Untracked files:
  (use "git add <file>..." to include in what will be committed)

    Specs/0/
    Specs/1/
    Specs/2/
    Specs/3/
$ rm Specs/0/ Specs/1/ Specs/2/ Specs/3/

削除に長時間かかった。

では早速。

$ pod setup
CocoaPods 1.2.0 is available.
To update use: `sudo gem install cocoapods`

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.2.0

Setup completed
$ sudo gem install cocoapods

成功しました。こりゃ相当前にチャレンジして放置したんだなあ…(遠い目

なにはともあれこれでやっとこ開発環境整いました。思う存分AlamofireやらSwiftyJSONやらRealmやらを使えるわけで嬉しいです。

がんばるぞい

LINE BOT ハッカソン @ みす冬合宿2017 報告

MISWの冬合宿が先日行われたのですが、その3日目である2/27にLINE BOT ハッカソン@みす冬合宿2017を主催しました。

そこでの成果が、「おばあちゃんの知恵袋」です。

「〜って何?」「〜を教えて」といった聞き方をすると、その言葉について教えてくれます。

中身としては、それに関するWikipediaの記事を検索し、見つかった場合は一番最初の文を引っ張ってくるだけです。

中身が無いですね。

このbotの作り方は以下のとおりです。

  1. 材料: パソコン、デプロイ環境(Heroku)、アイデア
  2. はじめに、Herokuのデプロイ環境を構築して…
  3. ちくしょう!台無しにしやがった!お前はいつもそうだ。
  4. このbotはお前の人生そのものだ。お前はいつも環境構築で失敗ばかりだ。
  5. お前は色んなことに手を付けるが、ひとつだってやり遂げられない。
  6. 誰もお前を愛さない。

いつも通り環境構築で時間を潰してしまいました。ちくしょう。

Herokuはもう使いません(憤怒)

よければ友達登録して遊んでやってください。

友だち追加

機能追加もする予定です。(機能追加するとはいってない)

Raspberry Pi3にTensorFlowを入れてMNISTする

現在ARM用のTensorFlowは公式配布されていないので、有志によるRasPi用TensorFlowプロジェクトのものをつかってインストールします。

github.com

環境

項目
端末 Raspberry Pi 3
OS Raspbian Jessie With PIXEL (Kernel 4.4)

OS標準でPython2とPython3が入ってますが今後の事も考えてとりあえず3でいきます。

インストール

$ wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v0.12.1/tensorflow-0.12.1-cp34-cp34m-linux_armv7l.whl
$ sudo pip3 install tensorflow-0.12.1-cp34-cp34m-linux_armv7l.whl

TensorFlowは、インストール後のmodule関連エラーが絶えないライブラリとして個人的に有名です。

RasPi版TensorFlowも、mockというライブラリの関係でimportに失敗するとのことなので、予め一旦アンインストールしたのちインストールします。

$ sudo pip3 uninstall mock
$ sudo pip3 install mock

これにて準備完了です。

MNISTモデルの学習と実行

MNISTのコードに関しては、TensorFlowの公式チュートリアルに則って作成しました。

MNIST For ML Beginners - Tensorflow Tutorials

実行した結果、このようになりました。

$ python3 mnist.py
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
100 times   accuracy: 40.7499998808 %
200 times   accuracy: 89.4800007343 %
300 times   accuracy: 90.3100013733 %
400 times   accuracy: 90.7400012016 %
500 times   accuracy: 90.3699994087 %
600 times   accuracy: 91.2500023842 %
700 times   accuracy: 91.5000021458 %
800 times   accuracy: 91.6199982166 %
900 times   accuracy: 91.7599976063 %
1000 times  accuracy: 91.6599988937 %

RasPiでもTFが動く…感動。

MNISTモデル程度の簡単なタスクなら思ったより時間はかかりませんでした。ただ、CIFAR-10等のカラー画像等になってくるとちょっと怪しいかもしれません。

いずれにせよ、カメラを使ったいろいろなことや、RNNを用いた自動対話Botなんてのもこれで作れちゃいますね。

創作の幅が広がってよきかなよきかな。

GitHubアカウントがBANされた話

ある日、僕はいつものようにGitHubにログインした。

すると妙なメッセージが。

f:id:musaprg:20170203015915p:plain

Your account has been flagged.

え?

つまりBANされたってこと?

別に何もしてないのに?

今日も元気にクソワンライナーコードをGistにあげてるだけだったのに…

ググってみると被害者は僕だけじゃないようです。

a-habakiri.hateblo.jp

What does FLAGGED mean? - FLAGGED Definition - Meaning of FLAGGED - InternetSlang.comによるとWhat is FLAGGED? FLAGGED is “Banned” などと物騒なことが。

え、こわ…

とりあえず上記サイト様を参考に運営にクレームを送ります。

Hello, Mr, or Ms.

I don't know why my account has been flagged.
Would you tell me what to do now?
I'm waiting your response.

Thank you very much for your support.

musaprg

こんな感じ。

翌朝確認すると以下のようなメールが運営から届いていました。

f:id:musaprg:20170203102440p:plain

どうやら解除されたよう。よかったです。

さいごに

どうやらこの案件に関してはかなりあるようです。何かあった場合は慌てずに冷静に対処するようにしてください。

Python3(Anaconda)をDockerコンテナとして入れたUbuntu上で使う

実行環境

OS: MacOSX 10.12.2 Sierra

作業コンテナ: Ubuntu 16.04 LTS ( on Docker Version 1.12.5 (14777))

おしゃべりbotを作ろうとして、Python3やらMeCabやらを入れようとしたらMacの場合エラーが大量にでて困り果ててしまいました。

Dockerの操作になれるという意味でもいい機会なので、Dockerコンテナ上で環境構築してみます。

Ubuntu 16.04のDockerコンテナをDockerHubから入手

# docker pull ubuntu:latest
# docker run --name ubuntu -i -t ubuntu:latest
# docker exec -it ubuntu /bin/bash

これでコンテナのシェルに入れます。

pyenv + Anaconda版Python3をインストール

DockerコンテナとしてpullしてきたUbuntuは基本的なコマンド以外ほとんどインストールされていないので、必要なものだけ途中で適宜インストールしていきます。

# apt-get update
# apt-get install git aria2 curl wget bzip2
# git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
# echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# source ~/.bashrc

aria2, curl, wgetは最低限pyenvでpythonをインストールするのに必要なものです。curlwgetはいずれかが入っていれば大丈夫です。

Anaconda版Python3インストール

Anacondaとは、Pythonの環境設定と、Pythonによるプログラミングにおいて比較的使われるモジュール(ライブラリ)等を一気にインストールしてくれるものです。

Continuum Analytics 社 が提供している Python と conda というパッケージマネージャーを含む Python ディストリビューションです。 qiita.com

公式のPythonでは、多くの場合環境設定で詰みます。そのため、特別なことがない限りはPyenv+Anacondaによるインストールをおすすめします。

# pyenv install -l | grep ana
  anaconda-1.4.0
  anaconda-1.5.0
  anaconda-1.5.1
...
  anaconda2-4.0.0
  anaconda2-4.1.0
  anaconda2-4.1.1
  anaconda2-4.2.0
...
  anaconda3-2.5.0
  anaconda3-4.0.0
  anaconda3-4.1.0
  anaconda3-4.1.1
  anaconda3-4.2.0
# pyenv install anaconda3-4.2.0
# pyenv global anaconda3-4.2.0
# pyenv rehash

基本的にPython3を入れておけば間違いありません。ライブラリの多くが未だに2系に依存してはいますが、今後のことを考えると3系で開発することをおすすめします。

参考サイト

qiita.com