よしたく blog

ほぼ週刊で記事を書いています

【解決】OpenCVはpip3からインストールできます

はじめに

yoshitaku-jp.hatenablog.com

の問題が解決したので、メモをしておきます。

結論から言うと、ソースをコンパイルしなくても良かったようです。

pip3からインストール

sudo pip3 install numpy opencv-python picamera[array]

で、opencvはpip3経由ではインストールできるようになっていたようです。し、知らんかった… pip2系はダメみたいですね。ありがとう作ってくれた人。

依存関係含めてものを載っけておきます。友人に感謝!!!

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install -y build-essential cmake pkg-config
sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
sudo apt-get install -y libgtk20-dev libgtk-3-dev
sudo apt-get install -y libatlas-base-dev gfortran
sudo apt install -y libqtgui4 libqt4-test
sudo apt install -y libilmbase12 libopenexr22 libgstreamer1.0-dev
sudo apt-get install -y python3-dev python3-pip
sudo pip3 install numpy opencv-python picamera[array]

ラズパイへOpenCVをソースからビルドしたらハマった話

はじめに

5月にIoTハッカソンがあり、そのための準備を第6回 Raspberry pi もくもく会でおこないます。

ハッカソンのテーマが「キッズIoT」ということで、子供のテレビ時間を抑制するものを作ろうとしています。 子供がテレビの前にいるかを確認しなければならないので、ラズベリーパイとOpenCVを使って確認してみようと思います。

今回はRaspberry PiOpenCVをインストールしてみます。

ファイルシステムの拡張

sudo raspi-configを実行し、「7 Advanced Options」の「A1 Expand Filesystem」を選択します。 実行することでラズベリーパイで使用できるファイルの領域が広がります。OpenCVコンパイルでは大きいファイル領域を使用するので必ずおこないます。

SDカードの大きさが小さい場合は他にも必要のないソフトウェアをアンインストールしておきます。

sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

OpenCV3をソースコードからインストールする

まずは依存関係のあるパッケージをインストール

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python3-dev

次にソースコードのダウンロードと解凍

wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
unzip opencv_contrib.zip

numpyのインストール

pip install numpy

OpenCVのビルド

cd ~/opencv-3.3.0/
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \
-D BUILD_EXAMPLES=ON ..

OpenCVコンパイル

make -j4

ここでエラー

エラー

何度かmake -j4を試してもfatal error: can’t write PCH file: No space left on deviceエラーが出てしまいました。一番最初にデバイスの領域を確保したはずなんだけどなぁ。SDカードも16GBを使っているので領域が足りなくなることはほぼ無いと思っています。結構調べたのですが、どれも解決には至らず…

解決したらまたブログを書きます。

参考URL

作業編

https://github.com/yoshitaku-jp/study-picamera-slack

https://qiita.com/nanbuwks/items/422eb405ceef84826ab4

https://www.pyimagesearch.com/2015/07/27/installing-opencv-3-0-for-both-python-2-7-and-python-3-on-your-raspberry-pi-2/

https://www.scivision.co/install-opencv-python-windows/

エラー編

https://teratail.com/questions/101689

https://www.raspberrypi.org/forums/viewtopic.php?t=124646

http://answers.opencv.org/question/18121/cant-write-in-pch-file-crunchbang/

https://raspberrypi.stackexchange.com/questions/63417/compiling-opencv-on-pi-3


追記

解決しました!!!!!!!!!!!!!!!!!!

yoshitaku-jp.hatenablog.com

#技術書典 に行ってきました

2018/4/22は技術書典4に行ってきました

技術書典とは

秋葉原UDX アキバ・スクエアにて開催された、技術書のオンリーイベントです!!

技術書典 https://techbookfest.org

第4回のページ https://techbookfest.org/event/tbf04

開催1回目から知ってはいたのですが、都合が合わずにここまで来てしまった… 3回まで悪天候も続いていたので、今回は晴れてよかったですね!

びっくりするぐらい人が多い

だんだん注目度が上がっているようで、人が多かったです!!! エンジニアがこんなにもたくさんいるとは!

そして、最終的な来場者数は6380人だったようです!!
https://twitter.com/techbookfest/status/987965787284516864

次回は会場が広くなるんじゃなかろうか…

自分のお目当てのサークル

事前にサークルチェックしたところです!

シス管系女子会 マンガでわかるWebデザイン+Git さかさまダイアリー YATTEIKI Project radiberry pi! どっとすたぢお

今回自分が気になったサークルさんです!どこも面白そうー!!

当日の自分の動き

まぁまったり行っても大丈夫だろと思っていましたが、twitterで検索していると人がヤバイことを知りました。大慌てで秋葉原まで着き、11:30に整理券をもらえましたが、1830番でした。
https://twitter.com/yoshitaku_jp/status/987881263238295553

整理券の番号が来るまでは中にはいることはできないので時間を潰します。

カールスジュニアで時間を潰しました。初めて行きましたが、1000円でアメリカンなハンバーガーが食べられます。飲み物がドリンクバーで飲み放題です。アメリカンです。

自分が中にはいったのは12:30ぐらい。 人気なところは既に本が完売していて、ダウンロード版のみの販売になってました。悲しい。すごい人気。そのダウンロード用のQRコードが書いてある紙もなくなってしまうところも出ていて、急遽印刷しているところもありました苦笑 会場内は肩はぶつかるわ、荷物ぶつかるわ、人の流れに逆らえないわで大変大変。転倒とかあると怖いので、本当に次は広い会場がいいですね… 女性も来にくくなってしまいそう…

買ったもの

マンガでわかるWebデザイン+Git
マンガでわかるDocker わかばちゃんシリーズ!Dockerまだまだわからないこともあるし欲しかった!

YATTEIKI Project
今日からはじめる技術Podcast完全入門 YATTEIKI Project大好きです。インターネットTシャツ着てったらパーソナリティーの方々に笑ってもらえた。結構嬉しい。

あきよこブログ
現場で使えるDjango 日本語のDjangoの文献・資料って全然ないから衝動買いです!唯一の物理本。笑

date-refinement
kaggleのチュートリアル kaggleやってみたかったから買い!

にくよし文庫
ソフトウェアエンジニアの情報収集について 情報収集能力高めたかったから買い!!

以上です!

午後から予定があったのと、人の密集率がすごくて行きたいところにたどり着けずバテました… けど各サークルさんが電子版を出し始めているので、また面白いものがないかチェックしてみようと思います!次回のためにお金をためておこう。ハッシュタグ追いかけていくぞ!!

まとめ

めちゃくちゃ楽しかった!!!また行きたい!!!Podcast始めたい!!

そして、次回は自分も出してみたいなぁと思っていて - OSSに参加してみよう本 - OSS BIツールを使ってみる本 - 情報収集について - ブログを書く技術 なんか出してみたら面白いんじゃないかなぁーって勝手に思ってます!次回の開催はまだ発表されていないので今から楽しみです!

GWは買ってきた本を読んで書評かな??

参加した皆様、運営の皆様、技術書典に関わった全ての皆様お疲れ様でした!また技術書典5が開催されることを楽しみにしてます!!!

Google Cloud Vision APIのウェブ検出機能を使ったら自分の想定と違った話

自分は安住紳一郎アナウンサーに似てるってよく言われます(立ち居振る舞い含めて)。メガネをかけるとおぎやはぎの小木さんに似てるとも言われます。上記の二人同士が似てるとあまり思わないです。そこで自分がどちらに似ているのか、はたまた他に似ている芸能人がいるのか機械学習的なやつでハッキリさせてやろうと思いました。

数年ぶりに会った失礼な友人からです。

と思ったら、便利な世の中でして、GoogleAPIで画像を投げたらそれにちかしいものを返してくれるものが既にありました。 https://cloud.google.com/vision/docs/detecting-web?hl=ja

このAPIを使って自分の画像を投げたら似ている芸能人を教えてくれることを期待しています。

ソースコードはこんな感じ

get_env.pyファイル

dotenvについての使い方はこちら APIキーを見せずにpushできるpython-dotenvを使ってみた https://yoshitaku.net/2018/03/31/396/

import os
import os.path
import dotenv

dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
dotenv.load_dotenv(dotenv_path)

API_KEY = os.environ.get("ENV_KEY")

vision.pyファイル

import base64
import json
import requests

import get_env

bin_captcha = open("yoshitaku.jpg", 'rb').read()
str_encode_file = base64.b64encode(bin_captcha).decode('ascii')
str_url = "https://vision.googleapis.com/v1/images:annotate?key="
str_api_key = get_env.API_KEY
str_headers = {'Content-Type': 'application/json'}
str_json_data = {
    'requests': [
        {
            'image': {
                'content': str_encode_file
            },
                'features': [
                    {
                        'type': "WEB_DETECTION"
                    }
                ]
            }
    ]
}
response = requests.post(str_url + str_api_key,
    data=json.dumps(str_json_data),
    headers=str_headers
)
json_response = json.loads(response.text)
print(json_response["responses"][0]["webDetection"])

送った画像はこちら(白枠はなし)

返ってきたのはこちら

{'webEntities': [{'entityId': '/m/06ntj', 'score': 0.8901126, 'description': 'Sport'}, {'entityId': '/m/03x045', 'score': 0.7374585, 'description': 'Team sport'}, {'entityId': '/t/29syjjvbyn_rl', 'score': 0.7067}, {'entityId': '/m/0gl2ny2', 'score': 0.64155483, 'description': 'Football player'}, {'entityId': '/m/02vx4', 'score': 0.6196, 'description': 'Football'}, {'entityId': '/t/21vq7mhwrfsty', 'score': 0.5768}, {'entityId': '/m/02vzx9', 'score': 0.5675505, 'description': 'Player'}, {'entityId': '/m/018tl7', 'score': 0.5451121, 'description': 'Competition'}, {'entityId': '/m/011l78', 'score': 0.5430361, 'description': 'Team'}, {'entityId': '/m/020m7t', 'score': 0.5402399, 'description': 'Ball game'}], 'visuallySimilarImages': [{'url': 'https://www.gannett-cdn.com/-mm-/d6aadd8065c265d807c7d2692cc635d7e35332c0/c=0-235-1360-2048&r=537&c=0-0-534-712/local/-/media/2018/04/13/TennGroup/JacksonTN/636592306429549551-Paige-Hampton.JPG'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/3/3f/Cech_-_2015_Emirates_Cup.jpg'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Conor_O%27Brien_%28soccer_player%29.jpg/220px-Conor_O%27Brien_%28soccer_player%29.jpg'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Kara_Mbodj.jpg/220px-Kara_Mbodj.jpg'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Youssef_Toutouh.JPG/220px-Youssef_Toutouh.JPG'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/Kingsley_Coman_Training_2017-03_FC_Bayern_Muenchen-2.jpg/220px-Kingsley_Coman_Training_2017-03_FC_Bayern_Muenchen-2.jpg'}, {'url': 'https://www.irishtimes.com/polopoly_fs/1.3319494.1512678148!/image/image.jpg_gen/derivatives/box_620_330/image.jpg'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/bd/Sean_Murray_watford_2014.jpg/220px-Sean_Murray_watford_2014.jpg'}, {'url': 'https://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Carl_Ikeme.jpg/200px-Carl_Ikeme.jpg'}, {'url': 'https://media.npr.org/assets/img/2015/11/25/cam-ron-12_sq-e466054e25e80550d4f73f281348433f7567a1e3-s300-c85.jpg'}], 'bestGuessLabels': [{'label': 'player'}]}

画像のURLはvisuallySimilarImagesに入ってるっぽいですね! これらが似ているやつかぁ

なんか思っていたのと違う

ちゃんとドキュメントを読みました。

ウェブ エンティティ検出ベータ版機能  |  Google Cloud Vision API ドキュメント  |  Google Cloud

最良の推測ラベル: ウェブ エンティティ検出リクエストには bestGuessLabels リストが含まれ、画像の内容を最もよく表すラベルを提供します。

確かにレスポンスの最後にラベルがありました。'bestGuessLabels': [{'label': 'player'}]という記述が。自分の画像を送って、一番特徴あるもの・こと(今回はplayer)を抜き出して、その特徴に近い画像を取ってきてくれるんですね。勉強になりました。

しかし、ブラウザのGoogleから「player」「Sport」「Football Player」を調べても

「player」の結果

「Sport」の結果

「Football Player」の結果

同じものは出てきません。このあたりどうなっているか気になりました… あとは、この機能はどういうことを想定して作られたんだ?自分の想像力が足りない…


本題に戻すと、自分が誰に似ているのかはAutoML Visionを使うと良さそうです。
https://cloud.google.com/automl/ http://www.atmarkit.co.jp/ait/articles/1801/30/news020.html

2018/4/22時点で日本では展開されていないようです。AutoML Visionは自分でテストデータを用意して、Google上で学習させて機械学習によるオリジナル識別器を作れるようです。 下のURLはラーメン二郎41店舗を機械学習し、どの店舗で作られたラーメンなのか見分けられるようです。精度は94.5%。す、すごい…
ラーメン二郎とブランド品で AutoML Vision の認識性能を試す

Googleで検索したところ、似ている芸能人を探すアプリってあまり良いのが無いようで、AutoMLを使って作ってみようかなと思いました。

たまには、やってみたけど失敗・うまくいかなかったネタでした。

FEARLESS CHANGEを読んだ

omoiyari.fmと言うPodcastで面白かったエピソード#22 「Trello があるので眠れない」を聞き直したところ、新しい発見がたくさんありました。Podcastは楽しいですね。自分でも配信したいなって思います。

この聞き直した中で、FEARLESS CHANGEが紹介されていました。4月に入って社内の働き方改革のメンバーに立候補したこともあり、組織やグループにアイデアをどう広めるのがいいのか知見が欲しかったので読んでみました。

Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン

Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン

社内でやりたいこと

読んだ感想とか共感した部分を書いてみたいのですが、その前に社内でやってみたい変えてみたいと思っていることを上げてみます。働き方改革とは少し趣向が違いますが、内部をこう変えていってみたいという思いで書いてみます。 - redashの導入 - crowiの導入 - ブログ執筆習慣の定着

見える化とか、アウトプットする土台作りが多いかな。 redashで社内を可視化していきたいです。出せない数字とかもあるかもしれないですが、すぐに見れる環境があることに寄って、そこから議論が始まっていけばいいかなって思いました。

crowiに限らず社内wikiは絶対に導入した方がいいと思っています。エクセルやパワーポイントはまず作成するのがめんどくさい、フォーマットが統一されない、みるときも開く手間が増えるし重いしで良いこと無いんじゃないかなって思ってます。資料作ったとしても見てもらえなければしょうがないので、みることに対するハードルを少しでも下げていきたいです。最近学んだことをアウトプットしてくれる人が出てきたので、そのアウトプット先を変えていきたいなって思います。

ブログ執筆習慣の定着は、各部署単位などで週1ブログを書いていきたいですね。 ブログ書いてアウトプットすることによって他部署の人がやっていることやどんなことに興味があるのかわかるので良いんじゃないかと思っています。


イデアを組織に広めるための48のパターンから共感したところと新たに知識として得られたところをメモしておきます

読んで共感したところ

9.何かを食べながら

食べ物を持ち込んで、いつもの集まりを特別なイベントにしよう

確かに特別感が出る!!!毎日どこかで開催されている勉強会では必ずと言っていいほど食べ物が出されますよね。これはすぐ実践できると思うし、半期の全社会でやるように提案してみよう!

10.電子フォーラム

もっと話を聞きたい人のために、電子掲示板・グループメールアドレス・メーリングリスト・書込み可能なウェブサイトを用意しよう

グループを作るのって大切。気軽に聞ける場があると精神的なハードルも下がりますしね。けど、新しく入って来る人が既存のグループに入るのって結構ためらうと思うから、オープン感をどこまで提供し続けられるかってのも大切だと思う。

17.やってみる

新しいアイデアに関する話を広める前の準備段階として、まずは自分の仕事に使ってみて、そのアイデアの利点と限界を見極めよう。

プライベートでも「何か新しいことをしたい」と相談された時、まずは自分でやってみたら?と返します。自分がやってもいないことに他の人が付いて来ると思わないし...

18.感謝を伝える

感謝の気持ちを表すために、あなたに協力してくれたすべての人に、できるだけ誠実に「ありがとう」と言おう。

何にでも通ずることです。忘れずに生きたい。

19.次のアクション

イベントの最後の方で、新しいアイデアに対し、参加者が次に何ができそうかを確認する時間をとろう。

これをやらないで終わってしまう会があるので、意識的に最後に話すようにしています。「誰が何をいつまでにするのか」これをやるかやらないかで、次の集まりが開催されるかされないかの率に差が出ると思います。というか、やらない意味がわからない。

25.勉強会

あるトピックについて継続的に探求したい、学びたい同僚を集めて、小さなグループをつくろう。

同僚に限らず、社内外でたくさん作る・入るべきだと思います!所属するだけはダメですけど、所属しないよりはマシ!RPAの勉強会に行った後、たくさんの人に勉強会の存在をアピールしました!

41.勢いの持続

組織内で、新しいアイデアに対する興味を持続させる、という現在進行形の仕事に積極的にアプローチしよう。

19にも通じますね。いろいろ悩んではいるけど、ブログを続けられているのは新しいことに積極的にアプローチしているからかな。

47.お試し期間

組織が新しいアイデアの導入に前向きではない場合、少しの間だけ試験的に使ってもらい、その結果を観察することを提案しよう

17に通じますね。まずはトライしてみる。そして、そのハードルを下げてみる。自分が提案したいいくつかのことにも、お試し期間を設けて使っていってもらいたいなぁ。そして、周りの人を惹きつけるためにも、自分が使っていかないといけないなぁ。

読んで得た新しい気付き

21.便乗

新しいものを導入する戦略が障害にぶつかったときは、組織の慣習に便乗する方法を探そう。

変えないとって思うと180度一気に変えないといけないイメージを持っていました。けど、それは間違いなんだなぁ。今現在の状態から10度ずつ変えていって結果的に180度変わることもあるし、そういう視点も大事ですね。

24.定期的な連絡

一度キーパーソンに支援を求めたら、彼らのことを忘れてはならないし、あなたも彼らに忘れられないようにしよう。

継続性ですね。自分は頼られたら嬉しくなってしまうので、なるべく連絡を自分から取るようにしています。しかし自分からキーパーソンへはどうだろうか...もう少し積極的にやり取りしてみます。

36.場所重要

割り込みが入ってイベントの流れを断ち切られる自体を避けるために、仕事の現場を離れて重要なイベントを開催してみよう

全社会も自社内でやれば会場費かからないしいいんじゃないかと思っていたので、新しい視点でした。割り込み処理を避けるって発想ですね。特別な場での一体感も生まれるしいいんだろうなぁ。自分主催でのイベントの時も場所の選定気をつけたいと思います。

39.相談できる同志

厳しい状況のとき必要以上に落ち込まないよう、新しいアイデアの導入で、同じように困っている人達と話す機会を見つけよう。

社内の人と話すのは避けていたのですが、1.2年たくさん関わるように視点を切り替えてみました。そうすると相談できる同志がたくさんできてよかったです。必要以上に落ち込まないストッパーのように使わせていただくって視点はなかったし、自分もそういう役割になって生きたいなって思いました。

44.懐疑派代表

あなたのアイデアに懐疑的なオピニオンリーダーに「公式な懐疑派」の役割を演じてもらうよう、協力をお願いしよう。彼らの懐疑的な姿勢を変えられないとしても、あなたの取り組みを改善するために、その意見を活かそう。

反対派は嫌いじゃないですが、ダメなところだけをいうのって本当にやめて欲しいので嫌いです(どっちだ。

この部分を読んで考え方が変わりましたね。懐疑派代表って言葉いいなぁ。社内で愚痴が多くなってしまう人もこういう役割に任命してやってもらったらもっともっと良くなるのかなぁ。反対派と話すの怖いですけど、意見に反対なだけであって自分が嫌いなわけでは無いと強く思って、接していきたいなと思います。

46.恐れは無用

抵抗勢力を新しいアイデアの強みに変えよう。

44と同じですね。新しいアイデアの強み。ふむふむという感じです。反対意見と戦うのではなく、排除するわけでもなく、取り入れてアイデアを強くしていきたいと思います。

まとめ

  • FEARLESS CHANGEを読みました

  • 組織を変えていく上での為になるパターンがたくさんありました

  • 定期的に読み直して、実践できているか確認しチューニングしたいと思います!

  • コメントとも照らし合わせていきたいです!

  • 実践してこそ

わかばちゃんと学ぶGoogleアナリティクスを読んだ

2018年に入ってちゃんと技術ブログを始めてから、このブログにもGoogle Analyticsを導入しています。記事を書いて、アクセス数が増えて、それが目に見えて…となると嬉しいですからね!けど、正直なところGoogle Analyticsでやっているのはそれだけ。やっぱり使いこなせていない…やるからには使いこなしたい…そう思っていたらいい本がありました。

湊川あいさんのわかばちゃんと学ぶGoogleアナリティクス

このわかばちゃんシリーズ他にもGitとWeb制作があります。Gitの時にシリーズの存在は知ってはいたのですが、実際に手に取るのは初めてでした。初学者にとっては非常にありがたいことに漫画・イラストが多いです。みんな漫画大好き。文章の説明も非常に丁寧で読みやすいです。

本書の構成

  1. アクセス解析って何?
  2. Googleアナリティクス・Googleタグマネージャーを導入しよう
  3. 基本的な単位・見方を知ろう
  4. ユーザーの動向を知りたい
  5. 集客を強化したい
  6. コンバージョン率を上げたい
  7. 日々の解析をもっとラクにしたい

10章以上あったりするとそれだけでもグッタリするので、7章っていいですね。1日1章でも一週間で読めてしまいます。自分にとっては、1.2章はサラッと読み流せました。なんとなくアクセス解析についての事前知識があったのと、既にGoogleアナリティクスを導入していたからです。3章は用語の解説。4章5章6章は実践的な話ですね。7章は更にラクに便利に使いこなすには?というTipsでした。

自分でやってみて

本を読みながら作ってみました。データは3月のデータだけで絞ってあります。

新規とリピーターのグラフ

f:id:yoshitaku_jp:20180601115505p:plain

f:id:yoshitaku_jp:20180601115509p:plain

チャネル

f:id:yoshitaku_jp:20180601115456p:plain

検索クエリ

f:id:yoshitaku_jp:20180601115514p:plain

参照元ソーシャルネットワーク

f:id:yoshitaku_jp:20180601115500p:plain

コレだけでもいろいろ活かしていけそうです。

軽い自己分析をすると…

良かったところ

3月は勉強会のレポート記事を、運営の方に拡散していただけたり、connpassの資料ページに張ったり、facebookのグループページに張ったりしてアクセス数が伸びました。

yoshitaku-jp.hatenablog.com

運営の方々にも大変ありがたられて、自社の人にも自分が勉強会に行っていることやブログを知っていただけて嬉しかったですね。信頼残高が10ぐらい上がった気がします。

良くなかったところ

気になるのは検索での流入が少ないところですね。「adrsir」という、raspberry piに付ける赤外線リモコンの記事が少し検索していただけるよう。20180408時点で「adrsir」で調べても2ページ目に出てきますね。嬉しい。自分が使おうと思っても記事が出てこなので困ったなぁと思っているうちに、「自分が困っているってことは別の人も困っているかもしれないから、自分がわかったことは書いておこう」と思ったのです。誰かの役に立っていて嬉しいです。

本の中でタメになったところ

  • 2章の中の意外と盲点! 自分自身のアクセスを除外する方法
    • 幸いにも本を読む前に「自分のアクセスは弾かないんといけないんじゃない?」と気づけたけど、知らない人がいたらわかばちゃんと同じでアクセスが増えることに喜びを感じてしまいそう
  • 3章の基本的な単位・見方を知ろう
    • ページビュー数・セッション数・ユーザ数の違い
    • 直帰率と離脱率の違い
    • ディメンションと指標の違い
      • どれも、わからないまま放置していたけど、本を読んでスッキリしました!
  • 7章の日々の解析をもっとラクにしたい
    • 「マイレポート」で日々のチェックをらくにしよう
      • わかばちゃんとおなじで、ぽちぽちアナリティクス内を巡回するのがめんどくさいので助かった笑
    • 「カスタムアラート」で注目している指標の変化を察知しよう
      • やっぱりアクセス数が増えていると嬉しいので、アナリティクスを見にいってしまうんですよね。これは閲覧回数を減らす意味で非常に重要かも
      • とりあえず、アラートを貰ってみないとしょうがないので、セッション数100・500・1000刻みでアラートを設定してみました。
    • Googleデータスタジオ」でデータを可視化してみよう
      • こんなのがあったなんて知らなかった!!!ビジネスインテリジェンスツールですね!これも触ってみて、感想をブログに書こう…

個人的に欲しかった情報

ブラウザとアプリでレポートの連携はできないのかなってところですね。日々の業務でGoogleアナリティクスを使っているわけではないので、出先からアクセス数をみることが多いです。=モバイルアプリやタブレットから見る機会ですね。ブラウザで頑張ってレポートを作成したけど、アプリから見てみたらなにもなく…どこかに連携できる設定があるのかな。連携ができないにしても、アプリでの設定方法とかこんな風にすると見やすいですよ!とかあったら嬉しいです!

まとめ

  • わかばちゃんと学ぶGoogleアナリティクスを読んだ
    • わかばちゃんと学んだ
    • 他のシリーズも読んでみたくなった
  • Googleアナリティクスを使って、自分のブログの中でどんな記事が喜ばれているのかを知るきっかけが掴めた
  • もっとブログ頑張ろうって思った!!!

3月を振り返って

3月の活動の振り返り

1月はこちら

yoshitaku-jp.hatenablog.com

2月はこちら

yoshitaku-jp.hatenablog.com

週1回ブログを更新する

継続できています!!! しかも地味に週2回に移行しています。

毎月ひとつ新しいことをやるプロジェクト2018年3月版:将棋

yoshitaku-jp.hatenablog.com

ラズベリー・パイ専用 学習リモコン基板 ADRSIRの使い方

yoshitaku-jp.hatenablog.com

OSS Gateワークショップに参加して、RedashにPullRequestを出しました

yoshitaku-jp.hatenablog.com

画像処理ライブラリOpenCVを使って、画像からレシートを切り出してみた

yoshitaku-jp.hatenablog.com

プログラマのためのDocker教科書を読んだ

yoshitaku-jp.hatenablog.com

Google Cloud Vision APIを使って、トリミングしたレシートから文字を取得してみた

yoshitaku-jp.hatenablog.com

自動化しよう! / RPA勉強&LT会!RPALT vol1に参加してきた

yoshitaku-jp.hatenablog.com

1番アクセスが多かったです!ありがとうございます!

APIキーを見せずにpushできるpython-dotenvを使ってみた

yoshitaku-jp.hatenablog.com

iPhoneのアクティビティを毎日閉じる

継続中!

週1冊本を読む

現在資格試験の勉強にシフトしているのでお休み中。。。

まとめ

  • 3月を振り返りました。

APIキーを見せずにpushできるpython-dotenvを使ってみた

GCPを使ったプログラムを書いていて、APIキーをべた書きせずにGitHubへpushしたいなぁーってとき使えるものを見つけたのでブログに書いておこうと思います。

python-dotenvです。
https://github.com/theskumar/python-dotenv

環境

  • Python3.6.4
  • python-dotenv==0.8.2

準備-mac

# 仮想環境を作成
python -m venv dotenv-demo

#仮想環境の立ち上げ
cd dotenv-demo
source bin/activate

#python-dotenvのインストール
pip install python-dotenv

.envファイルの作成

echo "ENV_KEY=1234567890" > .env

ここからさらに、「get_env.py」「main.py」を作成します。 ファイル名は特に指定がありませんので、お好きな名前で大丈夫です。ここではmain.pyから、

.envから値を取得する「get_env.py」ファイル

「get_env.py」は.envファイルから値を読み込みます。os.path.join(os.path.dirname(file), '.env')で、「get_env.py」の相対パスを取得し、joinで「.env」ファイルを指定します。dotenv_pathに格納された.envファイルのパスを元に、load_dotenvでファイルの中身を読み取ります。

import os
import os.path
import dotenv

dotenv_path = os.path.join(os.path.dirname(__file__), '.env')
dotenv.load_dotenv(dotenv_path)

API_KEY = os.environ.get("ENV_KEY")

実行「main.py」ファイル

「main.py」は本当にシンプルな作りにしました。複雑にしすぎると自分もわからなくなるので笑

import get_env

print(get_env.API_KEY)

実行

(dotenv-demo) yoshitakuMBA:dotenv-demo yoshitaku$ python3 main.py 
1234567890

無事に.envファイルの中の値が取得できています!

まとめ

  • python-dotenvを使いました
  • .envファイルを通して、API KEYをファイルに書かない方法を学びました

.envファイルをGitHubにpushしては意味が無いので、ちゃんと除外しておきましょう… README.mdへは、.envファイルへの記述方法も忘れないように。 .env.sampleと書いて、わかりやすいようにしておくのがいいみたいですね!

自動化しよう! / RPA勉強&LT会!RPALT vol1に参加してきた

f:id:yoshitaku_jp:20180601160615p:plain

RPA勉強&LT会!RPALT vol1@Innovation Space DEJIMAに行ってきました。 IoT系でお知り合いになった、チャラ電さんが面白いことを始めていたので気になって飛び込んでみました。 結果的に非常に満足度が高く、RPA自体が盛り上がり始めている段階なので、LTの内容からも試行錯誤している感じが逆に面白かったです! 勉強会&LTの内容を自分なりにメモしていたので、ブログに残しておきます! 間違った情報などありましたら、是非ともご連絡をお願いいたします。プレゼンを聞きながらメモをしていましたので、抜け落ちてる情報もありましたら是非ともご連絡を…

チャラ電さんのお話

RPAコミュニティに対する思い

勉強会1 井出拓人さん

  • @kevin_hhsh020
  • 初心者向けRPA
  • RPAの社会的背景
  • RPA概要
    • 得意な領域
      • 定型的な業務処理
    • 現状
      • クラス1にいる
      • ITPro RPAツール
  • UiPath
    • デモ
    • ルーマニア発のスタートアップ
    • 軽量な実装
    • 無料のおためしもあるので、初心者にもオススメ!
  • 最近のRPAの動向
    • アビームコンサルティングによると導入の数が上半期月に35件から下半期月に40件へと増えている
    • automation anywhere
    • RPAホールディングスがマザーズ上場
      • 市場としても期待されている

感想

RPA業界の現状を簡潔に説明、かつ初心者にオススメなUiPathの説明とデモでわかりやすかった。 スライドに文字がたくさん書いてあるので、プレゼン中に読むことは難しかった… 資料としてはありがたい!

勉強会2 青野さん

  • 合同会社ブルーフィールド 代表
    • 不動産システムの一環でRPA
  • 使われ方
    • ECサイトで競合承認の値段を調べて、こちらも変える
    • 登録情報のNGワードチェック
    • こういう可能性は?
      • クレジットカードの引き落とし日チェック
      • FACEBOOKにログインし、誕生日おめでとうコメント
  • デモ
  • 実際に開発してたら困ったことないですか?
    • ショートカットキーをうまく使うことも考えていきましょう
      • 次のアイテムに行くには?
        • TABキー
      • ブラウザを閉じるには?
        • contorol + w

感想

デモが見れなかったのは残念…しかし、こういうこともありますね。 しかし、さすが関西人といったプレゼンで引き込まれるプレゼンでした。 最後の共有事例がありがたく、実際に自分が使うコマンドを使うこともできるという発想の転換はなかったです。

スポンサーLT 川又さん

  • 株式会社forkwell
  • キャリアアップできるエンジニア・できないエンジニア
    • できるエンジニアの特徴
      • 市場の評価と社内の評価が同じぐらい
    • なぜ差が出るのか
      • 市場の評価が見えにくいから
    • 市場の価値を確かめるには?
      • 勉強会や懇親会への参加
      • でも24時間参加するのは無理なので、スカウト

感想

2000円が欲しいので登録しました 社内での価値と市場の価値など参考になりました。 評価って難しいですし、自分自身もちゃんと評価されているのか不安だったので興味を持って聞けました。

高松さん

<資料が上がりましたら、差し込みます!>

  • あるRPA案件のまなび
  • KSK AI推進室
    • 交通費申請の事務作業削減の案件
      • 削減効果が出なかった
        • 1人月を見込んだが、2人月
        • 提携作業と聞いたが、結構属人的だった
        • 3000件を2週間の仕事はそんなにきつくない=RPAする必要もない?
        • ツールのライセンス費用
      • 次はどうするか
        • 観察とヒアリングで業務分析を徹底する
        • 作業の目的を見つめ直すと、オペレーションやoutputを変更するべき点が見える
      • その他
        • WinActorはgit管理ができないので修正箇所の共有が難しい

山下 光洋さん

https://www.slideshare.net/mitsuhiroyamashita90/seleniumphantomjsrpalt-vol1-lt?ref=https://rpacommunity.connpass.com/event/80348/presentation/

  • 【非RPA?】SeleniumとPhantomJSで自動化サーバーレス
  • トレノケート株式会社
  • よく使うツール
  • コレまでやってきた自動化
    • 画面からデータを読み込んでデータベース化
    • データベース間の連携
    • 個人情報の名寄せ
    • メール報告
    • DM送信
    • イレギュラーのパラメータ化
    • 祝日の自動取得
    • サーバの自動起動・停止
    • OCR(諦めた
      • なんで諦めたのか気になった…
  • デモ

感想

様々なことに挑戦していらっしゃいましたが、OCRだけは諦めたそうで理由は懇親会で聞けました。 自分も壁にあたっている、紙を読み込む際に自動化する部分が、うまくいかないそう。カメラを用意していても、紙を送る作業だけはなかなか自動化できない。 書籍の自炊作業をした時に使った、scansnapなんか使ったらいい感じになるのかな。自分でも調べてみます。

高橋 克己さん

  • TwilioでRPAしちゃうぞ
  • KDDIウェブコミュニケーションズ
  • Do you know Twilio?
    • 今日は6割ぐらい?
      • 手を上げててまわりが見れず笑
  • 電話取りたくないから、Twilioにしてもらう話
    • 今日はLive Cording無し!!!
      • 今のところ個人的に0/2会なのでめちゃくちゃ残念。
    • デモ

感想

ライブコーディング見れなかったのが本当に残念…

呉さん

<資料が上がりましたら、差し込みます!> - 総括 - RPAコミュニティを作った思い

リアルタイムアンケート結果

懇親会

皆さん楽しんでました

まとめ

自分は「なんか面白いことが始まったから行ってみるか~」程度だったのですが、第1回目の勉強会にしては一般参加者118人でしたし、connpassメンバー247人、FBグループ141人(2018/3/30現在)と非常に注目されているんだなと感じました。それだけ、働き方改革などで業務効率化などの声が上がり、どこの企業もなんとかしようと注目しているということでしょうか。「自動化」というワードには惹かれるものがあって、自分の中でも業務や私生活の中で自動化出来ることはないか考えてしまっています。特殊なツールを使うと思っていたのですが、山下 光洋さんの発表でSeleniumとPhantomJSでいろいろやれることもわかりましたし、何か自動化してみようかな…

AIとRPAで技術ブログ記事の自動化とか笑

おまけ

目黒川の桜です

Google Cloud Vision APIを使って、トリミングしたレシートから文字を取得してみた

前回からの続きです

yoshitaku-jp.hatenablog.com

Google Cloud Vision APIを使って、前回トリミングした画像に書いてある文字を取得してみようと思います。 OCRと呼ばれる技術を使うことで実現できます。

前回トリミングした画像です。 画像にある、「領収書」とか「購入金額」という文字を取得します。 どれぐらい正確にやってくれるものなのだろうか。

環境

  • Python3.6.4
  • certifi==2018.1.18
  • chardet==3.0.4
  • idna==2.6
  • requests==2.18.4
  • urllib3==1.22

準備

# 仮想環境を作成
python3 -m venv ocr-demo

#仮想環境の立ち上げ
cd ocr-demo
source bin/activate

# requestsのインストール
# requestsをインストールすれば、他のツールもインストールされます
pip install requests

# Python3の起動
python3

ocr-demo配下にトリミングしたreceipt_rect.jpgを配置します。

下は実際のソースコードです。 str_api_keyは、Google Cloud Visionで取得したAPIのKEYを設定しましょう。

import base64
import json
import requests

bin_captcha = open("receipt_rect.jpg", 'rb').read() #OCRにかけたい、ファイル名を指定
str_encode_file = base64.b64encode(bin_captcha).decode('ascii')
str_url = "https://vision.googleapis.com/v1/images:annotate?key="
str_api_key = "KEY"
str_headers = {'Content-Type': 'application/json'}
str_json_data = {
    'requests': [
        {
            'image': {
                'content': str_encode_file
            },
                'features': [
                    {
                        'type': "TEXT_DETECTION",
                        'maxResults': 10
                    }
                ]
            }
    ]
}
response = requests.post(str_url + str_api_key,
    data=json.dumps(str_json_data),
    headers=str_headers
)
json_response = json.loads(response.text)
print(json_response["responses"][0]["textAnnotations"][0]["description"])

出力されたコンソールの内容(最後のprint文だけになります)

前回トリミングした画像

すごい!!!!!!ほぼ正確に取れてます! 英語の全角半角ぐらいしか間違い(これを間違いとまで言っていいのか?)ぐらいしか無いのでは???

クラウドサービスでOCRの精度を比較しようとしたけど、ここまで正確だと比較しようのない気もしてきました。

まとめ

  • トリミングした画像から、文字を取得してみた。
  • 日本語でも100%に近い正確性で、画像の文字を認識できた。