Skip to content

Latest commit

 

History

History
127 lines (70 loc) · 11.7 KB

chap-oyakata-why.md

File metadata and controls

127 lines (70 loc) · 11.7 KB

増える積み基板(Test章兼書き方例)

oyakata

積み基板ありますか?

ここで、ちょっとした調査結果を示しましょう。

積み基板の有無に関するアンケート

周知不足で12票だけですが、そのうち11票(92%!)が「積み基板がある」という圧倒的な多数。別に実施したSlack内でのアンケートでも、8割の人が積み基板があるという回答でした。日本人の1億1千万人が積み基板を持っているということですね!

積み基板とは、Arduinoをはじめとした小型基板、マイコンボードをとりあえず購入はするけれど、大して使うこともなく積んでいる状態と定義します。作りたいものがあるようないような、あるいは作りたいものはあったけれど飽きたり挫折したりして手が止まって放置状態になっている様と考えてください。

家にArduinoとかM5Stackとか、その他いろいろなマイコンボードがある人は正直に挙手を。1枚や2枚、あるいは10枚100枚ありますよね?ありますよね?

とりあえず買っちゃう問題

新しいボード、ガジェットを見かけたらとりあえず買っちゃう人、いますよね?心当たりがある?

とりあえず買っちゃうこと自体は悪いことではありません。たぶん。いろいろ特長のあるボードが日々発売されていますからね。とりあえず手元に置いておきたい気持ちは、とってもよくわかります。送料とかもあるから、とりあえず2個3個買っておくかしら、と買うこともあるでしょうね。

今まで別ボードだったWi-Fiが内蔵された、DAが内蔵された、小型になった、低消費電力になった、GPIOが増えた、Linuxが動く、Windowsが動く、などなど。様々な機能が追加されますね。

身もふたもないことをいってしまうと、最大の原因はそれです。使わないものを買うのはやめましょう。といって話が済むなら、そんな簡単なことはありませんね。また、新しいデバイスを使ってみるというのは、それはそれで大きなモチベーションになります。

製作モチベーションを消し飛ばす様々な障害

では、積み基板ができる理由は何でしょう?以下の理由を挙げて、それぞれ説明したいと思います。

なお、ここでは積み基板を作る原因ということでハードウェア寄りの説明をしましたが、ソフトウェア開発においても類似の問題があるかもしれませんね。

  • 作るものがない
  • 市販品がある
  • 作るのが難しい
  • モチベーションがなくなる
  • Lチカ後の具体的な事例がない(安価で、簡単に実装できて、便利な使い方の事例集が必要)
  • 本ない問題

作るものがない問題

マイコン1使って何か作ろうと思いつきますか?あったら便利かも、と思うような小規模なデバイスを考えてみてください。何か思いつきますか?

案外思いつきませんよね。

趣味とはいえ、モノづくりの基本は、課題解決だと考えます。ちょっと困ったこと、解決したいことがある、改善したいことがある、というのは、モノ作りの最大のモチベーションたりえます。

「朝テレビやPCで今日の天気予報をチェックする(ためにテレビ/PCをつける)のがめんどくさいので、自動更新の天気予報表示デバイスを作る」といったモチベーションがあればどうでしょう?作ってみたくなりませんか?

でも、そんなことを思いつかなかったら、マイコンで遊ぶために何かを作る、ということになってしまい、「何を作るか」で途方に暮れてしまうでしょう。たいていの場合、目的がはっきりしないため、作りたいものがなく、何かを作るために作るという、手段が目的化してしまいます。エンジニアは、手段を目的化することに喜びを見出してしまう度し難い生き物である場合が多いですが、それでも何かを作ることが目的化すると、なかなかつらいことになってしまいます。

さて、手段が目的化するといいましたが、最初はその目的化した手段で遊ぶことで十分に楽しめます。最初の閾値は低いのです。マイコンを買ってきましょう。とりあえず起動するかのテストしましょう。チカチカチカ。ふう。はて、何を作るんだっけ……

正気に戻ってしまいましたね。正気に戻ってしまうと、そのあとのモチベーションが続きません。作り上げるまでに必要な膨大なマイルストーンと周辺技術の習得に対し、絶望してしまいます。

市販品がある

運よく何か「作りたいもの」が見つかりました。

ちょっと困ってるんだよなぁ……こんな機能があったらちょっと幸せになれるかも。ぜひ頑張りましょう。

おっと、ここで、「似たような機能を持つ」ものを探してはいけませんよ。

世の中には、さまざまな製品があふれています。あなたの課題を解決してくれるばっちりな製品があるかもしれません。いやきっとあるでしょう。あなたが課題・困っていることは、世の中のたくさんの人が同じように困っていることです。ということは、誰かがそれを解決する素敵なデバイス・ツールを開発してくれて、市販してくれていることでしょう。

家の鍵をかけたか心配→鍵をかけたか通知する装置を作ろう。いいモチベーションですね。

Amazonやクラファンサイト、あるいはAliExpressのようなサイトを覗きにいってはいけません。きっとあなたの課題を解決するおしゃれで素敵なデバイスが見つかります。見つかってしまったら…もう作るモチベーションは消し飛んでしまいます。

作るのが難しい

幸いにして、作りたいものが見つかり、市販品の洗礼を受けずに済みましたね。では作り始めましょう。

まず、要件定義をしましょうか。何をする装置で、そこに有するべき機能は何だろう。機能を洗い出してみましょう。

先ほどの、鍵をかけたか通知するシステムを再度考えてみましょう。

鍵をかけたというアクションに対して、①鍵をかけたことを検知し、②メールか何かに通知する というふたつの要素が必要です。では、鍵をかけたことをどうやって検知しましょう?鍵の動きをスイッチで検出しますか?それとも?

おっと?手が止まりましたね。

いろいろ調べてみても、なかなかよいアイディアが見つかりません。

検知した結果を通知するには、どうしましょう?その機能をイチから作る?なかなか絶望的ですね。何かよいツールがある?探すのもなかなか大変、使い始めるための環境を整えたり、小規模なテストをしたりするまでのハードルもあります。ここでも手が止まりました。なかなかつらい…

このあたりまでくると、「問題を解決するのが楽しい」と思える人と、「山積みの課題に絶望する」人の二パターンに分かれてきます。

幸いにして、小規模な進捗を積み重ねて楽しみながら進めるスキームを構築できたらよいですね。楽しみながらがんばりましょう。山積みの課題に絶望してしまったらつらみが…そしてそのつらみに気づいてしまったら、仕事でもない個人開発では、なかなか手が動かなくなってしまうでしょう。

モチベーションが続かない

「何かを作り上げる」ということは、それ自体が大変な偉業です。

特に一気通貫で作り上げられるような小規模なものであればともかく、様々な要素が含まれる開発においては、それぞれの技術要素に対処しなければいけません。前述のように山積みの課題に対して、一か所で躓いたら…

つまづく部分がクリティカルな部分であるとは限りません。むしろ周辺ポイント、些細な部分であればあるほど、それは重くのしかかってきます。

電子工作的な話題を取り上げる本ですから、電子工作の例で示しますが、「手持ちの電源がなくて現場(玄関)テストができない」といった些細だけれど、痛い問題があったとしましょう。では、電源を一から作りますか?めんどいですね…

こういった、些細な地雷がいたるところに埋まっています。そして、あなたのモチベーションを消し飛ばす瞬間を手ぐすね引いて待っています。

Lチカ後の具体的な事例がない

少し視点を変えて、何かを作ってみる、という観点で考えたときに、思いつくものが少ないという点に近い話です。

安価で、簡単に実装できて、便利な使い方や作品例があるでしょうか?

そして、他の人が作ってしまっていると、試行錯誤や自分で考えて作るという楽しみは薄れてしまいます。

作り方がわからなくて絶望したり、かたや全容が見えてしまってつまらなくなってしまう。どちらに転んでもめんどくさくなってしまいます。その気持ちはとってもよくわかります。

本/情報がない問題

作品例を探しに行きましょう。似たようなものを作ってみた記事をあげているBlogが見つかりました。

参考にして進めてみましょう。あれ?途中で切れていますね…更新頻度が下がって、半年前で途切れています。

これは3か月後のあなたかもしれません。

電子工作の本を探してみましょう。

XX入門、よさげな本です。デバイスの説明と、電子工作の基本や作例がいろいろありますね。まずはこれを参考にしてみましょうか。

あれ?あなたの作りたいものに対して必要な要素の一部が欠けていますね。

うーん、いろいろなところから断片を探してくるのはなかなかつらい……

死の谷問題

モチベーションを消し飛ばそうとする様々な地雷、そして作りたいものの要件・要素を邪魔する様々な要因について述べてみました。モチベーションが消し飛んだ結果、それは「積み基板」として手元に残ります。

おっと、絶望しないでくださいね。この後、それぞれへの対処を取り上げます。ある意味で、漠然とした不安や問題点が一番つらいところ。課題が明確になれば、当然対処は可能です。

Footnotes

  1. マイコンと書きましたが、特にデバイスを指定するわけではなく、ArduinoでもRasPiでもmBedでも、その他でも構いません。入出力があって、プログラミングできる小型の基板やデバイスを総称するくらいのつもりで考えてください。