マトリョーシカ的日常

ワクワクばらまく明日のブログ。

広く深く楽しいIoTの本 /IoTエンジニア養成読本 設計編

f:id:kyokucho1989:20200120220111j:plain

 難しく考え過ぎていた。雪は降らなかった。当たり前と思っていたことがそうではなかったりした。日々の暮らしにいくつかの句読点をうち、私はそれを読み進めていく。IoTが熟成していく。日本語もままならない。
 「IoTエンジニア養成読本 設計編」を読んだ。非常に養成された。ここまで広く深くIoTに言及している本はないのではないか。どこか皆IoTを未来っぽい技術だと思って、距離を置いて発言してるがこれはそうではなかった。IoT使われるデバイス、通信、クラウド、セキュリティ、それらが散りばめられている。自分の中でなんとなく頭に入っていた言葉たちが体系化されてきた。この感覚は久しぶりで興奮する。

 前にも書いたが、IoTは全ての知識を頭に入れておく必要はない。そして全ての技術を自分で開発する必要もない。大切なのは生産性の向上である。IoTをやって、自分や周りが豊かになればそれでいいのだ。お金をかけてもいいなら、既存の良いサービスを使ってしまおう。クラウドやデバイス、良いものはたくさんある。私がおすすめするのはM5Stack + soracom である。これでだいたいのデータは可視化できてしまう。機械学習やエッジコンピューティングとかをやろうと思ったらAWSやラズパイが入ってくるだろうが、それはまたそれの話。

 この本に書いてあることもやりながら学んでいけばいい。

 つまり、自分の得意な領域だけでなく、センサーからの情報取得方法、組み込みコンピューティング、ネットワークの設定、クラウド、判断のためのアルゴリズムや機械学習など、多岐にわたる知識と技術を一定レベルで習得しておけば、自らの手で新しい価値を生み出すことができる可能性ができるのです。

「IoTエンジニア養成読本 設計編」p150

 そうだね、そのとおり。

IoTとセキュリティ

 本書にも書かれていたが、IoTにはIoTならではのセキュリティ上のリスクがある。デバイスが小さく、マシンパワーが小さい。そして保守が困難な場合が多い。誰かがさーと持ち帰ってしまうかもしれないし、デバイスに複雑な暗号処理をさせるようなことは難しい。どうするか。

 経済産業省がIoTセキュリティガイドラインを発表している。
IoTセキュリティガイドラインを策定しました(METI/経済産業省)

 これをふまえて、セキュリティを色々考えていくといい。社内の啓蒙や、ロギング、リリース後の保守などさまざまなことが書かれている。


 ざっくりと本を紹介した。楽しい本だった。今後もざっくり本の感想を書いていくぞ。

Photo by brandon siu on Unsplash


機械設計とプログラミングはちょっと似てる/「リーダーブルコード」

f:id:kyokucho1989:20200116045528j:plain
 加工機の切削音が私の体を揺らしていた。六軸のロボットたちは今日もげんきに部品を振り回して、それぞれにセットしている。ブロワとときどきのアラーム音。私はここで生きている。あるいは文章を補給しなければならなかった。自身の中の言葉はとうの昔に枯渇していて、私はだれかのセリフをそのまま伝えるだけのテープになった。ここでメモを書こう。

 リーダブルコードを読んだ。より良いコードを書くためのテクニック、とうたっているだけあって、いろいろと優れていた。共感したのは「優れたコードは理解しやすいコードである」ということだ。たしかにそうだった。コードは機械だけではなく、人も読むものである。なにかを共同でつくるとき、保守するとき、コードは自分以外の人に読まれる。そのときに理解に時間がかかってしまうものではダメなのだ。自分以外の人とは数ヶ月後の自分も含まれる。

 後半の章は、わたしのレベルではまだまだ活用できそうにないが、前半のものはすぐに適用できそうだ。変数名や関数名をもっとわかりやすいものにしたり、コメントをつけることだ。類語辞典を使って、もっと明確な意味がないか探すというのは「なるほど!」と思った。

 本書が述べている「優れたコード」の価値観は、機械設計でも適用できる。図面をかくときも、わかりやすいものでなければダメだ。寸法の抜けがあったり、基準面が一致していなかったり、加工の実現性のないものをかいてはダメだ。


 ただ、もっとも優れた機械設計というのは設計しないことだ。わたしたち技術者はの仕事は、技術的な問題を解決することだ。図面をかくのが仕事ではない。設計せずに問題が解決できるならこんなに素晴らしいことはない。購入品で済ませる、ありもので済ませる。これらのことを考え抜いて、それでもだめなら設計する。きっと、コードをかくときも、こんなイメージでいいのではないか。

 リーダブルコードの全てを理解してつかいこなすのはまだまだ時間がかかりそうだ。けれども、手元にはあったほうがいい。わからないことがあったら、少しずつこれで調べていこう。

Photo by Tedward Quinn on Unsplash

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者:Dustin Boswell,Trevor Foucher
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)

知りたがりーなワクワクさんとルクレーティウス/「ハードウェアハッカー」

 それらしく日々が過ぎていく。正月中に少しだけ本を読んだ。先日の「最軽量のマネジメント」に加えて、「ハードウェアハッカー」のページをめくっていた。これほどまとめづらい本は久しぶりだった。

 超優秀なエンジニアがこの世の理を理解しようとしていた。そんな印象を受けた。著者のバニーさんは、メイカー界隈ではくっそ有名な人物らしく、いろんな人が紹介していた。わたしは知らなかった。彼は深センから捲き上るハードウェア熱にわりと初期から飛び込んでいて、本書にもいろんなレポートが記されていた。すごいな。本当に深センという場所はあるのだろうか。いつかいきたい。

 4章からなんかすごいことになっていた。PICマイコンを分解して、中のシリコンチップの構造を推定していた。また、フラッシュメモリの中のセキュリティヒューズというやつに、紫外線をうまい具合にあてて、それをリセットしていた。何してるんだこの人は。

 あと、コンピュータウィルスと通常のウィルスを比較して語っていたのも面白い。著者は、生物を「IPアドレスを持つコンピュータ」と考えた。そして、生物の機能的な細胞群を「独自のアクティブなポート」としてとらえていた。人間を殺すウィルスのビット数を計算していた。何してるんだこの人は。

ハッカー精神とは、ルクレーティウス的なあれ

 ハッカー精神は、人間の問題解決能力を表現する究極のものだ。だれかに決められた社会の構造やしきたりではなく、自分自身の目で世界がどのようなものか見極める能力といえる。
 アンドリュー ”バニー” ファン著「ハードウェアハッカー」 p401


 きっと著者は知りたがり〜なわくわくさんなのだろう。私たちが日々漫然といきている中で、彼は物事の仕組みや原理や構造を理解したいと欲しているのだ。だから考え、試し、記録している。「物の本質」のようだ。

matoyomi.hatenablog.com


 そうか、上記の書評記事からもう五年が経っているのか。あのころの方が、大人の文章を書けていた気がする。

 ルクレーティウスの時代と比べたら、物事のメカニズムは少しずつ明らかになりつつある。しかし、まだ意識や脳の根元には届いていない。ペンローズさんの量子脳理論とかは面白いけど。

matoyomi.hatenablog.com


 そういったわけで、わたしもバニーさんのようにハッカー精神をもった人間になりたい。ソフト、電気、機械、生物、デザイン、おおよそのあれを学びたい。そして死ぬまで生きてやるぞ!

Photo by andreas kretschmer on Unsplash

ハードウェアハッカー ~新しいモノをつくる破壊と創造の冒険

ハードウェアハッカー ~新しいモノをつくる破壊と創造の冒険

Ruby on Rails でBundler::LockfileErrorになったけど解決できた話

 去年も書いていたけど、最近はRubyを勉強している。なにか面白そうなプロダクトをつくったみたいからだ。去年はRubyを頑張ってやって、クラスのあたりがなんとなく理解できるようになった。よし、「いよいよRailsだ!」と思ってやってみたら上記のエラーが出た。解決策をググっても情報が散逸していたのでメモ代わりにまとめようと思う。

 環境設定が終了したのち、はじめて `rails s` コマンドをつかってWEBサーバーを立ち上げようとしたら以下のエラーが出てきた。

(前略)
in `warn_for_outdated_bundler_version': 
You must use Bundler 2 or greater with this lockfile. 
(Bundler::LockfileError)

 なんぞこれ、と思って調べてみると...わからん。いまいち説明がわからん。bundlerというのが指定されていたバージョンとは異なるもので、それでエラーが起きている...らしい。
https://odenden.com/you-must-use-bundler-2-or-greater-with-this-lockfile/

 上記の記事を参考に

$ gem list bundler

 をターミナルに入力した。すると、

*** LOCAL GEMS ***
bundler (2.1.2, default: 1.17.2)

 と出た。たぶんこの2.1.2とdefaultの1.17.2が合えば問題ないのだと思う。

やったこと

 
stackoverflow.com

 上記の記事を参考にいろいろやった。私の場合は、ターミナルで

$ gem update --system
$ bundle update --bundler

 を打ったら上記のエラーは直った。railsのバージョンは

$ rails -v

としたら 「Rails 6.0.2.1」と表示された。

まだエラーが出る。

 「これでいいだろう」と思ったがまだエラーが出る。

(略)
No such file or directory @ rb_sysopen - 
(略) hello_world_sample/config/webpacker.yml (Errno::ENOENT)
~~
Webpacker configuration file not found 
(略) hello_world_sample/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - (略) hello_world_sample/config/webpacker.yml (RuntimeError)

 二種類のエラーが出た。Errno::ENOENTとRuntimeErrorだ。調べるとどちらも同じ現象から起きるらしい。
webpackerというのがPCにインストールされてないよ、ということらしい。

vviilloovv.hatenablog.com
qiita.com

 上記の2つの記事を参考にターミナルに打っていく。私の場合はyarnというのがインストールされていなかったらしいので、さきにそれをインストールする。

$ brew install yarn

そして、

$ bundle exec rails webpacker:install


 OK。これで rails sを実行した。

やったー!確認できた!

おわりに

 これからもRailsをいろいろ勉強していくぞ。


Photo by Nicolas J Leclercq on Unsplash

軽みのある書評というかメモを目指す/最軽量のマネジメント


 今年から書評という枠組みはとらないことにした。自分の中で他にも優先すべきことが増えたからだ。今までは書評の内容を二、三日かけて考えていたが、それはちょっともったいない。文章としてもっと軽みをもって記事を書いていきたい。

 「最軽量のマネジメント」を読んだ。サイボウズの人が書いた本で、これからの世の中のマネジメントについてなんか書いていた。最軽量とはマネージャーひとりに負担をかけず、軽快に動き回れるという意味合い。今までの承認印祭り、会議祭り、スケジュール調整祭りとは離れよう!という感じだった。

続きを読む