マトリョーシカ的日常

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

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

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

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


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

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

続きを読む

学生でなくなっても可能性は無限大だし、日々は楽しいよ。

f:id:kyokucho1989:20191225053539j:plain
Photo by John Fowler on Unsplash


広島大学ITエンジニアアドベントカレンダーの25日目の記事です。

 楽しそうなアドベントカレンダーを見つけたので、少し前のことを思い出しながら文章を書こうと思う。私は少しほど前は学生をしていた。授業に出て、単位をとり、サークルに通って適度にバイトをしていた。広島大学のキャンパスは無駄に広くてなんだか自由な雰囲気が出ていた。私はそこで機械工学を学んだ。ITではない。

 なぜ機械を選択したのか、不思議でならない。そもそも願書を出す直前までは、私は電気系を志望していた。それがどういう経緯かは忘れたがメカメカしい学科を選択していたのだ。そういうちょっとした食い違いが今日の私を作っていることもあって、人類の神秘である。

 いろんなことをやってみようとしたし、実際やった。自分ではない何かになりたかった。何者かになりたかった。あの大学の自由な風を浴びていたら、いつか自分もすごいことができるようになるのでは、とちょっとした期待があった。だけれど、結局私は普通の人間であるということがわかった。そうだった。

 みんな大人になってしまって、わたしももれなく大人になってしまって、こうして広島の地に生きている。それでもどこか、現状に抗う自分がいて、いろいろやってしまっている。「まだやれるんじゃないか、まだ間に合うんじゃないか」そういった思惑もある。答えは大きくYESだった。全然OK。

 毎年二つか三つか四つか五つか、十ほどの新しいことに取り組んでいる。楽しげな日々を過ごしている。なかでもM5Stackはすごい。これ一つでなんでもできるのではないか。実際できそうだ。単純なLチカだけで済ませるにはもったいないマイコン。来年はSORACOMのサービスを使って彼の知性を有効に活用したい。

 デバイスだけでなく、もっと人とかかわりを持って生きていきたい。オフラインのイベントに行けたらいいが、地方在住ということもあって、なかなか難しい。まずはオンライン上のコミュニティでふんばっていこう。それこそm5stackのユーザーグループとか、farmtory-labでわっしょいやろう。

 そんなかんじで学生でなくなっても、可能性は無限大だった。やれることはいくらでもあるし、私は一人だけど世界は世界だった。今が一番若いという理論を信じて、これからもよろしくお願いします。


 できることならもう一度サークル棟の前でジャグリングしていたいけどね。