SwiftyPi | try! Swift Tokyo 2018 Day1-9

モバイル開発からサーバーサイドアプリケーションまで、我々はSwift 言語に柔軟性を見出だし始めています。ですがまだSwiftには開拓されていない領域があり、Swiftエンジニアがその可能性を切り開くかもしれません。このトークでは、Kate が Raspberry Pi で Swift の開発環境を構築するにあたって良かったこと、悪かったことについてお話します。

speakerdeck.com

SwiftyPi

f:id:niwatako:20180301151207j:plain

次のフロンティアにSwiftを連れて行ってくれるものです

f:id:niwatako:20180301151219j:plain

f:id:niwatako:20180301151247j:plain

  • 組み込みSwift
  • ラズパイの設定
  • ラズパイのPinとSwift
  • デモ
  • まとめ

f:id:niwatako:20180301151320j:plain

f:id:niwatako:20180301151331j:plain

f:id:niwatako:20180301151334j:plain

f:id:niwatako:20180301151337j:plain

f:id:niwatako:20180301151340j:plain

f:id:niwatako:20180301151344j:plain

Swiftは柔軟です

モバイルからサーバーサイド、そして組み込みへ広がってきました

f:id:niwatako:20180301151412j:plain

ラズベリーパイはカードサイズのコンピューターです。

これが何故大事かというと小さなコンピューターがいろいろなOSで動く、オープンソースで、Linux用のPortがあって、Swiftの様々な素晴らしい点を載せることができます。

f:id:niwatako:20180301151457j:plain

ラズベリーパイをどうやって使ったらいいのか

OSを選ぶ必要がありますが、Raspbian、そしてUbuntuがおすすめです。

様々ありますが、ご説明するのは時間がないので、リポジトリを見て下さい

f:id:niwatako:20180301151613j:plain

どう立ち上げるのかから説明しましょう。

f:id:niwatako:20180301151628j:plain

まだSwift4.1のサポートがありません。

理由はいろいろですが、リソースの不足です。ARMのリナックス側に十分なリソースがない。

ここを気にしなければ3.1.1で使えます。

f:id:niwatako:20180301151714j:plain

設定の仕方

リポジトリに行く、バイナリをダウンロードできるのでインストール、幅広いレコメディションがありますし、ライブラリをOpenSSLなどをインストールします、ラズベリーパイの端末でバージョンを確認します。

ラズベリーパイを動かしていく、Swift上のコードを見ていく

PinとSwift

f:id:niwatako:20180301151825j:plain

回路のレイアウトをどうするか

f:id:niwatako:20180301151839j:plain

レジスターとLED

GPIO(GeneralInputOutputPin)

f:id:niwatako:20180301151929j:plain

接続設定ができました。どう試験するのか

端末でwiringpi をインストールしてGPIOピンをアウトプット用にしてスイッチを入れる

gpio write 13 1

gpio write 13 0 でOffにできます。

ラズベリーパイ上のピン

f:id:niwatako:20180301152028j:plain

操作する時は数字を使うわけです 丸の中に入っている数字がTerminalから使う数字です。

Swiftから使うにはGPIO番号を使います。ピン13を使うには、GPIO27が対応する番号です。

OSSのSwiftyGPIOを使う

f:id:niwatako:20180301152124j:plain

On, Offにするサンプル

f:id:niwatako:20180301152202j:plain

f:id:niwatako:20180301152303j:plain

ちかちか

f:id:niwatako:20180301152326j:plain

f:id:niwatako:20180301152329j:plain

これが現実世界のプロジェクトに繋がります

f:id:niwatako:20180301152349j:plain

Berlin Train Systemというのがありますが信頼性がないわけです。電車を乗り逃がすことが多いです。

視覚的にいつ家を出なければならないか分かるようにしたい。そしてきちんと駅に着くように。

サーバーをRasberyPi上で実行し、最寄り駅を出発駅、到着駅、経路を決めていきます。

次に重要な要素を話します。サーバーです。

Vaporを使おうと思いました。repositoryにDependencyとして指定します。

Vaporツールボックスは使いません。Swift4が必要です。使えないのでツールボックスは使えません。 Demoです。

f:id:niwatako:20180301152607j:plain

出発駅と到着駅を設定して..

ブザーを鳴らすことにします。

なりました

f:id:niwatako:20180301152717j:plain

ここまで何をしたか

f:id:niwatako:20180301152731j:plain

モバイル、サーバー、システムに接続という3つをしました。これでLEDを動かせる

f:id:niwatako:20180301152800j:plain

  • ラズパイでEthenetケーブルを使ってネット共有できるようになりました。
  • Swift4に早く対応するといいですね
  • LEDがつかない時は接続を確認して下さい
    • 物理的ピン番号とGPIO番号は違います
    • GPIO番号はSwiftコードで使うものです。

f:id:niwatako:20180301152934j:plain

github.com

[広告]面白かったら、ためになったら

  • はてなブックマークSwift タグをつけてブックマーク!
  • 「インターネットで生活を楽しく豊かにしたい」仲間を募集しています
  • Bitcoin: 3KGqXtR1ZaGVdkvcw8CCNrkDxDhdbZBYHL