まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

2019年6月24日にラズベリーパイの最新モデルである Raspberry Pi 4 Model B (以下、「ラズパイ4」)が発表されました:
5682-1


これまでラズパイ1から3までは機能面での変更(強化)が主でした(2と3はケースもほぼ同じ)。今回はインターフェース的な変更もかなりあります。まず電源が microUSB から USB Type-C になりました。HDMI も micro HDMI (しかも2つ)になっています。またこれらの変更に伴い、ケースの形状も変わることになると思います。これら3つは従来との互換性がないため、(ケースは最悪なくても動きますが)ケーブルや変換アダプタはあらかじめ用意しておく必要があります。

あと目で見えにくい点では以下のような変更があります:
・CPU は Cortex A72
・メモリは 1GB, 2GB, 4GB から選べる(個人的にこれが一番うれしい!)
・有線 LAN は Gigabit Ethernet 対応
・4つの USB ポートのうち、2つは USB 3.0 対応
・(micro HDMI ポートが2つあるので)デュアルモニター対応


また OS である Raspbian OS もラズパイ4の発表にあわせて Raspbian Buster がリリースされています:
https://www.raspberrypi.org/downloads/raspbian/


このラズパイ4、すでに販売も開始されていますが、技適の問題もあって日本での販売開始はまだ少しかかる見込みです。いわゆる日本の大手サイトではまだ取り扱いがありません。残念です。

ただ日本の大手以外のオンラインサイトを探せば入手自体は可能なようです。例えば英 PIMORONI のオンラインショップでは周辺機器もあわせて購入することができ、international shipping fee を払うことで日本への出荷もしてもらえるっぽいです:
2019080901


※ただ今日(2019年8月9日)時点ではどこも 4GB モデルが売り切れていたり、品薄状態になっているように見えます。またオフィシャルケースも売り切れ続出っぽい印象です。


自分もせっかくなので(笑)PIMORONI で 4GB モデルを1つ購入してみて、先日届きました(到着まで2週間くらいかかりました):
EBc-HPAU4AAeKjC


早速動かしてレビューを・・・としたいところですが、厄介な技適の問題があります。自宅では有線 LAN も使っているのですが、有線 LAN を使えば技適の問題はクリアされるかというと、そんな単純な問題でもないらしく、、どうやら観賞用となってしまいそうです。うーん、残念。。。




・・・とあまりに残念がっていたら、実際にラズパイ4を使う様子を夢に見てしまいました。というわけで、以下は僕が夢で見たラズパイ4を使う内容を念写した様子でご紹介します。実際の様子ではなく残念です。 (^^;

とりあえず OS イメージを準備します。公式サイトから Raspbian Buster の最新版をダウンロードしてインストールします。今回はインストールが楽そうな Raspbian Buster with Desktop を選びました。こいつをダウンロード&展開して microSD カードに焼き付けます(この辺りはラズパイ3までと同様):
2019080903


ラズパイ4にケーブルを取り付けます。HDMI は変換アダプタで micro HDMI にして接続、有線 LAN のイーサネットケーブルを接続、マウス一体型の USB キーボードを USB ポートに接続、そして USB Type-C の電源ケーブルを接続しました(夢の中で):
IMG_8321
↑念写①


ちなみに僕が使っている HDMI 変換アダプタはこれです。HDMI 変換アダプタをまとめて購入しました:



電源ケーブルにもよりますが、有線 LAN は使える環境にある場合は使った方がいいかと思います。実は初期セットアップ中に無線 LAN をサーチして設定・・・しようとすると、電源が足りないのか、初期セットアップ途中で何度もリブートが発生してしまいました(夢の中で)。有線 LAN にして無線 LAN セットアップをスキップしたら初期セットアップは無事に完了しました。ラズパイ3でも感じていたことですが、ラズパイ運用中に起こるトラブルの要因に無線 LAN が関わることはそこそこの頻度で発生している印象です。

そして SSH を有効にして一旦再起動をかけます(夢の中で)。

再起動後に "top" コマンドでメモリも 4GB あることが確認できました:
2019080905
↑念写②


次に行ったのがスワップメモリサイズの変更です。Raspbian は標準状態だとスワップメモリは 100MB しか設定されていません。まあ SD カード上に作るスワップメモリをどう考えるかだとは思いますし、今回 4GB メモリのモデルを購入しているので、スワップなしでもいいという考え方もあるとは思います。が、自分は「物理メモリと同等サイズのスワップメモリ」信仰を信じて、スワップメモリを 4GB に拡張することにしました。具体的な手順はこちらを参考にしています:
ラズパイ(Raspbian)のスワップ容量を変更する

上記手順実行後に改めてスワップ容量を調べ、ちゃんと 4GB に増えていることを確認しました(夢の中で):
2019080906
↑念写③


従来のラズパイ3と比較して CPU が強化され、メモリも 4GB モデルが選べるようになり、グラフィックも強化されたことでデスクトップとしての利用も快適になるのではないかと期待しています。今後もそのあたりを中心にいろいろ使ってみようと思っています(夢の中で)。

先日行われた「Maker Faire Tokyo 2019 」で購入した「キータッチ」というガジェットを使ってみました:
https://keytouch.org/

2019080703


キータッチは "Raspberry Pi Shop" として有名な長野県の株式会社ケイエスワイ様が製造・販売している電子ボードのガジェットです。ラズベリーパイと接続しても使えますが、Windows や macOS の PC でも利用できます:
2019080700


キータッチは「キーボードの信号をエミュレート」するガジェットです。USB キーボードのように USB ケーブルでキータッチと PC やラズパイを接続して使います(接続した PC から電気供給を受けるので、キータッチ側に電源は不要です)。そしてキータッチからの信号を受けると、PC 側でキー処理が行われます。例えば PC 側で「メモ帳」アプリが開いている状態で、キータッチから「Aキーを押した」という信号を受けると、メモ帳内に「A」という文字が入力されます。

ただキータッチは USB キーボードではなく、「キーボード信号のエミュレーター」です。実際、ボードのハードウェア的なキーボード要素はゼロで、「ある条件を満たした時に『A キーが押された』という信号を発する」ことができる電子ボードです(実際には  Aキーだけでなく、A から H までの8種類の信号を発することができます)。

そして上述の「ある条件を満たした時」の条件というのがキータッチ側に用意された2箇所の端子間が電線で接続された時になります。具体的にはキータッチ側の "A" キー端子と、"EARTH"(アース)端子とが伝導体で繋がった時に「A キーが押された」という信号が発せられます。
howto04


このような特徴を利用することで、キータッチ自体にキーボードは付属していないにも関わらず電気を通すあらゆるものをキーボード代わりにすることができる、という機能を持っていることになります。そして A キーや B キーを押して動かすことができるようなアプリケーションを開発・稼働しておくことで、キータッチに対応して動くアプリケーションとすることができる、というものです:
2019080704



試しに(先日のブログでも紹介した)このアプリをキータッチで使ってみました:
https://github.com/dotnsf/keytouch_sample


キーボードから入力した文字がそのままブラウザ画面に表示される、というシンプルなアプリケーションです:
2019080701


では実際にキータッチと一緒に使ってみます。付属のケーブルで PC にキータッチを接続します:
IMG_8279


この状態で上記のアプリケーションを起動し、ウェブブラウザで開きます:
2019080701


そして EARTH と A にクリップを繋いで、その2つのクリップをくっつけると・・・:
IMG_8280





ちゃんと "A" と表示されました。つまり期待通りに A キーの信号が PC に送られてきたことになります:
2019080702


このキータッチによって、キーボードがなくても(一部の)キーボード処理をエミュレートすることができるようになり、後は特定のキーが押されたイベントをハンドリングして動かすことのできるアプリケーションが用意されていれば、キータッチを使って動かすことができるようになります。叩いて動かすようなゲームであったり、人と人とが握手することでキー信号を送って動かすような体感型アプリケーションを作るなど、いろいろな応用が効きそうなポテンシャルの高いガジェットだと思っています。

僕自身はメーカーズフェアのイベント会場で購入しましたが、公式ページからオンライン購入が可能になっているようです。キータッチ本体のみで 3000 円ケーブル類まで付属したパッケージで 3500 円(それぞれ税別)らしいです。


(一部で?)話題の serveo サービスを使ってみました。

serveo は http://localhost:XXXX で稼働するウェブサービスを https の固定URLで公開するサービスです。加えて無料で、しかも(ssh が導入済みであれば)ツール類のインストールは不要です。なお以下の作業は Windows 10 の WSL(Ubuntu 18.04) 環境を使って行いました。macOS や Linux, Raspberry Pi などを使う場合でも同様のはずです。

どのように使うかを以下で紹介しますが、今回は例としてこのウェブアプリケーションをネット公開してみることにします:
https://github.com/dotnsf/keytouch_sample

2019080702



「キーボードから入力されたキーをそのまま画面に表示する」という Node.js のウェブアプリケーションです。Node.js が導入されていればローカル環境で稼働させることができます。

実際に動かすには上記リポジトリからコード一式を git clone またはダウンロード&展開して、npm install して app.js を実行します(緑字は出力されるメッセージです):
$ git clone https://github.com/dotnsf/keytouch_sample

$ cd keytouch_sample

$ npm install

$ node app
server starting on 6022 ..

実行すると空きポートを見つけてリクエストを待受ける状態になります。上記例では 6022 番ポートで稼働しています。

このアプリケーションを使うには、ウェブブラウザで http://localhost:6022/ へアクセスします(6022 の部分は実際に稼働しているポート番号を指定してください):
2019080701


↑キーボードを適当に叩いて入力すると、叩いたキー文字が画面に表示される、というだけのアプリケーションです(英文字や数字は正しく表示されると思いますが、一部の記号には対応していません)。

では、この localhost で稼働中のアプリケーションを serveo を使って公開してみます。別のターミナルを開いて、以下のコマンドを入力します(6022 の部分は実際に稼働しているポート番号を指定します):
$ ssh -R 80:localhost:6022 serveo.net
Forwarding HTTP traffic from https://ledo.serveo.net
Press g to start a GUI session and ctrl-c to quit.

実はたったこれだけです。上記例では https://ledo.serveo.net にフォワードされる、というメッセージが出力されています。実際にウェブブラウザで(可能であれば別のマシンのウェブブラウザで)指定された URL にアクセスしてみると、実際に稼働していることが確認できます:
2019080703


こんな簡単に、しかも https の固定 URL でウェブサービス公開ができてしまいました。驚き!

ちなみに、このサービス自体は SSH のフォワーディング機能だけで実現しているようで、上記コマンドの "localhost" はローカルホストでなくても構いません。なので(ホスト名が変わることが問題にならなければ)http で動いているサービスを簡単に https 対応させることもできそうです。

その他、コマンドのオプション等は公式ページに詳しく紹介されているので参照ください。いやそれにしても便利なサービスだ。自分で作ったアプリがここまで簡単にウェブ公開できるとは・・


このページのトップヘ