Androidのメモとか

ポキオの日記です。今日も遅延してない。

MacBook Air (Retina, 13-inch, 2018)との生活が始まった

やっとモデルチェンジ。

ポキオ MacBook Air Retina 2018

満を持してUnboxing

RetinaMacBook Air (13-inch, Mid 2013)を買ってから、ずっと愛用してきました。が、だんだんバッテリーが怪しくなってきて、一度交換したものの、それでもちょっと微妙な日々が続いていたので、早く買い替えたいなぁと思っていました。

ポキオ MacBook Air Retina 2018

とはいいつつも、新しいMacBook Airが出るみたいな噂が立っては空振りだったりの連続で、今回も半信半疑でした。でも、発表聞いて即注文余裕でした。

ポキオ MacBook Air Retina 2018

一番安い最小構成で注文、キーボードだけUSしてもらいました。

で、どうなの?

外観

小さくて軽くなりました。りんごは光りません。

モジャべにレチーナ

Mojaveいいですねー。Appearanceを無駄にDarkにして中2感をだしています。

ポキオ MacBook Air Retina 2018

そしてRetina、もうもとには戻れませんね。旧MacBook Airのディスプレイはもう見れないです。

Touch ID

普通に便利です。ログイン時のパスワード入力が不要になり素晴らしいです。ただ、すべてのパスワード入力が省略できるわけではなく、ちょっと面倒です。

キーボード

異様にキーストロークが短いですが、押し切ったときの感触が嫌いじゃないです。これもAppleの新時代のキーボードなんだと心に言い聞かせてタイプします。

Thunderbolt 3

いわゆるUSB 3.1 Gen 2とコンパチだったり、DisplayPortとしてもつかえる謎端子です。今後のApple製品と付き合っていく以上は、仲良くしていかなければなりません。

ポキオ MacBook Air Retina 2018

先日のウィングアークフォーラム2018での登壇の際に、非純正のHDMIアダプタが使えずアタフタしたこともあり、純正アダプタをポチりました・・・。そもそも仕様がよくわかってないのですが、あまり枯れた技術でもなさそうなので、ちょっと不安ではあります。

ポキオ MacBook Air Retina 2018

最近、百均でもTypeCグッズが充実してきたので、(なかには怪しいやつもありますが)今後はちゃんと流行っていくのかなと思います・・・。

SDカードスロット

そう、新しいMacBook AirにはSDカードスロットがありません。よくデジカメで写真を撮って、それをすぐMacで編集する身としては、地味に痛い変更です。カメラもThunderbolt 3で接続できればいいんですけんどね。

とはいえ

これが最新のApple製品で、これがAppleが進む道なのかなと思えば、黙ってついていきます。あーーー新しいラップトップ最高ーーーー。

ウィングアークフォーラム2018で話してきました

タメイケサンノー。

ポキオ 京急を止めるIoT ウイングアークフォーラム2018

ウィングアークフォーラム2018

出張版IoTLTというスロットで、LTしてきました。

www.wingarc.com

場所は溜池山王ANAインターコンチネンタルホテルでした。スーツ着用な参加者が多い中、Tシャツ・ジーンズという完全に浮いた格好で参戦してきました。

ポキオ 京急を止めるIoT ウイングアークフォーラム2018

毎度毎度のあるあるネタなんですが、登壇者として登録している名前がポキオなので、受付で「ポキオです、登壇者です」みたいな不思議なやり取りが発生するアレです。

ポキオ 京急を止めるIoT ウイングアークフォーラム2018 

もう、慣れましたけどね。

ポキオ 京急を止めるIoT ウイングアークフォーラム2018

そして、どうでもいいんですが、トイレのジェットタオルがDysonでした。無駄にガーガーやってました。

控室でいろいろトラブってたアレ

登壇直前に、控室で準備をしていたんですがなぜか例の自作ガジェットが動かず・・・。

ポキオ 京急を止めるIoT ウイングアークフォーラム2018

流石に焦りながらアタフタしてましたが、結果的にはUSBケーブルが死んでたという、しょーもないヤツ。他のケーブルに交換して、なんとかトラブルを回避できました。いやー、こわいこわい。

View this post on Instagram

new MacBook Airの初陣じゃ!

A post shared by pokio (@pokiiiiio) on

そうそう、おニューのMacBook Airの初陣でもありました。念の為、旧MacBook Airも持ってきましたが、こちらもトラブってました。Thunderbolt3 to HDMIのアダプターがやっぱり鬼門で、以前Nintendo Switch向けに買ったアダプターを持参したのですが、会場のプロジェクターと相性が悪く、結局会場にあったApple純正のアダプターをお借りして、なんとか出力できました・・・。やっぱりサードパーティ製は怖いですね・・・登壇終了後に純正アダプタを速攻でポチりました。

↓ダメだったやつ

↓ポチっちゃったやつ

Apple USB-C Digital AV Multiport アダプタ MJ1K2AM/A

Apple USB-C Digital AV Multiport アダプタ MJ1K2AM/A

登壇自体はうまくいった?

調子に乗ったタイトルでした。ごめんなさい。

speakerdeck.com

デモもなんとか成功し、よかったよかった。

ちょっと5分で収まらなかったので、タイムマネジメントはしっかりしたいところ。Electronでタイマーアプリでも書いて、表示させながらLTしてみようかしら。

View this post on Instagram

改めて集合写真! #iotlt #waf

A post shared by n0bisuke (@n0bisuke) on

みんなで記念撮影。

というわけで

いろいろと気づきが多かったイベントでしたが、貴重な機会をいただけて本当に感謝感謝です。

  • 前もってちゃんと動作確認をすること
  • ケーブル・電源・Wi-Fiはちゃんと準備すること
  • アダプターは純正にすること
  • 発表時間は守ること
  • 懇親会で食べ過ぎないことい

大塚製薬 賢者の食卓 ダブルサポート 6g×30包 【特定保健用食品】

大塚製薬 賢者の食卓 ダブルサポート 6g×30包 【特定保健用食品】

enebularで作ったフローをHerokuにデプロイして動かしてみる

ワークアラウンドですが。

ポキオ enebular heroku

前回まで

relativelayout.hatenablog.com

以前、enebularとFirebaseを組み合わせて、仮想の鉄道会社の運行情報ページを作成し、運行情報を色々変えられる仕組みを作りました。今回は、それをHerokuにデプロイして、ワークするかやってみました。

ただし、執筆時はenebularのAgentAppがNode.js 10系の環境で正しく動作しないため、ワークアラウンドの対応を入れて動作させています。予めご了承ください。

qiita.com

github.com

enebularのダッシュボードからHerokuにデプロイ

前回作ったフローの管理画面を開きます。この画面のDeploy Flowを押すと、AWSやらHerokuやらに、このフローをデプロイすることができます。

ポキオ enebular heroku

ちなみに、今回デプロイしようとしているフローはこんな感じ。

ポキオ enebular heroku

特定のパスにアクセス(HTTP GET)があった時に、Firebaseに現在のダミーの運行情報を問い合わせて、その結果に応じてレスポンスで返すページの内容を変化させるもの。他にも、地味な実装が色々入っていて、

  • 特定のパスにアクセスをすると、運行情報を変更できる
  • 運行情報変更時に、変更されたことをTwitterに投稿する
  • それ以外のタイミングでも定期的にTwitterに投稿する
  • Herokuがスリープに入らないように、定期的に自分自身のページをGETする(上記フローには含まれていませんが、あとから追加しました)

さて、このDeploy Flowボタンを押してHerokuを選択すると、こんな感じのDialogが表示されます。

ポキオ enebular heroku

どのAppにDeployするか選択します。(予めHeroku向けのenebular Agent AppをHerokuにプッシュしておく必要があります。)デプロイ自体は一瞬で終了します。

Node-REDごとデプロイされる

Herokuから割り振られた自分のURLを叩くと、こんな感じでNode-REDへのログイン画面が現れます。

ポキオ enebular heroku

設計したフローがよしなに変換されてDeployされるわけではなく、Node-REDごとDeployされるので、Deployしたあとからでもフローを編集可能です。もちろん、enebularでフローを編集してから再度HerokuにDeployすることも可能です。そのへんはよしなに。

Heroku向けのAgent AppをPushしたときに設定したID/Passwordでログインすると、見慣れたNode-RED画面が表示されます。

ポキオ enebular heroku

今回はスマホからアクセスしてみましたが、フローの編集も簡単にできました。

実際にアクセス

フロー上で設定したURLにアクセスすると・・・

ポキオ enebular heroku

ちゃんと動いてそうですねぇ。そして、定期的に実行するように設定していたTwitterも・・・

ポキオ enebular heroku

ちゃんと投稿されてますねぇ。慣れてしまえば、シュッとデプロイできるので、プロトタイピングにはうってつけなのではないでしょうか。

HerokuはNode.jsのバージョンを指定してデプロイできる

メモ。

ポキオ heroku node.js バージョン指定

ハマったのでメモ

Node.jsのバージョンが変わりがちなので。

devcenter.heroku.com

公式にも書いてあるとおり、

  "engines": {
    "node": "8.12.0",
    "npm": "6.4.1"
  }

こんな感じでpackage.jsonに記載することで、Node.jsとnpmのバージョンを指定してHeroku上でAppを動かすことができる。

話の発端

enebularからflowをHerokuにデプロイしようとしたときに、最初にenebularのエージェントアプリをHerokuにデプロイする必要がある。

github.com

ただ、これをPushしようとするとエラーで止まってしまう。

       We're sorry this build is failing! You can troubleshoot common issues here:
       https://devcenter.heroku.com/articles/troubleshooting-node-deploys
       
       Some possible problems:
       
       - Node version not specified in package.json
         https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
       
       Love,
       Heroku
       
 !     Push rejected, failed to compile Node.js app.
 !     Push failed

Node.js now defaults to Node 10 | Heroku Dev Center

なんか、HerokuのデフォルトNode.jsも8→10に変わってるっぽいので、本家リポジトリからフォークして、先程の方法でNode.jsのバージョン指定をしたものを作ってみました。

github.com

これだと、確かに指定したNode.jsとnpmが使われてそう・・・。

-----> Installing binaries
       engines.node (package.json):  8.12.0
       engines.npm (package.json):   6.4.1
       
       Resolving node version 8.12.0...
       Downloading and installing node 8.12.0...
       npm 6.4.1 already installed with node

めっちゃ怒られながらも、なんとかPushができました。

ただ、未だにflowをenebularからHerokuにデプロイすると、e-node-redが無い、と怒られる。困った。

百均で売ってるグッズで鉄道模型のジオラマを作り始めた

だんだんIoTとか関係なくなってきましたね。

View this post on Instagram

横浜駅ができました。

A post shared by pokio (@pokiiiiio) on

リーズナブルにやっていき

鉄道模型とか、そのジオラマって、作るのにお金がかかりそうなイメージがあったんですが、意外と百均グッズで揃えられるんじゃない?みたいな淡い期待とともに、ジオラマ作成を始めてみました。

すごいな百均

A4サイズのOSB合板、100円で売ってるんですねぇ。そして、芝生調シートというシールタイプの起毛シートも100円。

ポキオ 鉄道模型 ジオラマ 百均

合板に芝生調シートを貼り付けて、レールを釘で打ち付ければ、なんかそれっぽくなりますよね。持ち運びのことも考えて、分割できるようにしてみました。

ポキオ 鉄道模型 ジオラマ 百均

合板の裏側は、机を傷つけないようにフェルトを貼ってみました。これも100円。

ポキオ 鉄道模型 ジオラマ 百均

これで、なんとなくそれっぽくなりました。

ごめんなさい案件

駅舎は、京急バージョンのカプセルプラレールのものを使います。400円相当、百均グッズじゃないです。

ポキオ 鉄道模型 ジオラマ 百均

レールもトミックスさんのレールを使います。

釘はカトーさんのやつ。(何でも良かった)

KATO Nゲージ 釘 13mm 24-015 鉄道模型用品

KATO Nゲージ 釘 13mm 24-015 鉄道模型用品

今後どうするか

今回、駅舎がカプセルプラレールのものを使いましたが、駅だけだと寂しいので、なにかストラクチャーを追加したいですねぇ。ただ、Nゲージ用はちょっと高いので、どうにかしてリーズナブルに追加していきたいところです。

リーズナブルなストラクチャーとかってあるんですかね・・・?

京急の鉄道模型をESP8266で動かそうと思った話②

今度は動いたよ!

ポキオ 京急 鉄道模型 Arduino ESP8266 DRV8830

前回まであらすじ

マイコンボードで鉄道模型を走らせるべく、いろいろ試していました。

relativelayout.hatenablog.com

マイコンボードのピンからの出力でも走るかな?と思ったんですが、これを見た方からいろいろなアドバイスやお叱り・マサカリを頂き、今回の第2話で再度チャレンジという流れです。

やっぱりモータードライバー

結論から言うと、DRV8830というモータードライバーを使いました。

ポキオ 京急 鉄道模型 Arduino ESP8266 DRV8830

akizukidenshi.com

秋月で230円。お手頃な価格の一方で、このモータードライバーはマイコンボードとI2C接続できるので、モータードライバーへ与える電圧の生成やanalogWrite()といった関数がもともと用意されていないような某ボードでも簡単に扱えるものとなっています。

とりあえず逝っとけダイヤ的なアレ

いやー、結線も楽だし、ちゃんと動くし、I2C楽だわぁ・・・。ヘタレなので、これで十分でございます。一方で、スペックシートにかかれている通りに、バイト列を送信しなければいけないので、それだけはちゃんと実装する必要があります。

実装例

だんだん速くなって、急に止まって、逆方向にだんだん速くなって、また急に止まるような動作確認用のコードです。

#include <Wire.h>
#define SDA 13
#define SCL 12
#define ADDR 0x60

void setup() {
  Wire.begin(SDA, SCL);
}

void loop() {
  writeData(0x00, 0x00, 0x00);
  delay(1000);

  for (int i = 0x06; i < 0x3F; i++) {
    writeData(0x00, i, 0x01);
    delay(1000);
  }

  writeData(0x00, 0x00, 0x00);
  delay(1000);

  for (int i = 0x06; i < 0x3F; i++) {
    writeData(0x00, i, 0x02);
    delay(1000);
  }
}

void writeData(byte reg, byte vset, byte data) {
  int vdata = vset << 2 | data;
  Wire.beginTransmission(ADDR);
  Wire.write(reg);
  Wire.write(vdata);
  Wire.endTransmission(true);
}

これも、当たり前と言えば当たり前なんですが、ちょっと電圧をかけたぐらいでは鉄道模型は走らず、ある程度電圧をかけないと動いてくれません。例えば低速走行をやりたいときは、実際の挙動を見つつ、適切な電圧を見つけてあげる必要がありそうです。

ちなみに、嫁氏が京急のカプセルプラレールで横浜駅を引き当ててきたので、今後使わせていただきます・・・(笑)

参考文献

京急がなかなか遅延しないので enebular と Firebase で仮想の鉄道会社運行情報ページを作る

今はなき1000形。

ポキオ 京急 enebular Firebase

京急を合法的に遅延させる

今まで、いろいろな京急ガジェットを作ってきて、遅延の可視化をしてきましたが、如何せん京急はなかなか遅延しません。

遅延しないので、作ったガジェットたちのテストがなかなかできず、未評価のまま運用せざるを得ない状態でしてた。いっぽうで、京急を力づくで遅延させたり運転見合わせに追い込んだりするのは神への冒涜であり、あわせて諸々の法律法令に基づいて処罰されてしまいます。そんなことは絶対にしてはいけません。

線路立ち入りとか絶対に駄目です。

開発環境を整えればいいのでは

京急開発環境、略してKDEですよ。

KDE第一弾として、仮想の運行情報ページを enebular とFirebase を使って作ってみようと思います。

  • 運行情報は Firebase のリアルタイムデータベースで管理
  • Webサーバー(運行情報ページ)を enebular で構築
  • 運行情報ページがGETされたら、 Firebase に問い合わせて運行情報を取得し、それを埋め込んだHTMLを返す
  • 運行情報の変更は、面倒なので enebular の Node-RED フロー上から行う

こんな感じで、ゆるーく作ってみようと思います。

enebularのNode-REDフローでメインの処理を設計

結論から言うと、こんな感じ。

ポキオ 京急 enebular Firebase

いやー、ノードが豊富なので、ほとんどプログラミング不要です。素晴らしい。GETをトリガーにFirebaseに情報を問い合わせ、テンプレートノードでその情報をResで返すHTML内に埋め込みます。HTMLはBootstrapのリファレンス実装をほぼパクって作成。

<!doctype html>
<html lang="ja">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
        crossorigin="anonymous">

    <title>ポキオ急行</title>
</head>

<body>
    <div class="jumbotron">
        <div class="container">
            <h1 class="display-4">ポキオ急行</h1>
            <p class="lead">ポキオ急行線では全線にわたり10分以上の遅れ・運転見合わせが発生または見込まれる場合に運行情報をお知らせしております。運転再開見込み等の時間については、あくまで目安であり状況により変更になる場合がありますのでご了承ください。</p>
        </div>
    </div>

    <div class="container">
        <div class="card bg-light">
            <h5 class="card-header">鉄道運行情報</h5>
            <div class="card-body">
                <div class=unko-panel>
                    {{{payload.message}}}
                </div>
            </div>
        </div>
    </div>



    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
        crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
        crossorigin="anonymous"></script>
</body>

</html>

{{{payload.message}}}という形で、payloadの中身を埋め込みます。また、本家京急のHPを参考に、運行情報はunko-panelのdivでくくっています。

Firebaseの構成はシンプルに

ポキオ 京急 enebular Firebase

運行情報の文字列と、適当に定めた運行情報コード(Integer)をストアできるようにしておきます。

いざ動作確認

enebular上で発行されるテンポラリのURLを使って、ブラウザからアクセスしてみました。

ポキオ 京急 enebular Firebase

ページのルックアンドフィールは別として、ちゃんと運行情報を表示できていますね。ここで、フロー上から運行情報を変えて、再度URLにアクセスしてみると・・・

ポキオ 京急 enebular Firebase

ちゃんと、反映できてますね。これで運行情報のモックができそうです。

【限定】プラレール サウンド京急2100形(赤)

【限定】プラレール サウンド京急2100形(赤)

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。