数種類の振動を作りたいなら専用の振動ドライバーDRV2605Lがおすすめ

AdafuritのDRV2605LモジュールにLRAアクチュエータを載せた

振動で色々試したいなら自分でタイミングと強さを制御するより振動モータードライバのDRV2605Lにある115種類のプリセットから選ぶほうが簡単。I2Cで制御できてアドレスが変えられないものの、I2Cマルチプレクサを使って複数個制御もすんなり出来た。

DRV2605L搭載のモジュール自体は、日本からの入手性だと毎度おなじみAdafruitかsparkfunなんだけど、AdafuritのほうがSTEMMA QT/Qwiicコネクタ(以下Qwiicにします)搭載してて楽ですね。AdafruitからはQwiicコネクタで分岐する8chのI2Cマルチプレクサ(PCA9548搭載)が出ているので、8個まで簡単にQwiicシステムで繋いで制御できる。

Adafruit DRV2605L 触感フィードバックモジュール — スイッチサイエンス
STEMMA QT/Qwiic - PCA9548搭載8チャンネルMux拡張基板 — スイッチサイエンス

SeeedのXIAOと拡張ボードからPCA9548につないでDRV2605Lにつながっている

115種類ってどんなの?

データシートからスクショを載せておきます。引用の範囲でしょう。Adafruitに英語はあるので日本語のやつにしました。自分が使った素子の限界的にはトリプルクリックはトリプルに感じなかった。いくつか同じエフェクトが載っているのは謎。

https://www.ti.com/product/ja-jp/DRV2605L

振動素子自体はERMとLRAのどっちがいいか?

ERMよりもLRAのほうが変な挙動になった時に安全な感じがあった。あと、振動がどちらかといえば上品で小さい振動の表現力が高く感じる。どっちにしろ下手な実装するとマイコンのフラッシュに書き込む部分が死ぬので気をつけてほしい。

実はDRV2605L側でディレイできる

setWaveform関数を使って0.01秒単位から1.27秒までディレイできる。エフェクトが127までで、それ以降の数字を書き込むとディレイって判断されるようになっているので。AdafuritのPythonの方では関数化していたが、なぜかArduinoにはなかったので自分で実装した。もっと良い書き方あると思うのでそこは勘弁して……。

Adafruit_DRV2605 drv;

// 1.27秒までdelay可能 
void driveMotorWithDelay(int effectIndex, float delayTime = 0){
  float dTime = delayTime;
  if(dTime <= 0.01 || dTime >= 1.27) dTime = 0;
  int castedDelay = (int) (dTime*100.0);
  uint8_t delayedVal = 0x80 | castedDelay;
  drv.setWaveform(0, delayedVal);
  drv.setWaveform(1, effectIndex);
  drv.setWaveform(2, 0);
  drv.go();
}

複数個制御するときの注意点

AdafuritのArduino用DRV2605ライブラリを使ったんだけど、Adafruit_DRV2605型を配列にして実装したら、変なエラーがたまに出た。たまに、なのでこれが厄介だった。I2Cマルチプレクサはマイコン側には同一アドレスを提供するのでシンプルに配列をやめて単体の変数にして制御したら問題なかった。最初からそうしておけば……。複数個動かす最低限のコードは多分これ。検証していないので、もし動かなくて修正して体力気力が余っていたらコメントでお知らせしてください。

#define PCAADDR 0x70
#define NUM_DRVS 7
Adafruit_DRV2605 drv;

void setup(){
  Wire.begin();

  for (int i = 0; i < NUM_DRVS; i++) {
    pcaselect(i);
    drv.begin();
    drv.selectLibrary(6);
    drv.useLRA();
    drv.setMode(DRV2605_MODE_INTTRIG);
  }
}

void pcaselect(uint8_t channel) {
  if (channel > 7) return;
  Wire.beginTransmission(PCAADDR);
  Wire.write(1 << channel);
  Wire.endTransmission();
}

void driveMotor(int motorIndex, unsigned char effectIndex){
  if(motorIndex == noMotorIndex || motorIndex < 0) return;

  pcaselect(motorIndex);
  drv.setWaveform(0, effectIndex);
  drv.setWaveform(1, 0);
  drv.go();
}

デザインスプリントによる全投影空間におけるアイデア発想コンテンツの開発

デザインスプリントの実践例を共有します。実際にやってみるとき、デザインスプリントの実践的な例があると助かるなぁと思っていたのですが、自分自身が複数回主催して経験も溜まったので書いておきます。

経緯

部屋の全五面(壁と床)に投影する空間であるRICOH PRISMのコンテンツのひとつ、BRAINWALLをディレクション&開発しました。BRAINWALLはアイデア発想を目的としたソフトです。企画&開発にデザインスプリントを採用してみたらハマった感じあって、以降エッセンスを再利用したり別のチームにやってみてもらったりなどしていました。

miso-engine.hatenablog.com

最初はリコー社さんのチームに開発メンバーとして入ったのですが、メンバーには主体的にインタラクションのあるものの設計をした経験がないと言うことが分かって、デザインスプリントすることを提案し、採用されました。

この時、まず思いついたのがSFCでの学生時代に奥出先生の授業でやったデザイン思考のプロセスでした。こちらはデザイン思考の源流たるIDEOの人々の実践をベースに奥出先生自身が研究室で積み上げたメソッドになっていて、何をやるか細かく指定されていて、それは最初とても窮屈に感じたのですが、なんとかこなしていくと中々手応えのある答えに辿り着けた記憶があり(ただしこの時の成果は奥出先生的には評価低そうでした笑)、書籍をあたってみたのですが、授業でやった時より大雑把に感じて、他の書籍も当たってみました。

そこで出会ったのがオライリーの書籍となっていたデザインスプリントです。ステップが細かく分かれており、各ステップでやることは極めて明確で迷いません。当時の私は体験設計を人に教えつつ実践することに不安があったので、何をやるか明確になるデザインスプリントの本は本当に助かりました。

デザインスプリント概略


デザインスプリントは5つのステップに分かれていて、1日1ステップをやりPDCAのサイクルを1週間で回し切ってしまおうとういう手法です。概要の画像は デザインスプリントを導入して分かった 3 つのメリットと注意点【前編】 - Pepabo Tech Portal から。

BRAINWALLのデザインスプリント


BRAINWALLのデザインスプリントの過程をがんばって1枚のスライドに起こしました。BRAINWALLの制作チームは、社内副業システムで来ている方が多く、週1日しか副業の時間がなかったため、週1回で約1ヶ月半で最初のスプリントを回しました。本来のデザインスプリントからするとかなり長期間ですね。

スコープとして「RICOH PRISMという全投影空間を利用したアイデア発想支援システム」というのが設定されまして、そこからデザインスプリントの過程を経て最も検証すべき仮説として「絵を描いたほうが良いアイデアが出る」を設定しました。

面白かったこと

検証すべき仮説「絵を描いたほうが良いアイデアが出る」は、当初からずっと議論の対象でした。というのも、絵を描くか文字のみにするかで大幅に設計や開発工数が変わるからです。デザインスプリントのプロセスを進めていくうちに一旦話題から消えて、仮説を選択するとき再浮上してきました。そして全員の合意でこれを検証することになった。

実はこの仮説に対して、僕は絵は描かなくても良い派だったのですが、やはり絵というのは重要で絵を描くほうが良いか、変わらない程度の結果を想定していました。しかし、蓋を開けてみるとなんとびっくり、絵がない文字だけのアイデア出しのほうが、量も質も上だったのです。*1

重要な対立点、設計のポイントで、しっかり検証することの重要さが身にしみた瞬間であり、先入観から作られた予想が裏切られる快感がある瞬間でもありました。その後のBRAINWALLは音声で入力し概念を言葉で遊んでいく、そんなブレストをファシリテーションするツールになりました。

ある種非人間的に感じるタイムボクシングや、個人で考える時間を取らせること、でクリエイティビティが高まることを実感できたのも個人的にはかなり価値を感じています。会議中に議題からズレていたり、長過ぎる話をスパッと止めても良いなと思えるようになりました。会議や共同作業の質が上がると、話を止められる不快感をカバー出来る、てことですね。

良かったこと

レトロスペクティブ

  • 振り返りって本当に重要
  • 改善点を見渡すのも大事だが、良かった部分を探すのもチームに効果がある
  • 明示的に振り返ることで宙ぶらりんなタスクの発生が防げる

タイムボクシング

  • 待ち時間を細かく分割して少しづつ目標を達成していく時間制限の手法
  • 『デザインスプリント』曰く「時間を決めて作業するというのは、デザインスプリントの成功にとって必須の要件」
  • 時間を区切って議論することに慣れてもらえたかなと思います

グループシンク(集団浅慮)を避ける

  • 集団で作業をすると誰かがやってくれるだろうと思い、考えることに手を抜いてしまう現象
  • 『デザインスプリント』曰く「グループとしてではなく、一人ひとりがアイデアを生み出すことによって最も高い効果を得られます」
  • 濱口氏の『SHIFT:イノベーションの作法』でも同趣旨の言及あり
  • アイデア出しがひとりで付箋に書き出す作業なのはこのためでした
  • いろいろなフェーズで会話を禁止してみるのオススメです

アイデアの生成と共有に慣れる

  • 時間を区切ってメンバー全員に平等に繰り返して行うことでこれらの作業に慣れてもらいました
  • アイデアに対しての執着が消えるのが良いです
    • 一般に非デザイナーはここが強いので

投票によって全体の意見を可視化

  • 普通のMTGではあまりしないと思いますが、チーム全体の意識が可視化できて便利なのでBRAINWALLでは頻繁にしました
  • 『デザインスプリント』ではシール数無制限の「サイレント投票」と制限ありの「スーパー投票」があり「1万円テスト」という傾斜投票システムもあります

チームを分割する

  • 『ミーティングのデザイン』曰く「チームの人数が増えると繋がりの数が指数的に増大する」ので、チームを分割して抑えました
  • 作業内容(ストーリーボードやワイヤーフレーム作成)によってはもっと少ない単位(ペアなど)に分割も良いです

本には書かれてないけど押さえておきたいポイント

実は2つのラインが同時に走っている問題

オライリーのデザインスプリント本を忠実に守ると、実は下の2つのラインが同時に走っているんですね。

  • 最有力な仮説を検証する
  • システムのワイヤーフレームを完成させ合意する

これは本の中では直接言及されない部分なので、意識しておきたいところ。何も言わずにやると今やっている作業と次やる作業と整合性が取れないな、と参加者が思ってしまうので。

細切れにやっていくと参加者がなにをやったか忘れてしまう問題

週1でフェーズを1個ずつやっていったのですが、先週なにをやったか忘れてしまいます。共有の会議室でやっていたので、中間生成物を張り出したままにしておく事もできないので、暗黙に参加者の記憶に定着させることも出来ないのは辛かったですね。

写真に撮って、最初のスライドでおさらいすることで解決しました。特に理解フェーズの「目標と目標でないこと」や「課題の定義」は極めて重要なので、ここは再加工して専用の部屋に張り出したりもしました。

絵描けない

絵の描き方教えたほうがアイデアの発散時に良いですね。VISUAL THINKINGの本の描き方を教えて、絵に対する苦手意識をカバーしました。

特殊なテク

BRAINWALLチーム、デザインスプリントをやる前は、やる気はあるものの共通理解がない状態、具体的に言うといろんな人が自分の考えるシステム像を前提にそれぞれのメンバーと話した結果、人ごとに全く異なる前提を踏まえた状態になっていました。そこで、普通は使わないテクニックとして、個別に議論するのをやめてもらいました。議論は週一回のデザインスプリントの日のみにするということです。

話が好きなメンバーばかりで議論も活発なのですが、話題が転がっていくことも多いので、事前に告知した上で議論を制止させてもらうこともしました。前提はどうなっているのか?と思った瞬間に聞いていく、という感じでしたね。そして聞いたらその前提をホワイトボードに書き、合っているか確認する作業をかなりすることで、どこまでが共通理解なのか?を可視化することに成功しました。

また、話を短くしてもらいたいので、結論から話せるなら話してもらうことにしました。デザインスプリントは時間にシビアなので、お願い出来る関係性があるならお願いしたいところです。

参加者の声

デザインスプリントの途中にやったレトロスペクティブで集まった声です。

経験を踏まえてデザインスプリントでやりたいことを抽象化してみた記事

miso-engine.hatenablog.com

おわりに

このようにデザインスプリントの手法等を用いて関係者の皆さまを巻き込んだ企画のファシリテーションから、プロトタイピング、PoC、実際の実装まで、ディレクションとプロジェクトマネジメントもしながらエンジニアリングをやっています。ここまでなんでも屋をやっていると自称すると、うさんくさく感じると思うのですが、実際にやってみると同じテクニックが横展開出来るので、なんとかやれている感じです。ワンストップで一気通貫にやりたいな、という方はお気軽に声掛けください。

*1:科学的な実験と言えるレベルの厳密さはありませんが、デザインスプリントで求められている程度にはしっかりやりました