ChinoDuino(Chino × Arduino)

自発性のないプログラマーがArduinoと出会って悪戦苦闘する様を綴っていく⇒今はいろいろ(^^;

Greengrass試してみたよ(chino × Greengrass)

AWS Greengrassを試してみようと思い、以下開発者ガイドに沿ってやってみたときの備忘録

docs.aws.amazon.com

【目次】

環境

やってみた感想など

  • Raspberry Pi のセットアップのやり方も書いてあり驚き!
  • Amazon EC2 インスタンスのセットアップがあったが、用途が理解できていない【要復習!】
  • Greengrass Core ソフトウェアをRaspberry Piへインストールするところが手間取ってしまった
    • でもインストール完了できれば、AWSコンソールからデプロイなどでき、ほぼRaspberry Piを触ることがなくなりそう
  • Lambdaで書いたソースがRaspberry Piで実行できることに驚き!
  • AWS IoT デバイス SDKより、AWS Greengrass コア SDKの方が簡単にpublishできた

Greengrass BlackBeltオンラインセミナー

こちら、すごく勉強になります

  • 一部内容を抜粋
    • LambdaはGreengrass用のLambdaを使用する
      • このLambdaには、long-liveモードという実行し続けられるモードがある
      • Python3系は非対応(TT)

aws.amazon.com

はまったところなど

sqlite3のインストール時

モジュール 1: Greengrass の環境設定 - AWS Greengrass

上記ページの「8.これで、AWS Greengrass の Raspberry Pi を・・・」の部分

  • エラー
pi@chinopi:~/greengrass $ sudo apt-get install sqlite3
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 sqlite3 : Depends: libsqlite3-0 (= 3.7.13-1+deb7u4) but 3.8.7.1-1+deb8u2 is to be installed
E: Unable to correct problems, you have held broken packages.
pi@chinopi:~/greengrass $
  • 解決策
pi@chinopi:~/greengrass $ sudo apt-get install libsqlite3-0=3.7.13-1+deb7u4
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  libsqlite3-dev
The following packages will be DOWNGRADED:
  libsqlite3-0
0 upgraded, 0 newly installed, 1 downgraded, 1 to remove and 99 not upgraded.
Need to get 415 kB of archives.
After this operation, 1,403 kB disk space will be freed.
Do you want to continue? [Y/n] Y
Get:1 http://mirrordirector.raspbian.org/raspbian/ wheezy/main libsqlite3-0 armhf 3.7.13-1+deb7u4 [415 kB]
Fetched 415 kB in 5s (70.1 kB/s)      
(Reading database ... 187757 files and directories currently installed.)
Removing libsqlite3-dev:armhf (3.8.7.1-1+deb8u2) ...
dpkg: warning: downgrading libsqlite3-0:armhf from 3.8.7.1-1+deb8u2 to 3.7.13-1+deb7u4
(Reading database ... 187746 files and directories currently installed.)
Preparing to unpack .../libsqlite3-0_3.7.13-1+deb7u4_armhf.deb ...
Unpacking libsqlite3-0:armhf (3.7.13-1+deb7u4) over (3.8.7.1-1+deb8u2) ...
Setting up libsqlite3-0:armhf (3.7.13-1+deb7u4) ...
Processing triggers for libc-bin (2.19-18+deb8u10) ...
pi@chinopi:~/greengrass $ 

バイスAWS Greengrass起動時

  • エラー
pi@chinopi:/greengrass/ggc/packages/1.5.0 $ sudo ./greengrassd start
Setting up greengrass daemon
Validating hardlink/softlink protection
Validating execution environment
Found cgroup subsystem: cpuset
Found cgroup subsystem: cpu
Found cgroup subsystem: cpuacct
Found cgroup subsystem: blkio
Found cgroup subsystem: devices
Found cgroup subsystem: freezer
Found cgroup subsystem: net_cls

Starting greengrass daemon
Greengrass daemon 3824 failed to start
[2018-04-14T11:02:57.600941406Z] Failed to invoke PutLogEvents on local Cloudwatch, logGroup: /GreengrassSystem/certmanager, error: RequestError: send request failed
caused by: Post http://localhost:8000/2016-11-01/cloudwatch/logs/: dial tcp 127.0.0.1:8000: getsockopt: connection refused, response: {

}
[2018-04-14T11:02:57.768114857Z] Failed to invoke PutLogEvents on local Cloudwatch, logGroup: /GreengrassSystem/syncmanager, error: RequestError: send request failed
caused by: Post http://localhost:8000/2016-11-01/cloudwatch/logs/: dial tcp 127.0.0.1:8000: getsockopt: connection refused, response: {

}
・・・・・・
  • 解決策

https://forums.aws.amazon.com/thread.jspa?threadID=264348

上記を参考に、デバイス側で以下コマンドを実行

$ sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel

SORACOM Technology Camp 2018 参加記録

先月の26日に開催された SORACOM Technology Camp 2018 の参加記録です。

technology-camp2018.soracom.jp

トラックB IoT つないだ、その後に 〜be connected 〜 」側の発表を聞いていました。
試作から量産へ意識することや、デバイス管理、セキュリティなど、自分が知りたかったこと、知らなかったことなど、すごく勉強になりました!
あと、サービスごとの繋がりもみえてきて、こちらも勉強になりました。

今後、勉強していくうえで、振り返りたいセッションを中心に書いていきます!

★全スライド、発表等は @ko2a さんがまとめてくれたこちらをどうぞ!
ありがとうございます!

qiita.com

B1. SORACOM を API で 256 倍使いこなす方法

www.slideshare.net

「邪眼」の小熊さんのセッションです
パケットをみていると怪しい箇所がみえてくるそうです
すごい!

  • APIでできること、APIの特徴など基本的なことから実際にコンソールで試しながらのセッションでした
  • SORACOM APIを呼び出しているUser Agentの円グラフなど興味深かったですw
  • イベントハンドラー、メタデータの詳細はみる
  • SIM注文のAPIのテストは SORACOM API Sandbox が便利

B2. 通信モジュール内蔵デバイス制作のための心構え

www.slideshare.net

高橋さんとSeeedの坪井さんのセッションです
ソフトのエンジニアとしては普段、触れることのないことばかりですごく刺激になりました!

  • seeedさんの製造サービスはいつになるかわからないけど注文してみたい
  • 試作と量産は違う!
    • Seeedさんはノウハウがいる!
      • リフロー時の注意点:捨て板、間隔、部品感の距離
    • 量産に役立つ試作!
      • 調達できない部品を使うのは工作!
      • 再現性が大事!
    • 既にPoCができている=実現可能なモノ
    • 予算感($20,000〜)
  • アフターフォロー
    • 利用シーンを意識する
    • 設置環境
    • セルラー通信は「手軽」だが「確実」ではない
      • 「無線」は「線が無い」ことを意識する
      • 有線ではない!
      • 事例:
        • 冬は通信できるのに夏になると通信できなくなる
          • →樹木に葉が茂る→葉の水分が電波を通しにくい
          • →乾燥剤いれる
        • 毎日同じ時間に通信できないことがある
          • →フェリーが通り、乗船者がいるため通信量が増えた

B3. SORACOMで実現するデバイス管理

www.slideshare.net

今井さんのセッションです
バイス管理については、今回一番知りたかったこと
実例とケーススタディの部分がワークフロー形式でわかりやすく勉強になりました

  • SORACOMの各種APIは「SIM(IMSI)」に対して行う
    • →このため、デバイスごとにSIMを挿したほうがよい
  • バイスとSIMのひも付け
    • Beamなら自動でできる!
  • バイスの初期設定&動作確認
  • 利用開始
    • イベントハンドラを使ってSIMが利用開始されたら→別のサービス(Lambdaなど)に通知などできる!
  • 証明書や鍵の安全な交換
    • 暗号化用の鍵となる
    • AWS IoTのクライアント証明書
    • Beam
    • Endorse(※これはまた詳しいことを調べよう)
  • 設定値やフェームウェアの更新
    • Lightweight M2M(SORACOM Inventory)
  • 異常を防ぐには
    • 用途以外の利用を制約する
      • IMEIロック
      • 閉域網を利用
    • 用途以外の利用を検知する
      • パケットを監視
        • Junction(Mirroring)

B4. 後手に回りがちなIoTセキュリティをどうすべきなのか

www.slideshare.net

java好きな片山さんと、福島さんのセッションです

  • Mirai http://techfactory.itmedia.co.jp/tf/articles/1704/13/news010.html
  • 設計時からセキュリティのことを考える!
  • 費用対効果の観点も必要
  • 前提として盗まれてもよい構成にしておく!
  • SORACOM にビルドインされた機能をつかう
  • 閉域網での接続
  • 通信の監視/検知
    • Junction → トラフィック分析
      • 主の機能
        • Inspection
        • Mirroring
        • Redirection
      • 出力結果をFunnalで特定のAWSサービスにおくるなど可
  • バイス側の認証/認可
    • IMSI、IMEIを紐付けて、別の通信モジュールを使わせなくする!
    • プライベートガーデン
      • Beam以外の通信を制限するなどに利用できる
  • SORACOMアカウントの保護
    • MFA機能
  • バイス自体の保護
    • 参考:Platform Security Architecture(PSA)
    • 今後は必要不可欠になりそう

それと「SORACOM UG Tokyo #10 / SORACOM Technology Camp 夜の部!!」

以前、SORACOM UG 信州 #2 に参加してくださった ぼへぼへ さんと会えるというびっくりがあったり
SORACOM UGのアイコンができましたー

作:くろにゃんこたん f:id:chinoppy:20180426184232j:plain:w500

それと @ko2a さんがUG 信州の活動報告をしてくれました(>_<) f:id:chinoppy:20180426184232j:plain:w500

ぜひ、また参加したいです!
ありがとうございました(>_<)

Raspberry Pi設定メモ

自分のRaspberry Piにした設定等を残しておくメモ(随時更新)

環境

Raspbianインストール後にssh接続

  • キーボード、ディスプレイがない場合は、SDカードをPCに接続し、「/boot」配下に「ssh」を配置
  • SDカードをRaspberry Piにいれ、起動
  • LANケーブルを接続して以下で接続
$ ssh pi@raspberrypi.local

GrovePiをインストール

# gitをインストール
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install git
$ cd

# clone
$ git clone https://github.com/DexterInd/GrovePi.git

# Firmwareアップデート
$ cd GrovePi/Firmware
$ sudo ./firmware_update.sh

# install
$ cd ..Script
$ sudo curl -kL dexterindustries.com/update_grovepi | bash

$ sudo shutdown -r now


$  sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- 04 -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         
$

wifi

sudo sh -c 'wpa_passphrase SSID PASS >> /etc/wpa_supplicant/wpa_supplicant.conf'

固定IPアドレス設定

$ sudo vi /etc/dhcpcd.conf

# 以下を追加し保存

interface eth0
static ip_address=192.168.0.10/24
# static routers=192.168.0.1
# static domain_name_servers=8.8.8.8

https://qiita.com/MarieKawasuji/items/b088ffb252a92eee8f5d

network のIFはこちらを変更

$ sudo vi /etc/network/interfaces

NTPサーバの変更

$ cd /etc/systemd/
$ pwd
/etc/systemd
$ ls -la
total 44
drwxr-xr-x  5 root root 4096 Sep  7 14:47 .
drwxr-xr-x 83 root root 4096 Sep  7 16:38 ..
-rw-r--r--  1 root root 1014 Jul  5 20:31 journald.conf
-rw-r--r--  1 root root 1022 Jul  5 20:31 logind.conf
drwxr-xr-x  2 root root 4096 Sep  7 14:59 network
-rw-r--r--  1 root root  642 Jul  5 20:31 resolved.conf
drwxr-xr-x 16 root root 4096 Sep  7 15:13 system
-rw-r--r--  1 root root 1601 Jul  5 20:31 system.conf
-rw-r--r--  1 root root  607 Jul  5 20:31 timesyncd.conf
drwxr-xr-x  2 root root 4096 Jul  5 20:31 user
-rw-r--r--  1 root root 1130 Jul  5 20:31 user.conf
$ sudo vi timesyncd.conf 

【timesyncd.conf】
・「NTP」「FallbackNTP」をアンコメントし、以下の内容とする
[Time]
NTP=ntp.nict.jp
FallbackNTP=0.jp.pool.ntp.org 1.jp.pool.ntp.org 2.jp.pool.ntp.org 3.jp.pool.ntp.org

timezon

$ timedatectl status
      Local time: Thu 2017-09-07 16:55:40 UTC
  Universal time: Thu 2017-09-07 16:55:40 UTC
        RTC time: n/a
       Time zone: Etc/UTC (UTC, +0000)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

# Network time on が「no」の場合は同期を有効にする
$ timedatectl set-ntp true

# timezone の変更
$ timedatectl list-timezones | grep Asia/Tokyo
Asia/Tokyo
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl status
      Local time: Fri 2017-09-08 01:59:33 JST
  Universal time: Thu 2017-09-07 16:59:33 UTC
        RTC time: n/a
       Time zone: Asia/Tokyo (JST, +0900)
 Network time on: yes
NTP synchronized: no
 RTC in local TZ: no

RAM領域を作成

# 現状(変更前)を確認
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  8.9G   20G  32% /
devtmpfs        426M     0  426M   0% /dev
tmpfs           430M     0  430M   0% /dev/shm
tmpfs           430M  6.0M  425M   2% /run
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
tmpfs           430M     0  430M   0% /sys/fs/cgroup
/dev/mmcblk0p1   63M   22M   42M  35% /boot
tmpfs            86M     0   86M   0% /run/user/1000
$ 
# fstabを変更
$ sudo vi /etc/fstab

# 以下4行を追加し保存
#### ramdisk
tmpfs           /tmp            tmpfs   defaults,size=32m 0       0
tmpfs           /var/tmp        tmpfs   defaults,size=16m 0       0
tmpfs           /var/log        tmpfs   defaults,size=32m 0       0

# 設定を反映のため再起動
$ sudo shutdown -r now

# 「/var/log」「/var/tmp」「/tmp」が「tmpfs」になっていることを確認
$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        30G  8.9G   20G  32% /
devtmpfs        426M     0  426M   0% /dev
tmpfs           430M     0  430M   0% /dev/shm
tmpfs           430M  6.0M  425M   2% /run
tmpfs           5.0M  8.0K  5.0M   1% /run/lock
tmpfs           430M     0  430M   0% /sys/fs/cgroup
tmpfs            32M  196K   32M   1% /var/log
tmpfs            16M     0   16M   0% /var/tmp
tmpfs            32M  8.0K   32M   1% /tmp
/dev/mmcblk0p1   63M   22M   42M  35% /boot
tmpfs            86M     0   86M   0% /run/user/1000
$

cron

# 1分ごとに実行
$ crontab -e

# 以下を追加し保存
*/1 * * * * python3 /home/pi/test.py

SQLAlchemyのインストール

SQLAlchemy - The Database Toolkit for Python

pipでインストールするとエラーとなってしまいできなかったので、ディストリビューションを使用してインストールしたときのメモ

# Pythonの仮想環境へインストールする場合はactivateしておく

$ cd /usr/local/src
# ファイルをダウンロード
$ sudo curl -L -O https://files.pythonhosted.org/packages/da/ef/f10a6892f8ff3c1fec1c25699a7379d1f72f291c8fa40b71c31cab3f779e/SQLAlchemy-1.2.6.tar.gz
$ 
$ sudo tar zxvf SQLAlchemy-1.2.6.tar.gz 
$ cd SQLAlchemy-1.2.6/
# インストール
$ python setup.py install
# 確認
$ pip freeze | grep SQLAlchemy
SQLAlchemy==1.2.6
$ 

SORACOM UG 信州 #2 とIoTの開発してみたよ

この記事は SORACOM Advent Calendar 2017 の17日目の記事です。

長野市にあるGEEKLAB.NAGANOというコミュニティスペースで管理やってますー

記事の内容について

昨日(12/16)、GEEKLAB.NAGANOで開催された「SORACOM UG 信州 #2」のことと、私が発表したIoTの開発のLTの内容を書きます!

SORACOM UG 信州 #2

前回の伊那開催からの2回目です!

f:id:chinoppy:20171217150207p:plain

SORACOM カラーでお出迎えです!

今回も

がきてくれましたー! 本当に遠いところありがとうございます。

オープニング

サンタ姿の発起人 @ko2aさんから

f:id:chinoppy:20171217141059p:plain

このあと、暑くて帽子脱いじゃいますがw

SORACOM 松下さんから

[IoT時代を生き抜くエンジニアに必要な技術とは](https://www.slideshare.net/SORACOM/soracom-ug-2-iot?utm_content=buffer4e490&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

例えがわかりやすくて、すごく勉強になりました!

「アイディア次第で勝負ができる環境が整っている」ってところはすごく実感してます。

それと、「器用貧乏」って言葉、ぐさっときました。。。

f:id:chinoppy:20171217144658p:plain

  • 新たな価値を生み出して収益増加
    • IoTってこの「新たな価値を生み出す」ってところ大事!
  • アイディア次第で勝負ができる環境が整っている
    • 本当にそう思います
  • エンジニアならSuicaの論文は読んだ方がよい

異種統合型情報サービスシステムにおける自律分散アシュアランス技術の研究 | 東京工業大学附属図書館 学位論文データベース

  • ピピンアットマーク
    • これ知らなかったです・・・(^^;
  • ハードウェアはサービスの部品の一つへ。価値は(見かけ上)限りなくゼロへ⇒ハードウェアは囲い込みに必要
  • クラウドエンジニアは生産性志向、ハードウェアエンジニアはH/W制約志向
  • バイスの「クラウド・ファースト」化
  • 200msの壁

t.co

  • 人間の歴史の中で、何かをはじめるのに今ほど最高の時はない
  • エッジ側でやることと、クラウドでやることを見極めてシンプルに実装する
深センに(弾丸で)行ってきたよ
  • 香港から深センへの交通手段
    • 電車(だいたいこれ)
    • フェリー(たいだいこれ)
    • バス(難易度:高)
    • リモ(相乗りタクシー)
  • オススメの交通手段:リモ
    • ドライブスルー感覚で国境を超えられる!
    • 注意!
      • シールなくすと乗れなくなるので失くさないでね
      • 定員(6名)揃わないと出発しない(朝ならだいたいすぐ集まるみたい)
  • WeChat Pay(必需品)したい場合はご連絡を!

Wio LTE ハンズオン

松下さん、UG 信州のフォローをもらいながら、Wio LTEハンズオン資料を進めました。

キット

f:id:chinoppy:20171216143819j:plain:w300

アンテナをつけるときはヒヤヒヤしました(^^;

f:id:chinoppy:20171217145746p:plain:w300

無事装着完了!

f:id:chinoppy:20171217145843p:plain:w300

みなさん、だいたいSORACOM Harvestのところまでは行けました(^^ でも、会場の位置的な問題か、なかなかオンラインにならず・・・またぎーらぼで試してみます(>_<)

LT発表

トップバッターは「ぼへぼへ」さんから
  • ソラコムデビューで学んだこと
2番手つとめさせていただきましたー
  • IoTの開発をしてみたよ
    • 3分の1を話したところでタイムアップ・・・
    • (そのまま話してしまいましたが・・・次は5分で収めます!(>_<))
3番手は「くろにゃんこたん」さんから
  • センサースケーリングの話

くろにゃんこたん.com

4番手は「kobayutapon」さんから
  • そんなデータで大丈夫か
    • センシングデータを公開することで罰せられる可能性があるのは知らなかった((((;゚Д゚))))ガクガクブルブル
    • マイナスの気温を測るのがすごく難しいということを知れました

クロージング

クロージングも発起人の@ko2aさんから。次回は2月〜3月中旬くらいですが、あくまでも予定ですー

ちなみに、松下さんのお話し、LTのお話しを聞いて、本当に技術、知識的にまだまだ未熟なところばかりだなぁっといつもながらに感じました・・・

いつも勉強になっています!(^^;

記念撮影

いつもの記念撮影!今回も「S」マーク+「SORACOM Beeeeeeeeeeeam」

f:id:chinoppy:20171217152754p:plain:w400

やばいSの字がちゃんとできていなかった・・・すみません(TT)

IoTの開発をしてみたよ

私が発表したLTのことを書いていきます!こまかな技術ややり方のことは、順々にQiitaに投稿していきます。

それと、まだまだ未熟なところばかりなので、こんなよいもの、技術ありますよってありましたら教えてください(>_<)

内容について

念願のIoT関係の開発をしましたので、その時に使った技術、ものなどをざっくりと紹介していきます!

ちなみにSORACOMのことが少なくごめんなさいです。。。

これから開発しようとしているひとなどの参考になれば幸いです!

まずは構成と私の担当

f:id:chinoppy:20171217165819p:plain:w300

遠隔地にある機器の状態や機器の周りの状況をセンシングしてAWSにアップするものです。

私が担当したのは、「Raspberry Pi」とAWS部分

  • Raspberry Piの役割
    • 機器の状態や周囲のセンシングデータはほぼArduinoで管理
    • そのArduinoからデータを取得し、AWSへアップする
  • AWS
    • 主にAWS IoT関係のところを担当
ハードについて
  • Raspberry Pi
  • センサー
    • レーザセンサ
    • 温度センサ
    • カメラ(可視光・赤外線)
  • 通信モジュール
    • SORACOM EC21-J
  • SIM
    • SORACOM A・・・ではないです(TT)
    • でも疎通時に使用しました!
    • コンソールでひと目でオンラインになったことが確認できて、わかりやすかったです!
  • Arduino
クラウド
使用したサービス

f:id:chinoppy:20171217160019p:plain:w300

  • AWS IoT
  • AWS IoTのルールで以下を使用
    • Lambda
    • DynamoDB
    • S3
    • IAM(STS
使用したパターンなど

こちらがすごく参考になりました!

www.slideshare.net

  • ラージデータアップロードパターン(P36)

  • バイスの証明書登録(P45)

    • バイス数が多くなるため、自動登録できるようにしました
  • モノの自動登録(これは自作)

    • バイスごとの独自の番号(ClientIDに使用)とデバイス証明書のIDを紐付けたかった
    • バイスの接続イベント(※)時にルールでLambdaを実行し、AWS IoTの「モノ」を自動作成、証明書へのアタッチを行うようにしました
    • クライアントの接続イベント(※)でClientIDと証明書番号がメッセージで受け取れる
    • ※「$aws/events/presence/connected/clientId」
  • センサデータなどの保存

    • これはAWS IoTのルールでDynamoDBへ保存

一日中、AWSを触れて幸せでした( ´∀`)

ソフト

本当にいろいろと便利なものがあり、開発中はずっと感動していました

f:id:chinoppy:20171217163539p:plain:w100

松下さんの言っていた「アイディア次第で勝負ができる環境が整った」と実感しました。

SORACOM Wio LTEも含めて、これからもいろいろ試していきます!

退屈なことをやらせてみた(Chino × Selenium)

サイトのSSL化対応があって、全ページで混合コンテンツ(Mixed Content)にならないことを確認しないといけなかった。。。

単純に「テストめんどくさいなぁ〜」って思ってSeleniumにやらせてみた話。

※本当に単純なことですが・・・(^^;

やらせてみたこ

  • テキストからURLを読み込む(1行に1URL)
  • ページをひらく(ブラウザはChrome
  • Developer Tools の「Console」に出力されるメッセージをprint

を繰り返し。これで、printされたメッセージに内に「Mixed Content」が出力されていなければOK!

こんなこともやらせてみた

  • 一応ログインもできる
    • インプットファイルでログインページのURLの次の行を以下とするとログイン
    • login,[アカウント],[パスワード]
    • ※でも入力対象の要素が固定指定なのでいまいち・・・
  • リンクのクリックもさせてみた
    • インプットファイルで以下とするとクリック
    • ◯,[URL],[クリックするリンクテキストorクラス名]

いまいちですけどソースはこちら

テストはあまり好きではないけど、何かツール使ったりすると、

  • その分時間短縮になるし
  • ツールのこと知れるし
  • コード書けるし

テストへのモチベーションがあがりますねー

参考サイト等

Selenium API(逆引き)

SORACOM UG 信州 #1(Chino × SORACOM UG)

昨日(9/23)、伊那で開催されたSORACOM UG 信州 #1 に参加しました!

soracomug-tokyo.connpass.com

SORACOM Airを使ったハンズオンをRaspberry Piを使ってやるということで、ホコリをかぶっているRaspberry Piをまた触るきっかけにしたいという思いもあり(^^

【目次】

会場

会場はADSL実証実験20周年を迎える伊那市伊那市有線放送 いなあいネットさん。

f:id:chinoppy:20170924175625j:plain:w300

SORACOMさんから

  • maxさん
    • SORACOMのことやLTのこと、いろいろとお話ししてくれました!(資料はこちら
    • それと僕は3月11日 JAWS-UGの転職発表の場にいましたw
  • なおさん
    • ハンズオンでいろいろとフォロー、SIMの説明などいろいろ教えていただきましたー

発起人

  • 沖さん
    • CoderDojo安曇野にも関わったり本当にいろいろと考えたり、している方。私はinahackでお知り合いになりましたー
  • 橋本さん
    • なにやらタッチパネルでおもしろいことを考えている方。信州ベンチャーコンテストで賞をとられたそうです!すごいっ!
  • 鄭さん
    • この方もいろいろしている方。本当にいろいろ。いろいろなことに通じていて、いろいろなことの黒幕らしい・・・( ̄ー ̄)
  • 宮下さん
  • 小穴さん

参加者

全員ではないですが、いろいろな方がいましたよw

  • 上田から原チャリで参加したおじいちゃん
    • イベント当日の朝5時くらいに「LPWA」などのキーワードで検索し、本イベントをみつけ参加
  • 富山から参加の会社員の方
    • なおさんが送っているDMメール?が送られてきて、「SORACOMってどんなものが」と思い参加したそうですw
  • 市議の方
    • 急遽、市議の方がきて、一緒にハンズオンしました。Raspberry Pi、超音波センサ、SORACOM使ってました。

ハンズオン

沖さん、maxさんのお話しのあと、

SORACOMのサービスは以下を使用し、ハンズオンしましたー

  • SORACOM Beam
  • SORACOM Harvest

ハンズオン資料はこちら

SORACOM bootcampという、技術者向けオンラインセミナーもあるそうです!うれしい(^^

LoRaWAN™ | SORACOM Bootcamp - YouTube

  • ハンズオンの様子

f:id:chinoppy:20170924193437j:plain:w300

  • 超音波センサ + Harvest

f:id:chinoppy:20170924193940j:plain:w300

ってことで

ハンズオン中に、AmazonUSBドングル注文しましたー

・・・次の日、キタ━━━━(゚∀゚)━━━━!!

f:id:chinoppy:20170924194532j:plain:w300

そして、早速、ほこりをかぶっていたchinopi(Chino の Raspberry Pi)に装着

f:id:chinoppy:20170924201118j:plain:w300

まだ、設定などしていないので、SORACOM Airで通信していませんが。。。少しずつだと思いますが、触っていきますー

maxさん、なおさん、沖さん、橋本さん、参加者の方ありがとうございました。ハンズオンを通して、SORACOMのサービスなど理解深まりました(^^ お疲れ様でした!次は◯ーらぼで開催予定です!

そうそう、最後に「SORACOM Beeeeeeeeeeeeam」で記念撮影しましたー

f:id:chinoppy:20170924202856j:plain

Chino × PyCon JP 2017 × CodeIQ

9月8日(金)、9日(土)に東京で開催された「PyCon JP 2017」

pycon.jp

9月16日(土)にこちらも東京で開催された「学びの秋!エンジニア最先端に触れて学ぶITフェス by CodeIQ #codeiq39」

atnd.org

に参加してきましたー

印象に残ったところを備忘録的に書いていきます!

【目次】

PyCon JP 2017 − OUTPUT & FOLLOW −

「Early Bird」のチケットは公開されてから数時間で売り切れになるなど、開催前から注目されていることを実感しました。

僕は今年で、3回目の参加になりますが、参加者も年々増加し、connpassの申し込み人数は620人?!

恒例の集合写真はこんな感じです(^^;

Pythonが注目されていることを再認識しました!

はじめてブース出展しました

今年は弊社「株式会社 日本システム技研(JSL)」のブースを出展しました!(スポンサーは去年から)

弊社からの参加者で順番にブース番しました。

  • なんで「Nagano」なんですか?
  • ポスターかっこいいですね
  • 私も長野出身なんですよー

など、声をかけてくれたり、ブースにたくさんの人が寄ってもらい本当に感謝です。

scouter / コンカツアプリ

出展したアプリです!

構成

f:id:chinoppy:20170918173148p:plain

scouter

こんな感じのアプリです

  • ソーシャルログイン
  • ログインしたソーシャルの情報からパワーを計測
  • ランキングにして、上位の方に長野っぽい景品があたる!
  • 計測時に付加されたIDをブースで伝えると、HoloLensでちょっといいものがみれます!

HoloLensの方が目立っていたかもしれませんが、サーバ側でDjangoを使ってます!

コンカツアプリ

こちらもこんな感じのアプリです

  • ソーシャルログイン
  • プロフィールを入力
  • そのプロフィールへのURLをQRコードで発行
  • 懇親会でQRコードをスキャンし、話しかけるきっかけに使う!

こちらもサーバ側でDjango使ってます!

いろいろとこれからもブラッシュアップしていきたいですが、、、弊社の説明などをしていると、時間的にひとつのアプリしか説明ができませんでした(^^; それと、やっぱり自社製品の出展もしたいなぁっと感じました(^^

基調講演、トーク

今回の基調講演はこちら

1日目はブース準備できけませんでした。。。2日目はきくことができ、大変勉強になりました。

Pandasコアコミッターが語る 今日から誰でも始められるOSS活動のススメ

タイトルの通り、これからOSS活動を始めたいひとにぴったりの内容でした。

  • 今日からできること:気になるプロジェクトをWathしてみる!
  • バグ以外にもドキュメント不備などもあり、すごく簡単なものからやってみる

など、わかりやすく丁寧な説明でわたし的には今回、一番勉強になりました。

ちなみにPandasは「2000」くらいissuesがあるそうです。。。

Issues · pandas-dev/pandas · GitHub

動画はこちら

youtu.be

トーク

今回、Pythonを使った仕事を始めて1年くらいになり、携わっている技術や興味のあるものを中心に聞きました。 が、、、やはり、まだまだ未熟でちゃんと理解できなかったところなどあるので、動画みたりしてまた調べたり試したりしていこう!

各基調講演、トークは以下でみれます!

PyConJP - YouTube

ポスターセッション

PythonBootCamp

今回のポスターセッションでは、6月にGEEKLAB.NAGANO(長野市)でも開催したPythonBootCampがでていました。

pycon.jp

そして、講師、スタッフ、各地のスタッフで記念撮影しました!

懇親会では、香川の現地スタッフの方が会いにきてくれたり、参加してくれた学生がPyCon JPにきてくれたり、普段、遠くにいる方たちと会えたりと、本当に長野市でも開催してよかったです(TT)

書籍

PyCon JPでは書籍販売もあり、サインもらえたり、特典がつくかも!Oreilly本も多数ありました!

他にも売っていましたが、2冊ほどご紹介

スラスラわかるPython

www.shoeisha.co.jp

はじめてプログラミングを学ぶ人向けで、難しいクラスの説明ははぶいているそうです!

Pythonをやりたいひと以外にも、Pythonでデータ解析とか、何かやるためにPythonの基本的なことを学びたい人にも最適だそうです!

Pythonエンジニア ファーストブック

gihyo.jp

開催中には買えなかったのですが、今回、ブース出展の用意などでいろいろと感じたことがあり、もう一度、基本的なことを、振り返ろうと思い買いました!第1章のPythonの動向については、なるほどーと思えることがあったりと楽しく読ませてもらってます!

今回は、ブースを出展したこともあり、前回より多くの方たちとお話しすることができ、とても刺激になりました。香川の方に会えたり、長野と沖縄の学生が出会ったりと、また来年、再開できることが楽しみです(^^ そして、長野の方もたくさん参加していることがわかりました。技術的に未熟なところばかりなので、基本的なところからやり直していこうと思いました(^^;

ちなみに、今、fitbitをつけているのですが、9月8日はずっと心拍数が高くなっていたことがわかりびっくりしました。。。(普段は60くらい)

f:id:chinoppy:20170918193835p:plain:w200

学びの秋!エンジニア最先端に触れて学ぶITフェス by CodeIQ #codeiq39

こちらは弊社がスポンサーとなり、ブース出展することになり、初参加。

ブース

出展するアプリ以外は、先週のPyCon JPと同じ。

伝説の剣で抽選会

のんのんびよりっていう、アニメの女の子がもっていた、伝説の剣(枝)を振ると、抽選し1位〜3位の方には景品ありです!はずれのひとは、うまい棒チロルチョコ

構成

f:id:chinoppy:20170918195413p:plain

  • MESHの動きタグがついている伝説の剣を振る
  • IFTTT経由でサーバ(Django)にPOSTして抽選!
  • 各アプリなどに抽選結果を連携
    • HoloLensでは順位を表示
    • タブレットに順位表示(firebase + vue)
    • 1位〜3位の場合はTwitterでツイート
    • 1位〜3位の場合はIFTTT経由でMESHのGPIOに通知を送り、モータを回して宝箱の鍵を解錠

モータで解錠の部分については、IFTTTからMESHへの通知でラグがあったり、モーターがまわらなかったりとちょっとシステム的に微妙になってしまった。。。抽選部分も微妙でした。。。

それでもいろいろな方に試してもらい、ひどいシステムと言われたりもしましたが、やっぱり展示するものは単純なものにして、わかりやすくすることは大事だぁっとPyCon JP時のときも含め思いました。自己満足はいけないですね(^^;

プログラムは聞きませんでしたが、有名な方のお話しが聞けたり、懇親会も豪華で無料のイベントなのはお得だなぁと思いました。でも、ちょっと豪華すぎて、有料にしてもよいのでは?とも思いました。その分、どこかにしわ寄せがいってしまうような気がしました。。。

次は技術的なブログを書こう(・・書けるかな・・・)