20210225のMacに関する記事は6件です。

Macのデスクトップに動画ファイルが追加されたら、自動的にGifを生成してみる

はじめに

普段アプリ開発をしているときに動作確認した結果をGifでPRに載せたりするのですが、
.mov.MP4の動画ファイルからFFmpegでGifを生成するのを自動化できないかなーと思い、やってみました!

準備

動画ファイルからGifを生成するのにFFmpegを使用するので、ダウンロードしておきます。

Homebrewからでもインストールできます。

$ brew install ffmpeg

AutomatorでWorkflowを作成する

Macの作業を自動化するということで、今回は標準で用意されているAutomatorを使用します!

まずは、Automatorを起動して、フォルダアクションを新規作成します。
1.png

フォルダはDesktopを指定します。
2.png

左上の検索欄に「シェルスクリプト」と入力してアクションを検索をして、「シェルスクリプトを実行」のアクションを右側にドラッグします。
3.png

「入力の引き渡し方法」を「引数として」に変更して、以下のスクリプトを書きます。
fpsやscaleなど、ffmpegの設定値の部分は、お好みで調整してください(*・ω・*)

# 1
originalFilePath=$1

# 2
if [[ $originalFilePath == **".mov" ]] || [[ $originalFilePath == **".MP4" ]] || [[ $originalFilePath == **".mp4" ]]; then
  uuid=$(uuidgen)
  uuidFilePath=$originalFilePath-$uuid

  # 3
  /usr/local/Cellar/ffmpeg/4.3.1_9/bin/ffmpeg -i $originalFilePath -filter_complex "[0:v] fps=20,scale=320:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" $uuidFilePath.gif
fi

# 1の行で、引数で受け取った動画ファイルのPATHを変数に格納しています。

# 2のif文で、動画ファイルの拡張子を.mov .MP4 .mp4 の3つに限定しています。
Gifファイルがデスクトップに追加された場合もWorkflowが動くので、条件を指定しないと、自動生成されたGifファイルから新しいGifファイルを作り出そうとして、無限にGifを作り続けてしまいます(´;ω;`)

# 3でffmpegを実行していますが、/usr/local/Cellar/ffmpeg/4.3.1_9/bin/ffmpeg の部分は、ffmpegが格納されているPATHを指定する必要があるので、適宜変更してください。
/Applications/ffmpeg とかの場合もあるかもしれません。

4.png

「command + S」で、適当な名前を付けて保存します。

5.png

これで、保存して終了です!
デスクトップに.mov.MP4またはmp4 のファイルが追加されると、gifを生成してくれるようになります。

さいごに

デスクトップに動画を追加したら、Gifを作ってくれるようになりました:clap:
result.gif

↑のGifでは別のディレクトリからドラッグしてデスクトップに動画を追加していますが、
QuickTime Playerとかで画面収録をしたら、Desktopに動画保存されるので
そこから勝手にGif作ってくれるといった感じです\(。・o・。)/

ちなみに、iOSのアプリ開発であれば、
以下のようなxcrunコマンドでiPhone Simulatorの動画を撮ることもできるので、
その時にもデスクトップに動画ファイルを保存すれば勝手にGif作ってくれます!
xcrun simctl io booted recordVideo output.mov

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

情報工学部の学生が持つべきパソコンとは(単なる昔話です)

Quoraでバズってしまった投稿

Quoraは他言語の回答を翻訳することができます。私もいくつか面白そうな回答を翻訳してみました。そのうちの1つが予期せずバズっているようです。どうやらマックユーザーの怒りを買ってしまったようで…。

情報工学部の学生にはMacとWindowsのどちらが適していますか?

はてなブックマークにも転載されていました。

情報工学部の学生にはMacとWindowsのどちらが適していますか? - Quora

これはそのうちのコメントの1つ。

元質問への多数の回答のなかで、upvoteもそう多くなく、内容もそれほど注目すべき点がない本回答を林田さんが訳出した理由が知りたい。

その理由は、「Quoraで翻訳できる回答は1質問につき1人1つまで」というルールを知らなかったからです。

これはQuoraで私が一番最初に翻訳した回答でした。同じ質問の別の回答を翻訳して投稿しようとしてエラーが出るまで、そんなルールがあったとは思いもよりませんでした。そのため「ベストな選り抜きの回答を選ぼう」って意識がないまま、なんとなく訳したのでした。

あまりに低レベルな世界で笑ってしまったというのも、この回答を選んで訳した理由です。

なおこれはあくまで翻訳であり、私の意見ではありませんので念のため。

おじさんが学生の頃は…

入学前夜

私のQuoraのプロフィールを見た人から、本当に情報工学部出身なのかと疑う声がありました。そこでちょっと、私が学生だった頃の話をすることにします。まぁ何の含蓄もないただの昔話です。皆さんの反応を見て、Linuxを押さえておけば間違いなし、みたいな風潮を感じたので、私の時代の話をしたらちょっと驚かれるかもしれないな、と思ったので…。

大学の話をする前に、入学直前あたりの当時のパソコン業界の状況を話しておかなければなりません。高校生の頃は8ビットパソコンが主流でした。主流と言っても、校内でパソコンを持っている生徒は10人ほどしかいません。機種もバラバラ。私はX1 Truboでしたが、他の人はPC8801とかFM77とか。

PC8801が大ヒットしてゲームが急増したのはSRからです。私の友人はSR前のmk IIを持っており、殆どのゲームを遊べないただの箱でした。当時のパソコンはディスプレイ込みで30万円以上するような高級品であり、もし失敗してもそう簡単には買い換えられません。

PC9801が出てきたのもこの頃。対応ゲームはVM以降でしか動かず、VMより古い98はゴミでした。価格が高かったこともあり、最初の数年は大戦略、信長の野望、三国志といったオヤジ向けのシミュレーションゲームばかりで、ゲーム目的で98を買う流れができたのは私が大学に入った後だったと思います。

この当時の状況を改めて総括すると、次のようになります。

  • パソコンを持っている人は、ほとんどいない。
  • ノートパソコンが存在しない。
  • パソコンのOSはBASICインタープリタとMS-DOSしか選択肢がない。
  • PC9801がメジャーになろうとしていた。

なおMacは100万円以上する高級品で、OSもClassic OSでありUNIXではなく、とにかく当時は実物を見たことがありませんでした。

大学の入学祝はX68000でした。20MBのHDDを搭載していました。GBではないですよ。MBです。当然、大学で使うことを想定した機種の選定などしていません。

当時の情報工学部の環境

さてこの状況で大学の実習環境はどうだったかというと、286が搭載されたPC9801をターミナルとして、ACOSというメインフレーム機を使うという形がメインでした。当然パソコンを持っている同級生はほとんどいません。ましてやノートパソコンなんてものはこの当時まだ存在せず、自分のパソコンを学校に持ってくるなんてことはありえません。自宅から大学のACOSに繋ぐ方法もありません。

またUNIXを使った実習では、アポロやNeXTといったワークステーションを使えましたが、電子工学部などと共有しており自由に使えませんでした。雑誌で見るNeXTは凄いクール。しかし実際に触ってみるとなかなかに使いづらいものでした。HDDは搭載されておらず、5インチのMOが唯一のストレージとして搭載されていました。共有プリンターでエラーが出ると教室のスピーカーからエラーメッセージが英語で流れるのがかっこよかったです。

今では信じられないかもしれませんが、当時はUNIXは非常にマイナーな存在でした。当時の企業はPC9801やFM16βといったMS-DOSパソコンを使うのが普通でした。また銀行や企業のバックボーンはメインフレームであり、UNIXではなかったことでしょう。CAD等の限られた業務でのみUNIXワークステーションが使われており、映画業界でも実験的にCGが使われた程度で、市場規模は非常に小さく、大学では一応知っておいて損はないよという扱いでした。UNIX(フレーバー含む)が爆発的に普及するとは誰も想像しておらず、全く新しいアーキテクチャのOSが今後も続々出てくるだろうと思われていました。

当時のインターネット

そもそもインターネットがありません。正確には存在していましたが、大学や一部の企業だけのものでした。大学のネットワークは10Base-Tではなく、同軸ケーブルをリング状につないだもの。ネットワークカードは1枚30万円でパソコン本体より高価でした。

もちろんインターネットプロバイダも存在していません。ニフティサーブというパソコン通信に電話をつなぎ、X68000から大学の研究室が設置した野良ftpにログインして遊んでました。ウェブサーバをUNIXで立てて巨大なネットワークを形成するみたいな、今では当たり前のことは、当時は想像もつかなかったのです。

当時のコンパイラ

コンパイラの実行環境も貧弱でした。高校生の時にX1 Turboで動くCP/Mと、C言語のサブセットであるAlpha Cを合わせて5万円くらい出して買いました。CP/Mについていたアセンブラは8080用で、Z80のインデックスレジスタや裏レジスタを使えませんでした。Alpha Cはinclude文がなく、ライブラリをリンクする機能もなかったと思います。何万円もするコンパイラの話ですよ。

CP/Mはサブディレクトリ機能がありません。2Dのフロッピー容量は320KBだけで、いくつかテキストファイルを入れただけですぐいっぱいになってしまうので、サブディレクトリは不要でした。

PC9801は当時持っていなかったので詳しくないのですが、gccでC++のソースコードをコンパイルできそうでできない、みたいなところで世の中の皆さんが頑張っていた覚えがあります。そう、C++のコンパイルができなかったのです。当時テンプレートがあったかどうかは定かではありません。その点メモリが数MBも使えるX68000ではgccでのコンパイルが可能でした。

卒業研究はACOS上で動く経路探索アプリをCOBOLで書くという無駄なことをしていました。基本的に、学生が全員自宅にコンパイラが走るパソコンを持っているという前提にはなっていませんでした。

当時のPC

当時はパソコンと言えばPC9801であるのが普通でした。IBM-PCは漢字を表示できませんでした。そのうちAXというIBM-PCに漢字表示のハードを乗せたパソコンが出ましたが、あまりに高価なので一瞬で消えました。ソフトで日本語を表示できるDOS/Vが出たのは、大学を出てからしばらく経ってからです。

Windowsはありませんでした。正確にはWindows 2にあたるWindows 286とか386というものがありましたが、事実上存在しない空気でした。私が社会人になった直後くらいにWindows 3.1がようやく出て、徐々に世界が変わる兆しが見えてきました。

DOS/Vは仕事の流れで初めて使いました。SVGAで画面を広く表示できるようになり、自分でも486のPC互換機を買いました。まだPC9801が主流で、PC互換機ユーザーとして割と早い方でしたね。

LinuxやFreeBSDは存在しなかったか、少なくともパソコンが非力すぎて実用レベルではなく、UNIXを個人で使おうと思ったらワークステーションを買わないといけなかったわけで、UNIXフレーバーの個人使用はまだ現実的ではありませんでした。

結局、情報工学部の学生が持つべきパソコンとは

今時は、MacでもLinuxでもWindowsでも、なんとかなるんじゃないでしょうか(適当)。私自身、ほとんどメインフレームしか習っていませんが、RTOS、Windows、Linuxで色々なドライバやネイティブアプリやウェブアプリを書いてきており、なんとかなりました。

おじさんの時代と違って、今は環境が素晴らしく整っており、実践的なことを学べるでしょう。また今の技術があっという間に廃れてしまうことも、多分ないでしょう。羨ましいことです。おじさんの学生時代の経験からは、今の人にアドバイスできそうなことは何もありません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Macでシンボリックリンクを使って「cd」で移動できるエイリアスを作る

いつも忘れてしまうので忘却録
iCloudのディレクトリにコマンドラインで移動したいときにパスが長く面倒なのでエイリアスを作りたい。
GUIのエイリアスではcdコマンドが使えず不便なので、シンボリックリンクで作成する。

ln -s "iCloudのPath"

これでcdコマンドで移動できるようになる。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac M1マシン導入メモ

はじめに

個人用に愛用していたMac Book Airが突然お亡くなりに。
やむを得ず至急購入したMac M1マシンの作業メモを残しておくことにする。

購入機種

添付の画面のとおり。実は最初はM1ほしさにMac Book Airを買うつもりだった。
即必要だったのだが、Airは金色の機種しか在庫がないとのこと。
仕方ない、使えればいいかと思いかけたとき、店員から「Mac Book Proも13インチならM1でっせ」と甘いささやきが。ということで、想定外のProを購入することになった。

スクリーンショット 2021-02-25 13.25.55.png

外観は、こんな感じ。

IMG_2902.jpeg

初期セットアップ

実は、初期セットアップにかなり手間取ってしまった。言語とか、地域とはを普通に選んだ後で、リストアするバックアップ元を指定する画面が出てくる。今回はリストアもなにもマシンが死んでいるのでなにもできないのだが、一見スキップの選択肢がない画面に見えた。
よく見ると、左下にスキップの選択肢があったのだが、それに気づかず、10分くらい余分にかかってしまった。

指紋認証

下の写真のようにキーボードの右上が、指紋認証のセンサーになっていて、ログインとかソフト導入時には、パスワードを打たなくていいようになっている。スマホでは当たり前の機能だが、古いMacになれている人間にはとても便利に感じた。

IMG_2903.jpeg

ソフトの導入

以下に導入したソフトの一覧と、導入時の注意点をメモしておく。

Chrome

特に問題なく、普通に導入できたはず。

https://www.google.com/chrome/browser/desktop/index.html

MS Office

パソコンと同時にサブスクリプション版を購入した。

https://microoffice365.com/support

から、画面のガイドのとおり、ユーザー登録、ソフトのダウンロードとやって、すぐに使えるようになった。

mi

自分はテキストエディタはずっとこれを使っている。特に問題なく使えた。

https://www.mimikaki.net/download/

ATOK

体がATOKに慣れてしまっているので、これなしではパソコンが使えない。

https://mypassport.atok.com/

上記URLから、インストールのタブを表示してインストーラをダウンロード、実行する。
途中で、Rosetta2を導入するようなガイドが表示される。

https://www.justsystems.com/jp/os/macos11/#bigsurAS

ガイドのとおり、導入すると普通にATOKも使えるようになった。詳しくわかっていないが、Rosetta2というのは、M1マシンでインテル用のバイナリを動かすための仕組みらしい。

Github Desktop

下記リンクから普通にzipファイルをダウンロード、解凍、アプリケーションフォルダに移動で完了。

https://desktop.github.com/

HomeBrew

ターミナルから普通に下記コマンド実行で対応

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Zoom

すでにm1対応バイナリが出ている。

https://zoom.us/client/latest/Zoom.pkg?archType=arm64

これで問題なく使えた。ちなみに、前のパソコンは機種が古くてZoomの仮想背景が使えなかった。これでようやく人並みに仮想背景が使えるようになり、大変うれしい。

anaconda

この辺から手強いソフトが増えてくる。

https://www.anaconda.com/products/individual

から64bit graphical installerというのを選択、導入する。最終的なリンクはこちら。

https://repo.anaconda.com/archive/Anaconda3-2020.11-MacOSX-x86_64.pkg

導入自体が普通にできて、GUIのアプリも普通に使えるのだが、一カ所戸惑ったのが、ターミナルからコマンドラインでjupyter notebookとかpipコマンドが普通に使えない点。
anacondaは、ホームディレクトリの.bash_profileに必要な環境設定などをするのだが、どこかのタイミングでデフォルトのシェルがzshに変わったらしく、この設定が空振りになっていた。
対策としては、.zshrcを新たに作り、anacondaの生成した.bash_profileの中身をまるごとコピーした。これで、普通にjupyter notebookをコマンドライン起動できるようになった。

PyTorch用に以下のコマンドを実行

pip install torch
pip install japanize_matplotlib
pip install torchviz
pip install torchsummary
pip install torchvision

さらに以下のリンクからgraphvizを導入

http://ruby.kyoto-wu.ac.jp/info-com/Softwares/Graphviz/

これで、PCのJupyter NotebookからPytorchが動くようになった。
ただし、PyTorchからGPUが使えようになるのは、まだまだ先らしい。

https://github.com/pytorch/pytorch/issues/47702

TexShop (Latex用GUIソフト)

以前に自分で作った以下のメモを参考に

https://qiita.com/makaishi2/items/ac284987f158f7853771

次の2つのコマンドを実行

$ brew install mactex --cask
$ sudo /usr/local/texlive/2020/bin/x86_64-darwin/tlmgr update --self --all

これで使えるようになった。

Tex2img

書籍の原稿執筆用にLatexからPDFを作るのに不可欠なソフト
なぜか、デフォルトのTexShop導入時点で、ghostscriptへのパスが通っていなく、以下のコマンドをマニュアルで打つ必要があった(原因不明。。)

sudo ln -s /opt/homebrew/Cellar/ghostscript/9.53.3_1/bin/gs /usr/local/bin/gs

Station TV Link

Sonyのレコーダーやnasneに録画したビデオをパソコンから見ることのできる優れもののソフト

http://www.pixela.co.jp/products/tv_capture/stationtv_link/support.html#download-mac

にM1対応版があり、アプリ起動時のエラーはこのバイナリで出なくなったが、なぜか肝心のレコーダー/nasneにアクセスできず、新しいPCになってから、まだビデオを見れていない。。
要調査。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UTMを使ってM1 MacにUbuntu20.04をインストールして、その中でDockerを動かして、その中でUbuntu20.10を動かしてみる

Macの仮想化ソフトウェアというと、VirtualBoxVMware FusionParallels Desktopといったプロダクトが代表的なところかと思いますが、この中でApple M1への対応が進んでいるのはParallels Desktopが先行している状況のようです。

上記のプロダクト以外にMac上で仮想環境を実現する方法としてはAppleが提供しているVirtualization frameworkを利用することで可能とのこと。

Appleの開発者フォーラムではVirtualization frameworkを利用したSimpleVM、vm-lite、virtualというプロダクトのGitHubのリポジトリが紹介されています。

Setting up Linux VM on Apple Silicon for Docker」という記事にSimpleVMを利用したUbuntu上でDockerを起動するまでの手順が掲載されていたので実際にやってみたところ、Ubuntuが起動することは確認できましたが、vmlinuzとinitrdを準備するところが非常に煩雑だと感じました。

こうなると、やはりVirtualBoxやVMware Fusionのような仮想化のGUIフロントエンドが欲しくなります。そういった声に応えてくれるのがUTMやACVMといったQEMUラッパーです。

前置きが長くなりましたが、それではUTMを使ってM1 MacにUbuntuをインストールしていきましょう。
手順についてはUTMのリポジトリの「Install Ubuntu ARM64 on Apple M1」というWikiか、もしくは、UTMのページの「Ubuntu 20.04」にキャプチャ付きでまとめられてるので、実はここを見れば一発なんですが今回はUTMをインストールするところから説明していきます。

UTMのリリースページからMac用のインストールバイナリ(UTM.dmg)をダウンロードしてインストールします。(2020年2月25日時点ではv2.0.22が最新版のようです。)

次に、Ubuntu Server for ARMのページからARM版のイメージ(ISOファイル)をダウンロードします。今回は「20.04.2 LTS」を利用することとします。

あとは先程紹介したインストール手順に従い進めていきます。

UTMを起動します。
スクリーンショット 2021-02-25 1.27.05.png

画面上段の「+」ボタン、もしくは、「Create a New Vitural Machine」のアイコンをクリックします。
スクリーンショット 2021-02-25 1.30.19.png

InformationタブのName欄に「Ubuntu 20.04」と入力し、Styleから「Operating System」を選択します。
スクリーンショット 2021-02-25 1.31.50.png

Systemタブに移動します。
スクリーンショット 2021-02-25 1.33.46.png

Architectureから「ARM64 (aarch64)」を選択すると、自動的にSystemから「QEMU 5.2 ARM Virtual Machine (alias of virt-5.2) (virt)」が選択されます。
Memoryについては環境によって設定可能な値が変わってくると思いますが、今回は8192MB(8GB)で設定してみます。
スクリーンショット 2021-02-25 9.19.17.png

Deviceタブに移動します。
スクリーンショット 2021-02-25 1.36.48.png

「New Device」ボタンをクリックし、Interfaceで「VirtIO」が選択された状態でSizeに「10GB」と入力します。
スクリーンショット 2021-02-25 1.37.54.png

「Create」ボタンをクリックします。
スクリーンショット 2021-02-25 1.40.06.png

もう一度「New Device」ボタンをクリックします。「Removable」にチェックすると、Interfaceで「USB」が選択された状態となります。
スクリーンショット 2021-02-25 1.41.39.png

「Create」ボタンをクリックします。
スクリーンショット 2021-02-25 1.43.06.png

「Save」ボタンをクリックすると、仮想マシンの枠ができあがります。
スクリーンショット 2021-02-25 1.44.48.png

「CD/DVD」の欄をクリックすると「Browse」と表示されるのでこれをクリックします。
スクリーンショット 2021-02-25 1.46.41.png

事前にダウンロードしておいたISOファイルを選択します。
スクリーンショット 2021-02-25 1.49.20.png

再生アイコン(起動ボタン)をクリックすると仮想マシンが起動します。
スクリーンショット 2021-02-25 1.52.16.png

事前に作成したCD/DVDドライブより先にハードディスクの方を起動ドライブとして認識しているため起動できない状態となっています。
スクリーンショット 2021-02-25 1.55.39.png

EXITと入力してEnterを押下します。
スクリーンショット 2021-02-25 2.02.06.png

UEFIの設定画面へ遷移します。
スクリーンショット 2021-02-25 2.02.36.png

「Boot Manager」を選択します。
スクリーンショット 2021-02-25 2.03.11.png

「UEFI QEMU QEMU USB HARDDRIVE」を選択します。
スクリーンショット 2021-02-25 2.04.29.png

Ubuntuのインストール画面が表示されるので「Install Ubuntu Server」を選択します。
スクリーンショット 2021-02-25 2.07.17.png

Ubuntuの詳細なインストール手順については割愛します。

インストール後に利用したいパッケージが決まっているのであれば、「Featured Server Snaps」の画面で選択しておきます。今回はdockerを選択しました。
スクリーンショット 2021-02-25 9.37.50.png

インストールが完了したら一旦仮想マシンを停止し、CD/DVDの「Clear」を選択して再度仮想マシンを起動します。
スクリーンショット 2021-02-25 9.40.36.png

GRUBの画面が表示されますので、「Ubuntu」を選択します。
スクリーンショット 2021-02-25 9.41.35.png

Ubuntuが起動します。
スクリーンショット 2021-02-25 9.42.19.png

インストール時に設定したアカウントでログインし、unameと/etc/os-releaseを確認してみます。
スクリーンショット 2021-02-25 9.47.44.png

sudo apt-get -y install ubuntu-desktop を実行してデスクトップ環境をインストールしてみます。
スクリーンショット 2021-02-25 9.48.18.png

インストールが完了したら sudo reboot で再起動します。
スクリーンショット 2021-02-25 9.53.11.png

再起動後はGUIのログイン画面が表示されます。
スクリーンショット 2021-02-25 9.54.50.png

ログインするとデスクトップ環境が表示されます。
スクリーンショット 2021-02-25 9.55.52.png

Ubuntuのインストール時にDockerをインストールしていたので、Dockerのバージョン情報を表示してみます。
スクリーンショット 2021-02-25 12.30.08.png

docker image pull (もしくは docker pull) を実行してUbuntu 20.10のイメージを取得し、 docker image ls (もしくは docker images) でイメージが取得できているか確認します。
スクリーンショット 2021-02-25 12.36.00.png

docker container run (もしくはdocker run) でコンテナのシェルを表示し、unameと/etc/os-releaseを確認してみます。
スクリーンショット 2021-02-25 12.40.18.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacでM5stack Core2 for AWS その2

0. はじめに

前回はQiitaを書くのに疲れてしまい、
投稿はESP-IDFまでと中途半端に終わってしまったので
今回はLチカまで進めます。
ドキュメントはここのAWS CLIのインストールからです。

例によってエラーとの格闘です:ghost:

1. AWS CLIインストール

AWSアカウントも何もないところからだと、ちと面倒ですが、
ココを乗り越えないと先に進めませんので、
ドキュメント通りにAWSのアカウント作成、AWS CLIのインストール、
aws configureを行います

2. Minicondaインストール

ドキュメント通り進めます。
私はココのPython3.8のpkgをインストールしました。

ドキュメントにある、edukit環境作成とedukit環境への切り替えは
下の通りうまくいきました

(base) オレ@MacBook ~ % conda create -n edukit python=3.7
Collecting package metadata (current_repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: /Users/オレ/opt/miniconda3/envs/edukit

  added / updated specs:
    - python=3.7


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    ca-certificates-2021.1.19  |       hecd8cb5_0         121 KB
    certifi-2020.12.5          |   py37hecd8cb5_0         140 KB
    openssl-1.1.1j             |       h9ed2024_0         2.2 MB
    pip-21.0.1                 |   py37hecd8cb5_0         1.8 MB
    python-3.7.9               |       h26836e1_0        19.7 MB
    readline-8.1               |       h9ed2024_0         333 KB
    setuptools-52.0.0          |   py37hecd8cb5_0         721 KB
    wheel-0.36.2               |     pyhd3eb1b0_0          33 KB
    ------------------------------------------------------------
                                           Total:        25.0 MB

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/osx-64::ca-certificates-2021.1.19-hecd8cb5_0
  certifi            pkgs/main/osx-64::certifi-2020.12.5-py37hecd8cb5_0
  libcxx             pkgs/main/osx-64::libcxx-10.0.0-1
  libedit            pkgs/main/osx-64::libedit-3.1.20191231-h1de35cc_1
  libffi             pkgs/main/osx-64::libffi-3.3-hb1e8313_2
  ncurses            pkgs/main/osx-64::ncurses-6.2-h0a44026_1
  openssl            pkgs/main/osx-64::openssl-1.1.1j-h9ed2024_0
  pip                pkgs/main/osx-64::pip-21.0.1-py37hecd8cb5_0
  python             pkgs/main/osx-64::python-3.7.9-h26836e1_0
  readline           pkgs/main/osx-64::readline-8.1-h9ed2024_0
  setuptools         pkgs/main/osx-64::setuptools-52.0.0-py37hecd8cb5_0
  sqlite             pkgs/main/osx-64::sqlite-3.33.0-hffcf06c_0
  tk                 pkgs/main/osx-64::tk-8.6.10-hb0a8c7a_0
  wheel              pkgs/main/noarch::wheel-0.36.2-pyhd3eb1b0_0
  xz                 pkgs/main/osx-64::xz-5.2.5-h1de35cc_0
  zlib               pkgs/main/osx-64::zlib-1.2.11-h1de35cc_3


Proceed ([y]/n)? y


Downloading and Extracting Packages
setuptools-52.0.0    | 721 KB    | ##################################### | 100% 
certifi-2020.12.5    | 140 KB    | ##################################### | 100% 
wheel-0.36.2         | 33 KB     | ##################################### | 100% 
ca-certificates-2021 | 121 KB    | ##################################### | 100% 
readline-8.1         | 333 KB    | ##################################### | 100% 
python-3.7.9         | 19.7 MB   | ##################################### | 100% 
openssl-1.1.1j       | 2.2 MB    | ##################################### | 100% 
pip-21.0.1           | 1.8 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate edukit
#
# To deactivate an active environment, use
#
#     $ conda deactivate

次に環境の移動

(base) オレ@MacBookAir ~ % conda activate edukit
(edukit) オレ@MacBookAir ~ %

(base)から(edukit)に変わりました。
が、次のexport.shでまたコケました

(edukit) オレ@MacBookAir ~ % . $HOME/esp/esp-idf/export.sh 
Setting IDF_PATH to '/Users/オレ/esp/esp-idf'
Adding ESP-IDF tools to PATH...
Using Python interpreter in /Users/オレ/opt/miniconda3/envs/edukit/bin/python
Checking if Python packages are up to date...
The following Python requirements are not satisfied:
click>=5.0
pyserial>=3.0
future>=0.15.2
cryptography>=2.1.4
pyparsing>=2.0.3,<2.4.0
pyelftools>=0.22
gdbgui==0.13.2.0
pygdbmi<=0.9.0.2
reedsolo>=1.5.3,<=1.5.4
bitstring>=3.1.6
ecdsa>=0.16.0
Please follow the instructions found in the "Set up the tools" section of ESP-IDF Getting Started Guide
Diagnostic information:
    IDF_PYTHON_ENV_PATH: (not set)
    Python interpreter used: /Users/オレ/opt/miniconda3/envs/edukit/bin/python
    Warning: python interpreter not running from IDF_PYTHON_ENV_PATH
    PATH: /Users/オレ/.espressif/tools/xtensa-esp32-elf/
〜〜〜以下略〜〜〜

Getting Started Guideを読みやがれと。。。
う〜ん、まあなんか
IDF_PYTHON_ENV_PATH: (not set)
が怪しそうだな。。。と思いつつも先に進める。。。

3. デバイス証明書の取得と登録

(edukit) オレ@MacBookAir % cd Core2-for-AWS-IoT-EduKit/Blinky-Hello-World/utilities/AWS_IoT_registration_helper
(edukit) オレ@MacBookAir AWS_IoT_registration_helper % pip3 install -r requirements.txtRequirement already satisfied: awscli>=1.18.202 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from -r requirements.txt (line 1)) (1.19.11)
Requirement already satisfied: cryptography>=2.7 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from -r requirements.txt (line 2)) (3.4.6)
Requirement already satisfied: pyasn1_modules==0.1.5 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from -r requirements.txt (line 3)) (0.1.5)
〜〜〜中略〜〜〜
Requirement already satisfied: chardet<5,>=3.0.2 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from requests->requests-aws4auth==1.0.1->-r requirements.txt (line 10)) (4.0.0)
Requirement already satisfied: certifi>=2017.4.17 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from requests->requests-aws4auth==1.0.1->-r requirements.txt (line 10)) (2020.12.5)
(edukit) オレ@MacBookAir AWS_IoT_registration_helper %

なんかうまくいった模様
早速、デバイス証明書の取得と登録
シリアルデバイスは前のページと同じく
/dev/cu.usbserial-0225F023
を指定

(edukit) オレ@MacBookAir AWS_IoT_registration_helper % python registration_helper.py -p /dev/cu.usbserial-0225F023 
Pyserial is not installed for /Users/オレ/opt/miniconda3/envs/edukit/bin/python. Check the README for installation instructions.
Traceback (most recent call last):
  File "registration_helper.py", line 42, in <module>
    import esptool
ModuleNotFoundError: No module named 'esptool'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "registration_helper.py", line 49, in <module>
    import esptool
  File "/Users/オレ/esp/esp-idf/components/esptool_py/esptool/esptool.py", line 38, in <module>
    import serial
ModuleNotFoundError: No module named 'serial'

またエラー。。。
モジュールがないだけなので、何も考えずserialとesptoolをインストール!

〜〜〜まずはserial〜〜〜

(edukit) オレ@MacBookAir AWS_IoT_registration_helper % pip install serial
Collecting serial
  Downloading serial-0.0.97-py2.py3-none-any.whl (40 kB)
     |████████████████████████████████| 40 kB 4.5 MB/s 
Collecting future>=0.17.1
  Using cached future-0.18.2.tar.gz (829 kB)
Requirement already satisfied: pyyaml>=3.13 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (from serial) (5.3.1)
Collecting iso8601>=0.1.12
  Downloading iso8601-0.1.14-py2.py3-none-any.whl (9.5 kB)
Building wheels for collected packages: future
  Building wheel for future (setup.py) ... done
  Created wheel for future: filename=future-0.18.2-py3-none-any.whl size=491059 sha256=52d0697b9ade772839886084076f64bc586b6c0869c69f501ce868c4d720f95a
  Stored in directory: /Users/オレ/Library/Caches/pip/wheels/56/b0/fe/4410d17b32f1f0c3cf54cdfb2bc04d7b4b8f4ae377e2229ba0
Successfully built future
Installing collected packages: iso8601, future, serial
Successfully installed future-0.18.2 iso8601-0.1.14 serial-0.0.97

〜〜〜つづいて esptool 〜〜〜

(edukit) オレ@MacBookAir AWS_IoT_registration_helper % pip install esptool
Collecting esptool
  Downloading esptool-3.0.tar.gz (149 kB)
     |████████████████████████████████| 149 kB 9.1 MB/s 
Collecting bitstring>=3.1.6
  Using cached bitstring-3.1.7.tar.gz (195 kB)

〜〜〜中略〜〜〜

Successfully built esptool bitstring reedsolo
Installing collected packages: reedsolo, pyserial, bitstring, esptool
Successfully installed bitstring-3.1.7 esptool-3.0 pyserial-3.5 reedsolo-1.5.4

インストール完了!
ということで、再度チャレンジ

(edukit) オレ@MacBookAir AWS_IoT_registration_helper % python registration_helper.py -p /dev/cu.usbserial-0225F023

〜〜〜なんかちょっとwarning...笑〜〜〜

Conda 'edukit' environment active...
Python 3.7.x detected...
AWS CLI configured for IoT endpoint: xxxxxxxxxxxxxx-ats.iot.us-west-2.amazonaws.com
Checking module (1 of 13): awscli>=1.18.202

〜〜〜中略〜〜〜

Checking module (2 of 13): cryptography>=2.7
Requirement already satisfied: cryptography>=2.7 in /Users/オレ/opt/miniconda3/envs/edukit/lib/python3.7/site-packages (3.4.6)

〜〜〜13 of 13まで略〜〜〜

-----------------------------------------
Completed checking/installing package dependencies

Generating ECDSA 256-bit prime field key...
Generating self-signed x.509 certificate...
Successfully created x.509 certificate with expiration in 365 days...
Connecting....
Changing baud rate to 921600
Changed.
RAM boot...
Downloading 31364 bytes at 3ffb0000... done!
Downloading 456 bytes at 3ffb8f28... done!
Downloading 1028 bytes at 40080000... done!
Downloading 107384 bytes at 40080404... done!
Downloading 4 bytes at 4009a77c... done!
All segments done, executing at 40081bf0
Wait for init
- CLI Initialised
>>

>>

Serial Number:
012345678901234567
Generating Manifest
>>

Crypto Authentication Root CA 002
-----BEGIN CERTIFICATE-----
MIIB8TCCAZegAwIBAgIQd9NtlW7IrmI

〜〜〜中略〜〜〜MG1TrVv7HhhfdFyhYmA==
-----END PUBLIC KEY-----

Validate Device Certificate:
OK

012345678901234567
reading slot 0 public key
>>

reading slot 1 public key
>>

reading slot 2 public key
>>

reading slot 3 public key
>>

reading slot 4 public key
>>



Generated the manifest file 012345678901234567_manifest.json in output_files
Created policy Default
Number of certificates: 1

Loading the manifest_item...
    Unique ID: 012345678901234567

Try importing certificate...
Response: {'ResponseMetadata': {'RequestId': 'なんか', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 19 Feb 2021 15:54:26 GMT', 'content-type': 'application/json', 'content-length': '209', 'connection': 'keep-alive', 'x-amzn-requestid': 'なんか', 'access-control-allow-origin': '*', 'x-amz-apigw-id': 'a__P5HbyPHcF6FA=', 'x-amzn-trace-id': 'Root=なんか'}, 'RetryAttempts': 0}, 'certificateArn': 'arn:aws:iot:us-west-2:なんか:cert/なんか', 'certificateId': 'なんか'}
Certificate import complete - returning
MANIFEST_IMPORT     SUCCESS arn:aws:iot:us-west-2:なんか:cert/なんか  arn:aws:iot:us-west-2:なんか:thing/012345678901234567

Number of ThingIDs to check: 1
Checking the manifest item(1)
    Unique ID: 012345678901234567
Manifest was loaded successfully

おお、うまくいったようです〜!

4. ESP32ファームウェアの更新

(edukit) オレ@MacBookAir AWS_IoT_registration_helper % cd ../..
(edukit) オレ@MacBookAir Blinky-Hello-World % aws iot describe-endpoint --endpoint-type iot:Data-ATS
{
    "endpointAddress": "xxxxxxxxxxxxxx-ats.iot.us-west-2.amazonaws.com"
}

上で表示されたエンドポイントを控えておきます
xxxxxxxxxxxxxx-ats.iot.us-west-2.amazonaws.com ←これ

で、Kconfigによる設定

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py menuconfig            
The following Python requirements are not satisfied:
pyparsing>=2.0.3,<2.4.0
pyelftools>=0.22
gdbgui==0.13.2.0
pygdbmi<=0.9.0.2
Please follow the instructions found in the "Set up the tools" section of ESP-IDF Getting Started Guide
Diagnostic information:
    IDF_PYTHON_ENV_PATH: (not set)
    Python interpreter used: /Users/オレ/opt/miniconda3/envs/edukit/bin/python
    Warning: python interpreter not running from IDF_PYTHON_ENV_PATH
    PATH: /Users/オレ/.espressif/tools/

〜〜〜中略〜〜〜

ESP-IDF v4.2-238-g8cd16b60f

むー、またGuideを見やがれが出てConfig画面でない。。。
どうやら先にあったIDF_PYTHON_ENV_PATHがないのが気に入らないらしい。
が、そもそも何を設定するんだ???
ディレクトリを歩き回り、
/Users/オレ/opt/miniconda3/envs/edukit
こんなのがあったので、とりあえず

(edukit) オレ@MacBookAir Blinky-Hello-World % export IDF_PYTHON_ENV_PATH="/Users/オレ/opt/miniconda3/envs/edukit"

気を取り直して

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py menuconfig
The following Python requirements are not satisfied:
pyparsing>=2.0.3,<2.4.0
pyelftools>=0.22
gdbgui==0.13.2.0
pygdbmi<=0.9.0.2
To install the missing packages, please run "/Users/オレ/esp/esp-idf/install.sh"
Diagnostic information:
    IDF_PYTHON_ENV_PATH: /Users/オレ/opt/miniconda3/envs/edukit
    Python interpreter used: /Users/オレ/opt/miniconda3/envs/edukit/bin/python

ESP-IDF v4.2-238-g8cd16b60f

お、さっきと違うエラー。
install.shを実行せよと。

(edukit) オレ@MacBookAir Blinky-Hello-World % /Users/オレ/esp/esp-idf/install.sh
Installing ESP-IDF tools
Installing tools: xtensa-esp32-elf, xtensa-esp32s2-elf, esp32ulp-elf, esp32s2ulp-elf, openocd-esp32
Skipping xtensa-esp32-elf@esp-2020r3-8.4.0 (already installed)

〜〜〜中略〜〜〜

Installing Python environment and packages
Creating a new Python environment in /Users/オレ/.espressif/python_env/idf4.2_py3.7_env

〜〜〜お、IDF_PYTHON_ENV_PATHに使えそうなのが表示された〜〜〜

Installing virtualenv
Collecting virtualenv

〜〜〜中略〜〜〜

Successfully built Flask-Compress
Installing collected packages: MarkupSafe, Werkzeug, python-engineio, Jinja2, itsdangerous, click, bidict, python-socketio, pycparser, greenlet, Flask, brotli, six, Pygments, pygdbmi, gevent, Flask-SocketIO, Flask-Compress, cffi, reedsolo, pyserial, pyparsing, pyelftools, gdbgui, future, ecdsa, cryptography, bitstring
Successfully installed Flask-0.12.5 Flask-Compress-1.9.0 Flask-SocketIO-2.9.6 Jinja2-2.11.3 MarkupSafe-1.1.1 Pygments-2.8.0 Werkzeug-0.16.1 bidict-0.21.2 bitstring-3.1.7 brotli-1.0.9 cffi-1.14.5 click-7.1.2 cryptography-3.4.6 ecdsa-0.16.1 future-0.18.2 gdbgui-0.13.2.0 gevent-1.5.0 greenlet-1.0.0 itsdangerous-1.1.0 pycparser-2.20 pyelftools-0.27 pygdbmi-0.9.0.2 pyparsing-2.3.1 pyserial-3.5 python-engineio-4.0.0 python-socketio-5.0.4 reedsolo-1.5.4 six-1.15.0
All done! You can now run:

  . /Users/オレ/esp/esp-idf/export.sh

(edukit) オレ@MacBookAir Blinky-Hello-World %

なんかうまくいったっぽい
export.shを実行せよとのことなので

. /Users/オレ/esp/esp-idf/export.sh
Adding ESP-IDF tools to PATH...
Using Python interpreter in /Users/オレ/.espressif/python_env/idf4.2_py3.7_env/bin/python
Checking if Python packages are up to date...
Python requirements from /Users/オレ/esp/esp-idf/requirements.txt are satisfied.
Updated PATH variable:

〜〜〜中略〜〜〜

Done! You can now compile ESP-IDF projects.
Go to the project directory and run:

  idf.py build

(edukit) オレ@MacBookAir Blinky-Hello-World %

今度はさらっとexport.shが完了!
この時点でIDF_PYTHON_ENV_PATHを確認すると

(edukit) オレ@MacBookAir Blinky-Hello-World % echo $IDF_PYTHON_ENV_PATH
/Users/オレ/.espressif/python_env/idf4.2_py3.7_env

おぉ、ちゃんと設定されている!

ということは、Minicondaをインストールしたときに
~~ export.shを実行する前に、適当なIDF_PYTHON_ENV_PATHを設定して ~~
~~ install.shを実行すればよかっただけな予感。。。

↑ではなく、初めて(edukit)に環境移動した直後、export.shの前だな、きっと

というわけで再度チャレンジ!

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py menuconfig
Executing action: menuconfig

やっとでましたよ〜Config画面!
スクリーンショット 2021-02-20 1.41.50.png

ここからはドキュメント通り、
先ほど控えておいたエンドポイントと自宅のWifi設定を入れて保存後に終了
すると同時に

Running cmake in directory /Users/オレ/m5stack/Core2-for-AWS-IoT-EduKit/Blinky-Hello-World/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /Users/オレ/m5stack/Core2-for-AWS-IoT-EduKit/Blinky-Hello-World"...
-- Found Git: /usr/bin/git (found version "2.24.2 (Apple Git-127)") 
-- IDF_TARGET not set, using default target: esp32
-- The C compiler identification is GNU 8.4.0
-- The CXX compiler identification is GNU 8.4.0
-- The ASM compiler identification is GNU

〜〜〜中略〜〜〜

-- Configuring done
-- Generating done
-- Build files have been written to: 

〜〜〜以下略〜〜〜

無事Configできたっぽい

ではBuildを!

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py build
Executing action: all (aliases: build)
Running ninja in directory /Users/オレ/m5stack/Core2-for-AWS-IoT-EduKit/Blinky-Hello-World/build
Executing "ninja all"...
[0/1] Re-running CMake...
-- Building ESP-IDF components for target esp32

〜〜〜なんとか走り始めました! ここから結構時間がかかります〜〜〜

[1244/1244] Generating binary image from built executable
esptool.py v3.0
Generated /Users/オレ/m5stack/Core2-for-AWS-IoT-EduKit/Blinky-Hello-World/build/AWS_IoT_EduKit-Blinky-Hello-World.bin

Project build complete. To flash, run this command:
/Users/オレ/.espressif/python_env/idf4.2_py3.7_env/bin/python ../../../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/partition-table.bin 0x10000 build/AWS_IoT_EduKit-Blinky-Hello-World.bin
or run 'idf.py -p (PORT) flash'

おぉ、ついにbinができあがりました!
転送する前にドキュメント通りに古いファームを消します

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py erase_flash -p /dev/cu.usbserial-0225F023 
Executing action: erase_flash

〜〜〜中略〜〜〜

esptool.py v3.0
Serial port /dev/cu.usbserial-0225F023
Connecting........___
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:f9:9f:ac
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Erasing flash (this may take a while)...
Chip erase completed successfully in 26.2s
Hard resetting via RTS pin...
Done

きえました!
では、転送します!

(edukit) オレ@MacBookAir Blinky-Hello-World % idf.py flash monitor -p /dev/cu.usbserial-0225F023 
Executing action: flash

〜〜〜中略(しばし待ちます)〜〜〜

I (7508) esp_netif_handlers: sta ip: xxx.xxx.xxx.xxx, mask: 255.255.255.0, gw: xxx.xxx.xxx.xxx
I (7528) Blinky: Connecting to AWS IoT Core...
I (7708) aws_iot: Attempting to use device certificate from ATECC608
I (20048) Blinky: Successfully connected to AWS IoT Core!
I (20048) Blinky: Subscribing...
I (20398) Blinky: Subscribed to topic: 012345678901234567/#
I (20398) Blinky: 
I (20398) Blinky: **************************************
I (20398) Blinky: Client Id - 012345678901234567
I (20408) Blinky: **************************************

やっとAWSに接続できました!!!

5. Lチカ

もうあとは簡単です。
ドキュメント通りにAWS IoT Coreコンソールで状態確認!
IoT_Dashboard.png

Publishの入力画面で
<Client ID>/blink
をtopicにpublishすると
M5Stackの横にあるLEDが点滅し、
もう一回同じようにpublishすると点灯状態になります!

L_CHIKA480.gif

Macのターミナルではこんな感じでモニターすることができます
(4回publishしています)

I (635748) Blinky: Subscribe callback
I (635748) Blinky: 012345678901234567/blink {
  "message": "Hello from AWS IoT console"
}
I (650488) Blinky: Subscribe callback
I (650488) Blinky: 012345678901234567/blink {
  "message": "Hello from AWS IoT console"
}
I (731598) Blinky: Subscribe callback
I (731598) Blinky: 012345678901234567/blink {
  "message": "Hello from AWS IoT console"
}
I (738968) Blinky: Subscribe callback
I (738968) Blinky: 012345678901234567/blink {
  "message": "Hello from AWS IoT console"
}

6. とりあえず

IoTの勉強というよりも、環境設定のラボのようですが
とりあえずLチカのラボ終了!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む