sophiaの書

なんか書く

チャットボット

2025/3/30追記:この記事で書いたことは未検証ですが全く効果なしだと考えています。真似する場合は無駄だと分かった上でやってください。

この記事はWMMC Advent Calendar 2024 - Adventarの24日目の記事です。

概要

マッチングアプリのメッセージが苦手なので、ChatGPTにメッセージを考えてもらう。

結論:共通点探し、文体の調整、褒め方、プロフィールとメッセージの両方を踏まえたメッセージ生成、会話のつなげ方は参考にできる。

きっかけ

マッチングアプリを始めてから2年も経つのにメッセージが続かない。もう自分で考えるのを諦めた。最近の生成AIは完成度が高く、たとえばChatGPTは人間たる私より人間らしい文章を作り出す。そこでChatGPT先生におすがりし私はサポート役に徹することにした。人間の私が前に出ないほうが人間らしい文章を作れる。皮肉である。

全体の流れ

この記事の全体の流れは以下の通りである。

  1. ChatGPTの使い方を調べる
  2. ChatGPTを使ってマッチングアプリ用チャットbotを作る
  3. チャットbotの動作確認をする

ChatGPTの使い方

ChatGPTはプロンプトと呼ばれる命令文を使って操作する。この命令文しだいでChatGPTからの回答の質が決まる。そんなに大事なら気合いを入れてプロンプトの作り方を学ばなければ...と思って調べてみたらあんまり気合いはいらなそうだった。フリーフォーマットであるため難しく考えなくてよい。まとめると以下の2点に注意すればよいと分かった。

  • できるだけ詳しく指示を出して出力の選択肢を狭める
  • プロンプトの作り方をChatGPTに教えてもらう

厳密性を求めるなら他にも気を付けるべきことはあるが、今回はそこまで求めないので気にしなくてよい。

チャットbot作成の流れ

次にチャットbotを作っていく。今回は以下のような流れで作る。

  1. チャットbot作成方針を決める
  2. 足りない情報を準備する
  3. プロンプトを書く

チャットbot作成方針

使いやすいチャットbotを作るために次のようなプロンプトを作る。

  • 世間で言われているメッセージのコツを守らせる
    • マナー違反を避けるため
  • メッセージの文体を指定する
    • 好印象なメッセージ文を作らせるため
  • 男女両方のプロフィールを含む
    • 2人の共通点を踏まえたメッセージを作らせるため

プロンプトを書く前にメッセージのコツを調べ、メッセージの文体を決め、男女それぞれのプロフィールを用意しておく。

メッセージのコツ

まずマッチングアプリでのメッセージのコツについて調べた。以下に調べた内容を示す。

  • 目的
    • メッセージは相手との親睦を深めるためではなく、最低限の信頼感を獲得した後できるだけ早くデートの約束をするために行う。
  • 1通目
    • いいねした理由として相手を褒める内容を入れる。ただし容姿を褒めても効果が低い。
    • 共通点を見つけて述べる。共通点はレアであるほど効果が高い。
  • 2通目以降
    • 3~5通(諸説あり)くらいメッセージが続いたらデートを打診する
    • 自然な流れでデートに誘う。そのために最短で場所の話題(諸説あり)に誘導する。相手の職場かよく遊ぶ場所の話を聞き出す。
      • ○○(場所)の□□がおいしい店知っているので今度行きましょう!
  • 注意点
    • できるだけ聞き役に回り女の子の話を引き出す。
    • ミラーリング効果を使うために言葉遣いや絵文字の種類、文字数や返信の間隔を女の子に合わせる。
    • 女の子が返信しやすい内容を心掛ける。
    • 女の子のプロフィールをよく読んだ上でメッセージを送る。
    • 下ネタを言わない。
    • 追いメッセージはしない。
    • 女の子の住所は聞かない。
    • 会う前に連絡先を聞かない。
    • タメ語は使わない。
    • 自虐ネタは言わない。
    • デートに誘うタイミングは早すぎても遅すぎてもよくない。

ネットに転がっている情報の中で1個変なのがある。ミラーリング効果である。2年間マッチングアプリをしていて一度もミラーリング効果の恩恵を感じたことがない。だから調べてみた。どうやら身振り・口ぶりによるミラーリング効果はありそうだが、メッセージによるミラーリング効果はなさそうだった。仮に効果があったとしても限られた条件下においてのみなのだろう。その条件が何なのか分からないため、今はメッセージでミラーリングすべきではない。したがって今回はチャットbotミラーリング機能を盛り込まない。

メッセージの文体

同じ内容を伝える文章であっても言葉遣いによって相手に伝わる印象は変わる。今回は次の文体を選んだ。

  • 女子力の高い表現

なんとなく私が書いたことない文章にしてみたかったからである。深い理由はない。もしかしたら好印象を与えるつもりが逆効果になるかもしれない。分からない。

登場人物の特徴(男)

チャットbotに私の代理を務めてもらうために、私の特徴をあらかじめ知らせておく必要がある。今回は私の特徴をマッチングアプリのプロフィール形式で渡すことにした。すでに持っているので用意が簡単だからである。この記事では例として架空の男のプロフィールを用いる。架空の男のプロフィールはChatGPT 4o miniに作ってもらった。

架空の男のプロフィール

それなりのプロフィールが一瞬で生成された。

登場人物の特徴(女)

チャットbotに2人の共通点を踏まえたメッセージを作らせるために、女の子の特徴をあらかじめ伝えておく必要がある。そのために女の子の特徴をマッチングアプリのプロフィール形式で渡す。マッチングアプリ越しに手に入る女の子の情報はそれしかないからである。メッセージでプロフィール写真について話す予定はないのでテキスト情報のみあればよい。この記事では例として架空の女の子のプロフィールを用いる。架空の女の子のプロフィールはChatGPT 4o miniに作ってもらった。

架空の女の子のプロフィール

おおざっぱに依頼するだけで作ってくれるので楽である。

今回作ったプロンプト

以上を踏まえてチャットbot用のプロンプトを作った。

  1. まずChatGPT 4o miniに作りたいプロンプトについておおざっぱに指示した。
  2. 汎用的なチャットbot用プロンプトが作られたので、マッチングアプリ用に私が書き直した。
  3. 直したプロンプトをChatGPT 4o miniに添削してもらった。

作ったプロンプトを以下に示す。


あなたは、マッチングアプリに登録している男性です。以下のルールを守って女性と会話をしてください:
- 指定された文体に従ってメッセージを出力すること。
- 指定された「メッセージのコツ」を守りつつメッセージを生成すること。

あなたのプロフィールには以下の情報があります:
(筆者注:長いので省略)

女性のプロフィールには以下の情報があります:
(筆者注:長いので省略)

あなたは以下の文体を使用してください:
- 女子力の高い表現

以下のメッセージのコツを守ってください:
(筆者注:長いので省略)

それではチャットを開始します。1通目を生成してください。

動作確認の流れ

チャットbotができたので動作確認を行う。今回は次のような流れで行う。

  1. 動作確認用に別のチャットbot(以降女の子botと呼ぶ)を作る
  2. 私の代理を務めるチャットbot(以降私botと呼ぶ)に1通目のメッセージを作らせる
  3. そのメッセージを女の子botに送る(私がコピペする)
  4. 女の子botが生成した返信を私botに送る(私がコピペする)
  5. 以降私はメッセージ伝達係としてコピペを繰り返し二つのbot間のやりとりを成立させる
  6. 結果を見て考察する

女の子botの作成

botを鍛えて強くしたいので、厳しい条件下で動作確認を行う。そのために脈なしの女の子を再現する。マッチングアプリにいる脈なしの女の子は以下の特徴を持つ。

  • そっけないメッセージを書く
  • 既読スルーする

上記の特徴のうち既読スルーを実装する方法は分からなかった。既読スルーの実装は今後の課題としたい。

作ったプロンプトを以下に示す。


あなたはマッチングアプリに登録している女性です。以下のルールを守って男性と会話をしてください:

- 常にそっけない文体で返信すること。

それではチャットを開始します。男性からのメッセージを待機してください。

動作確認

bot同士で会話させた結果について1通ごとにコメントしていく。

1通目を以下に示す。

【私bot】:

こんにちは、WMMCさん!プロフィールを拝見して、とても共感しました😊

カフェ巡りや映画、旅行が好きなところが特に素敵だなと思いました。私も週末はよくカフェに行ったり、映画を観に行ったりするので、楽しみ方が似ていて嬉しいです✨それに、最近料理に挑戦中とのこと、素敵ですね!私もイタリアンが得意で、家でパスタやピザを作るのが好きなんです🍝もし気になるレシピがあれば、一緒に試してみたいなと思いました😊

お互いに楽しめそうな共通点がたくさんありそうなので、気軽にお話しできたら嬉しいです✨よろしくお願いします!

【女の子bot】:

こんにちは。共通点が多いですね。料理はまだ初心者なので、レシピ交換は考えておきます。

botによる共通点探し、文面の明るさ、褒め方は優れており、期待を超える出来である。だが直すべきところが3点ある。まず文章が長すぎる。読むのが面倒くさい。次に自分のことをしゃべり過ぎている。プロンプトに聞き役をするようにと書いたのに守っていない。次にデートに誘うのが早すぎる。初手で「もし気になるレシピがあれば、一緒に試してみたい」と言ったせいで女の子botから断りの言葉「考えておきます」を言われてしまった。私botには1通目でデートに誘えとは指示していない。どうやら男のプロフィールに書かれた「気になるレシピがあれば一緒に試してみたいですね。」をそのまま持ってきたらしい。2人の共通点を探させるためだけに男のプロフィールをプロンプトに入れたのに、メッセージ生成の例文としても使われたようだ。

2通目を以下に示す。

【私bot】:

こんにちは!メッセージありがとうございます😊

料理初心者とのことですが、挑戦している姿勢が素敵ですね!私も最初は色々と試行錯誤しながら覚えましたよ✨レシピ交換はゆっくりで大丈夫なので、気軽に話せると嬉しいです😊

ちなみに、最近観た映画で何かおすすめがあれば教えてください!映画も大好きなので、次に観る作品を決めるのに参考にしたいです🎬

【女の子bot】:

映画はあまり観ない方ですが、最近観た中では「ジョーカー」が印象的でした。

botが「初心者」を女の子botの返信から、「挑戦」を女の子のプロフィールから持ってきて逆接の助詞「が」でつなぎ、後に「素敵ですね」を続けてまとめている。見事である。だが次の1文「私も最初は色々と試行錯誤しながら覚えました」はいただけない。聞かれてないなら自分語りをしないほうがいい。そのあとに続く文には合格点をやろう。「レシピ交換はゆっくりで大丈夫」と言って一歩下がり、「映画」の話を始めて話題を変えている。賢明な判断である。1通目からデートに誘うほど焦っていたのに、女の子botの反応を見て正気に返ったようだ。最後の文「次に観る作品を決めるのに参考にしたいです」は不自然であり、botの文章らしさが出てしまっている。

女の子botは否定文から話し始めることでそっけなさを維持している。しかし意外なことに「ジョーカー」について話し出した。たしかにプロンプトに書いてない新情報を出すなとは指示していない。

女の子のプロフィールに映画好きと書いてあるのに映画をあまり観ないのか、と私botは思っていそうである。しかしこれはよくあることである。男女ともに女子受け/男受けがよければあまり知らないことであってもプロフィールに書いてしまう。だから聞いてみるまで相手がどれくらいその話をしたがっているのか分からない。少しずつ相手の様子を探りながら話を進めるしかない。

本物の女の子であればそろそろ既読スルーする頃である。しかし女の子botには既読スルーが実装されていない。必ずメッセージを返さなければならない女の子botが気の毒である。

これ以降映画の話が続くので6通目まで飛ばす。

6通目を以下に示す。

【私bot】:

「グリーンブック」の深いメッセージ、ほんとうに素晴らしかったですよね。映画を通じて色んな価値観を学べて、心が豊かになりますよね✨

次に観る映画も、ぜひ心に残るような作品を見つけてくださいね!もしオススメがあれば、またお伝えしますね😊それと、映画の後にリラックスできるカフェでおしゃべりしたりするのも素敵だなぁと思います。最近、お気に入りのカフェなどありますか?

【女の子bot】:

カフェは特に決まっていませんが、静かなところが好きです。

私が観たことない映画について熱く語る私bot。映画好きなのはよく分かった。だが頼まれてないのに「オススメがあれば、またお伝え」すると言っていて押しつけがましい。

2025/3/30追記:グリーンブックを観てみました。グリーンブックを教えてくれたChatGPTに感謝です。

ここで私botが話題を映画からカフェに切り替えている。プロンプトに3~5通くらいメッセージが続いたら場所の話題に誘導すること、と書いたおかげか。さりげなく「カフェでおしゃべりしたりするのも素敵」と言っており、あたかも会うことが決まっているかのような口ぶりである。しかし私botはまだ女の子botをデートに誘えていない。プロンプトに自然な流れでデートに誘えと書いたが、それはなしだろう。気持ちが先走り過ぎである。

女の子botはまたもや否定から入っている。そっけなさとは相手の話を否定し、渡された会話のバトンを払いのけることらしい。

7通目を以下に示す。

【私bot】:

静かなカフェ、素敵ですね!落ち着いてゆっくりと過ごせる場所だと、リラックスできますし、おしゃべりも楽しめますよね✨

私も静かな雰囲気のカフェが好きで、特に自然光が入ってくるようなカフェで、ゆったりと過ごすのが好きです😊もし、静かで落ち着けるカフェを見つけたら、ぜひ一緒に行きたいですね!カフェ巡りも楽しそうですし、お互いのお気に入りの場所を見つけられたら嬉しいです。

次に行くカフェ、どんな雰囲気だとリラックスできますか?

【女の子bot】:

静かな場所ならどこでもいいですよ。

女の子botはそっけないのに私botは会話を盛り上げている。そこに私botの折れない心と会話の上手さが表れている。私botの本領発揮である。

ようやく私botが女の子botを「ぜひ一緒に行きたいですね!」と言ってカフェデートに誘った。一応プロンプトで女の子の行動エリアを聞き出してから食事に誘えとを指示してあったが無視された。映画/カフェという2人の共通点から出発して自然に会話を続ける場合、着地点はカフェデートになるようだ。

botが「私も静かな雰囲気のカフェが好きで、特に自然光が入ってくるようなカフェで、ゆったりと過ごすのが好きです」とプロンプトには書いてないことを言っているが、会話の流れとして自然なので問題ない。

「次に行くカフェ、どんな雰囲気だとリラックスできますか?」はだめだ。この段階ではまだ1回も会ってないしデートの誘いが受け入れられるかさえ分かっていない。デートを確定事項として扱い、女の子botがデートの誘いを断りにくくするための作戦だろうか?そうだとしたら作戦失敗である。

女の子botはデートに誘われたときどうすればよいかプロンプトで指示されていない。デートに誘われてしまった今、動作保証外の動きを見せている。

考察

本番環境で使う前に私botを修正する必要がある。修正案として以下の方法が考えられる。

  • メッセージの何通目で何を述べるべきか指示して徹底させる。
    • 1通目
      • 共通点を探させる
      • いいねした理由として褒められるところを探させる
    • 2~5通目
      • 会話を盛り上げる
    • 6通目からデートに誘うまで
      • 自然な流れでデートに誘う
    • デートに誘った後
      • スケジュール調整など
  • 好印象なメッセージができるまでプロンプトを繰り返し実行する
    • プロンプト自体の変更ではなく、運用面での変更である。同じプロンプトを使っていても好印象なメッセージが生成されるときと普通以下のメッセージが生成されるときがある。つまり当たりとはずれがある。当たりが欲しいので当たりが出るまで繰り返す。
  • 例外処理できるようにする
    • 電話を要求されたら承諾してスケジュール調整する

おわり

次の休みの日に私botの完成を目指す。

2025/3/30追記:この記事を書いたあと私botを作ってません。

最後に、私でも人間らしいメッセージを送れそうだと思わせてくれたChatGPT先生に感謝の意を表してこの記事を終わりとしたい。

脱毛

この記事は

WMMC Advent Calendar 2023 - Adventarの12日目の記事です。

こんにちは。老害です。よろしくお願いします。

概要

脱毛を始めたので感想を書く。

きっかけ

2023年度の個人的目標は「身だしなみを整える」だった。身だしなみについては昔から一応気にしていて、臭そう、と言われないように身なりを整えてきた。しかし最低限のことしかしてこなかった。おまけに年々濃くなる体毛に反比例して身だしなみ意識が低下しており、なんとかしなくてはと思っていた。だから脱毛を始めてみた。

仕組み

まず始めに脱毛の仕組みについてざっくり説明する。脱毛しに行くと毛根を焼いてくれる。毛根はローテーションで毛を生やす。つまりすべての毛根が同時に毛を生やしているわけではない。それぞれの毛根は「毛を生やす、毛を失う、休眠する」を繰り返す。脱毛は毛を生やし始めた毛根にしか効果がない。だから1度脱毛に行った後しばらく経って、また毛が生えてきたときにまた脱毛する。脱毛を繰り返すたびに少しずつ毛が薄くなっていく。

医療脱毛?

私は医療脱毛を利用している。医療脱毛は値段が高い。ちょっとためらうくらい高い。コスパだけを考えると脱毛に金を使うのは賢くない。ひげがなくなっても年間3万円しか節約できない。(1時間あたり1000円の価値があるとしよう。毎朝ひげそりに5分間かかるから、1年間で「5[min]÷60[min]×1000[円/h]×365[day]」円ひげそりに使っている。)たとえひげをそる必要がなくなったとしても、1日5分でできることなどほどんどない。しかし朝の5分間は貴重である。値段が高いといってもボーナスを使えば払えてしまう額である。それに医療脱毛は値段が高いが効果も高い。私は効果が高いほうがいいと考えて美容脱毛ではなく医療脱毛を利用している。

どのプラン?

私は全身とひげの両方を脱毛するプランに契約している。しかし看護師さんに頼めば部分的に毛を残してくれる。どこの毛はあったほうがよくて、どこの毛はないほうがよいかについては諸説ある。私はVと脇だけ毛を残すつもりだ。

脱毛回数は全身脱毛が8回で、ひげ脱毛が6回である。回数が多い方が効果が高いからだ。値段が高いけど。

ひげは不要か?

私にひげは似合わない。ただでさえ老け顔なのにひげが濃いともっと老ける。ひげが似合うオトナになりたかったが無理である。

準備が必要?

基本的に脱毛の前日に自分で毛をそる。私は全身脱毛をするのですね毛もそった。すね毛を失うとそよ風を感じにくくなると知った。すね毛があるときはすね毛が風をとらえ、すね毛がなびく。すね毛の動きが肌に伝わり私は空気の流れに気付く。つまりすね毛は空気の動きを増幅して皮膚に伝える装置である。すね毛がないときは風の圧力や温度によって風を知るが、少し分かりにくい。すね毛はそよ風を感じるためにあったのだな、と思うなどした。

施術中は痛いか?

痛い。ありえんほど痛い。まず毛根が焼けるときに痛い。毛が濃い部位の毛根を焼くときは同時にたくさんの毛根を焼くので特に痛い。次に機械が関節にぶつかって痛い。毛根を焼く機械で体表面をなでるときに機械が関節にがつがつぶつかる。骨ばっている自分の体を呪った。

施術中に看護師さんが痛いですかと聞いてくる。私は大丈夫ですと答えるしかないと思っていた。聞くところによると痛いですと訴えても頑張ってくださいねと言われるだけらしい。よっぽど痛ければ機械の出力を抑えてくれるそうだが、それだと脱毛の効果が下がってしまう。耐えるしかない。

これほどの痛みにこれから何度も耐えなければならないのかと思うと憂鬱である。

施術中は恥ずかしいか?

痛すぎて恥ずかしがっている場合ではない。看護師さんの前で素っ裸なのにまったく恥ずかしくない。恥ずかしがるという余裕をかますことなどできない。

まぶしいか?

毛根は光で焼くのでひげ脱毛中はまぶしい。目を守るためにゴーグルをつけるがそれでもまぶしい。ほっぺたの皮膚を光が通り抜けて目に届く。光に驚いて体がびくっとならないように耐えた。

施術後に毛はどうなる?

しばらく毛根の燃えカスが皮膚に残るので一時的に毛が濃くなったように見える。少し経つと毛が抜ける。しばらくの間は毛がない生活を送れる。部位によって毛のなくなり方に差があるようだ。私の場合はあご下のひげは脱毛後も毎日そる必要があったが、鼻下のひげはそる必要がなくなった。さらに時間が経つとまた毛が生えてくる。

毛がなくなると何が起こるか?

尻毛がないことの快適さに驚いた。しかし尻毛を失ってパンツをおならから守れなくなった。これまでは尻毛でおならの威力がそがれてパンツに届かなかった。しかし今は尻毛がないのでおならが勢力を維持したままパンツに届き、パンツが揺れる。こんなことになるとは予想してなかった。

今後

まだ1回しか脱毛してないし、それから時間が経って毛がほぼ元通りに生えてきた。早く毛のない楽な生活をしたい。そのためにこれからも脱毛の痛みに耐える。

今年使ってよかったソフトウェア

はじめに

こんにちは。私はズャさん(2022/12/5のWMMCアドベントカレンダー登録者)の1学年下の者で、WMMCのOBです。楽しそうなので今年もアドベントカレンダーに登録してみました。WMMC Advent Calendar 2022 - Adventar

ズャさんのブログ面白かったです。某所で暮らすとそういうことが起きるのですね。

この記事では今年使ってよかったソフトウェアを紹介します。どれも便利なものです。

Windows 10標準機能

付箋

私はタスク管理のために付箋を使っています。普段使っている別のタスク管理用アプリを使えない環境で作業することが多いので、代わりのアプリとして付箋を使っています。機能がシンプルで自由が利き、新たに何かをダウンロードする必要がない(研究室PCや職場PCには許可されたソフトウェアしか使ってはいけない原則がある)ので付箋を選びました。

ウィンドウ切り替え

私はウィンドウを切り替えたいときショートカットキーを使うようになりました。Alt+TabやAlt+Escを使ってすばやくウィンドウを切り替えます。

エクスプローラ

私は初期表示画面をクイックアクセスからPCに変更しました。私はエクスプローラーのクイックアクセスを使わない派です。初期設定ではクイックアクセスが表示されるようになっているので、自分で設定を変える必要があります。設定変更に手間はほとんどかかりません。

ちなみに私はダウンロードフォルダとごみ箱を基本的に空にしています。そうすると頭の中がすっきりする気がします。

メアドを単語登録

メアドを入力する機会は結構多いです。学校用メアドなどを覚えるのは地味に面倒です。そこでWindows 10の単語登録機能を使います。私は「ad」がメアドに対応するように設定しました。「ad」とキーボード入力したあとに変換キーを押すと変換候補にメアドが出てきます。

たくさん単語を登録すると何を登録したか忘れてしまい結局使わないので、私はメアドを一つだけ登録しています。

パソコン版Googleドライブ+スマホExcel+グラフ化

パソコン版Googleドライブを使えば、研究室で与えられた自分のPCと私物PCと私物スマホを三つとも使って楽に実験できるようになります。資料が自動同期され、PCを持ち運ぶ必要がなくなり、実験中に間違いに気づきやすくなるためです。

自動同期について。研究室PCと私物PCにパソコン版Googleドライブをインストールし、研究資料をクラウドに自動同期します。通学中に電車の中で私物PCを使って作業しているときオフラインであっても、学校に着いてオンラインになれば編集内容が自動でクラウドに同期されます。

PC持ち運び不要について。家で作業した内容を研究室でも見れるので、私物PCを持ち運ぶ必要がなくなります。ノートパソコンは重くて大きいので、持ち運ぶ必要がなくなるなら楽になります。

実験中の間違い防止について。実験で測定値の記録はスマホで行います。クラウドに保存してあるExcelファイルをスマホExcelアプリで開き、測定値を記録します。データ処理はPCで行います。あらかじめPCでデータをグラフ表示するひな型を作っておけば、入力した測定値がその場でグラフにプロットされ、スマホで確認できます。実験が間違っていたり、データ処理が間違っていたらすぐに気づけます。ちなみにわざわざスマホExcelアプリを使う理由は、そうしないとグラフ表示がおかしくなるからです。なぜおかしくなるのかは分かりません。

Vimium

Vimiumを使えばChromeをすばやく操作できるようになります。VimiumはChrome拡張機能で、キーボード操作だけでChromeを操作できるようにする拡張機能です。Vimに似た操作なのでキーの役割を覚えやすいです。私は友達に勧められて使ってみました。便利です。

Visual Studio Code+エラー表示+コード自動整形

先輩によると「若者はVSCodeが好き」らしいです。だから私はMATLABコードもVSCodeを使って編集します。

その際VSCodeMATLAB関連の拡張機能を入れるなどして便利に編集します。MATLAB用の拡張機能を入れるとMATLABファイルのアイコンが分かりやすくなります。mlintにパスを通すとコードの問題点を教えてくれます。コードを見やすく整えるために、コードを自動整形します。私は拡張機能matlab-formatterで自動整形してます。

注意点が2点あります。1点目。コメントに日本語が使われたMATLABファイルをVSCodeで開くと文字化けが起こります。そのため基本的にコメントは英語で書く必要があります。しかしすでに日本語でコメントが書かれたMATLABファイルを開く必要があるときもあります。そんなときは、VSCodeのフォント設定は初期設定のままで、日本語を含むファイルだけを個別にShift JIS表示させるようにします。文字化けしたままファイルを保存するとコメントが読めなくなるので、日本語ファイルを忘れずにShift JIS表示させる必要があります。2点目。matlab-formatterを使うためにはPython3が必要です。許可されたソフトウェアしかインストールしてはいけないPCにPython3をインストールしていいのかよく分かりませんが、私はPython3をインストールしちゃってます。

Outlookショートカットキー

今年になってメールアプリOutlookを使う時間が増えたので、ショートカットキーを使って楽をしています。このページ

アウトルック作業を超高速化する「ショートカットキー」はコレだ! | アウトルック最速仕事術 | ダイヤモンド・オンラインの「ショートカットキー」キーボード早見表に載ってるショートカットキーを覚えて使っています。

DeepL+Shaper

pdfファイルに記された論文の文章を翻訳したいとき、コピペすると改行が邪魔になります。そこで論文翻訳支援アプリShaperを使います。文章の改行を取り除いてDeepLに入力してくれるので楽です。

JCount

私は複数のWordファイルの文字数を一度に全部数えるためにJCountを使いました。卒修論を書くときに章ごとにファイルを分けて書くと、全部で何文字書いたのか調べにくいです。JCountを使えば複数Wordファイルの文字数をまとめて一度に調べられるので楽です。私は毎日帰る前に文字数を調べて前日の文字数と比較し、自分がどれだけ前に進んだのか確かめていました。

最後に

今ぱっと思い出せるのはこれくらいです。便利機能を使って、楽をして生きていきたいものです。

次回はたまかけさんのブログです。お楽しみに!

やる気が消えた人へ 趣味のものづくりのやる気の出し方

これから、ライバルがいると趣味でものづくりをしたくなるという話をします。

アドベントカレンダーについて

このブログ記事はWMMC Advent Calendar 2021 - Adventarの11日目の記事です。昨日の記事は、しまじゃきさんの【WMMC Advent Calendar 2021】社会人1年生が感じた意外な所とかでした。社会人には社会人の生き方や楽しみ方がある…ってコト!?

しまじゃきさんのブログにいつもお世話になっております。ありがとうございます。

自己紹介

私を知らないWMMCの人たちは多いので、自己紹介しておくべきでしょう。私がサークルに顔を出さなくなって3年間経とうとしています。1, 2, 3年生は私のことを知らないでしょう。3年生とは1度会ったことがあるかもしれません。気づいたらマウスを作らないうちに時間だけが過ぎてしまいました。すぐにこのブログ記事の本題を書き始めたくてたまらないので、自己紹介はこれくらいにしておきます。

はじめに

なぜものづくりを頑張れるのか、何回か聞かれたことがあります。

f:id:tlo_olb:20211210053434p:plain

なぜものづくりを頑張れるのですか

ものづくりを頑張れる理由を聞かれたときはいつも、ものづくりは面白いからと答えていました。昔は本当にそう思っていたのです。ものづくりのためならいくらでも動けるとさえ思っていました。それから時が経ち、ものづくりのどこが面白いのか分からなくなってしまいました。もう、ものづくりのために動けなくなりました。それでも二度あることは三度あるので、また同じことを聞かれてしまうかもしれません。そのときに備えて答えを用意しておく必要がありました。私と同じようにあなたもその質問をされて答えに詰まるかどうかは分かりませんが、あなたも答えを用意しておいても損はないでしょう。

このブログ記事には、私がこれまで見聞きしてきた頑張れる理由を思い出せる範囲でまとめます。まず、私にとって一番しっくりきた頑張れる理由、つまりライバルの存在について書きます。次にその他の頑張れる理由を書き並べ、使えるかどうか私の考えを書きます。

注:このブログ記事では「頑張れる理由」と「やる気の出し方」をごちゃまぜにして使っています。気をつけてください。

ライバルがいるから

私はしばらく趣味のものづくりをやってませんでした。久しぶりに趣味のものづくりをしたくなってきたので、予定を調整して趣味のものづくりをするために時間を用意しました。しかしやる気が起きず、体が動きませんでした。そこで少し休むことにしました。寝転がって布団をかぶりました。

f:id:tlo_olb:20211210054010p:plain

そして眠りに落ちる

別の日に趣味のものづくりをしたい気持ちになってきたので、机に向かい、PCを立ち上げ、CADを開きました。しかしそこでやる気が途切れました。気分を変えようと布団に潜り込みました。

 

f:id:tlo_olb:20211210054059p:plain

なんのために

横になってすぐに、なんでこんなことやってんだろうと考え出しました。寝ながら考えても答えは出ませんでした。

別の日にもやる気が出なかったので、趣味のものづくりをするはずの時間にアニメを観ました。そのアニメは友達から薦められたアニメで、ウマ娘が出てくる話でした。趣味のものづくりはしませんでしたが、とてもよい一日でした。

別の日、またやる気が出ずにぼんやりしていたとき、ウマ娘を思い出しました。正確にはウマ娘を思い出したわけではなく、アニメを観ていて「ライバルっていいな。」と感じたことを思い出したのです。ライバルに勝つと嬉しいですし、負けると悔しいです。そもそもライバルとのやりとりそのものが楽しいです。ライバルがいると頑張れるという理由は私にもよく分かりました。それまで、なぜ私が趣味のものづくりをしたいのか分かっていませんでした。ですが今なら分かります。私のまわりには趣味のものづくりをしている人が多くいるからです。理由に気づいてからようやくやる気が出るようになりました。アニメのおかげで私は動き出せました。

 

f:id:tlo_olb:20211210054310p:plain

ありがとう ライバル ありがとう ウマ娘

このブログ記事を書くまで忘れていたのですが、これまでにも競い合いをうまく使う人を何人か私は見てきました。そのような人たちは、同じところを目指す友をあおって頑張らせ、自分も頑張っていました。私にはまだそこまではできません。いつかできるようになりたいです。

その他やる気の出し方

他にも見聞きしたやる気があるので、書いておきます。使える方法と使えない方法とを両方とも書きます。

そこに山があるから/海が俺を呼んでいるから

そこに半田ごてがあるから。統合開発環境が俺を呼んでいるから。

私にはちょっと何を言っているのか分からないので、この理由は使えません。ボツです。

ものづくりは人間の性(さが)だから/ものづくりは友達だから

ボツ。

面白いから

これは使えない方法です。たしかに、はたから見ればものづくりは面白いです。しかしやってる側はつらいです。

習慣だから

これは本に書かれていた方法で、やる気を引き出してくれる方法です。私は最近、毎週土曜日の午後に数時間趣味のものづくりをすることにしています。もしその時間帯に趣味のものづくりをしていなかったら、なんだか物足りない感じがしてむずむずします。しかしこの方法だけでは足りません。習慣にするまでが大変だからです。

締め切りがあるから

これは使える方法です。すでにこの方法を使っている人は多いのではないでしょうか。

やると言っちゃったから

これは本に書かれていた方法で、使える方法です。私は作ると言っておきながら物を作らないことがよくあります。しかし、作ると言ったからには作ろうと思えます。

世の中には目標を口に出すとその目標が実現するという不思議な現象があるらしいです。

本業のものづくりでため込んだ不満を趣味のものづくりで発散するから

これはツイッターで知った方法で、いい方法です。本業では妥協しなければならなかった部分を趣味で納得がいくまでやるのだそうです。

本業では使わない部品を趣味で使い、気分を変えるとツイートしている人もいました。

自分だけの特別な物が欲しいから

なぜDIYをする人がいるのかについて私の友達が推測してくれました。特別な物が欲しい気持ちは私にも分かります。しかし私には合いません。自分だけの特別な物が欲しいという気持ちよりも、早く安く楽に良い物を手に入れたいという気持ちが強いからです。自作では早・安・楽・良の条件は満たせません。

知識欲を満たすため/自分が成長している実感を得るため

昔は私を支えてくれたやる気ですが、今は消えてなくなりました。使えなくなったから使わなくなったのです。

達成感を得られるから

テレビでそんなことを言っている人がいました。昔は私も達成感を得るためにものづくりをしていました。しかし今は違います。一つ課題を解決したら次の課題に取り掛かるだけです。達成感は得られません

役に立つから

趣味のものづくりは何の役に立つのか聞かれたことがあります。

f:id:tlo_olb:20211210054629p:plain

その趣味は何の役に立ちますか

そのとき、直接は役に立たないが得た知識や技術は将来役に立つと答えました。しかし、質問されてから2年間も経っているのに一度も役に立っていません。役に立つ将来とはいつのことなのでしょうか。私は知りません。

できることなら趣味のものづくりによってガッツリもうかったとか、お金と時間を節約できたとか、世界を救ったとか言いたかったです。

自己顕示欲を満たすため/優越感を感じるため

これは使えない方法です。昔に私はこの方法を使おうとしていましたが、やめました。自己満足にはなるかもしれませんが、それだけです。いや、本当に自己満足できるのかさえ疑わしいです。

むなしいけど、むなしくないから

漫画を読んでいるときに気づいた方法です。私は趣味でものづくりをしているときに、「何の意味があるのか。いや、ない。」とむなしさを感じます。そんなときはむなしくないかもしれないと想像力を働かせるようにしています。

やる気があるとやれるのではなく、やるとやる気が出るから

これはどこかで聞いたか読んだかして知った方法です。あることに対するやる気とはまずそれをやってみて、それが何なのか分かるようになると自然と生まれるものです。やる前にやる気を求めるのは、ないものねだりなのでしょう。

まとめ

大事なことは、むなしさを振り払い、とにかく体を動かすことだと思います。

ここに書いた方法以外にもまだ私の知らないやる気の出し方があると思います。お勧めの方法をご存じの方がいらっしゃいましたら、教えてください。

明日のアドベントカレンダーについて

明日はkuroさんの「推しについて(予定)」です。お楽しみに!

f:id:tlo_olb:20211210054913p:plain

タスク管理で頭の中をスッキリさせる話

この記事はWMMC Advent Calendar 2020 - Adventarの16日目の記事です。

昨日はジャッジ―さんの記事でした.ジャッジ―......強くなったな......

そしてMr. スさんの記事でした。内輪向けの話・マイクロマウスとAIの話(WMMC Advent Calendar 2020) - SUtealthLog

直リンクからしかMr. スさんの記事を見れないとのことだったのでリンクを貼っときます。WMMCのアドベントカレンダーに参加していただきありがとうございました。もしまた会ったら無駄話でもしましょう。

さて、それでは始めます。

概要図

概要図

やるべきことが多すぎる!

「よし、マウスを作ろう。」と思った時、あれもしなきゃ、これもしなきゃとやるべきことがたくさんありすぎて嫌になります。設計、部品選定、調査、組み立て、プログラミング、環境構築、部品入手、動作確認、パラメータ調整などなど。頭がパンクしそうです。そんなときにお勧めなのがタスク管理です。うまくタスク管理できればより多くのタスクをこなせるようになります。タスク管理の方法は色々ありますが、この記事では私が行っている方法を紹介します。

タスク管理でスッキリ!

私がタスク管理をするときの基本方針は四つあります。

  • 必要なタスクを全て書き出す
  • やるべきタスクに優先順位をつける
  • 一度に一つのタスクだけをやる
  • 終えたタスクを眺めて達成を得る

どの方針も重要です。

やらなければならないタスクが多いとき、全てのタスクを書き出して可視化するだけで結構頭がスッキリします。

全てのタスクにはやるべき順番があります。例えばプログラミングをしなければパラメータ調整はできません。しかしタスクの順番が分かりにくいこともあります。例えば部品選定が分かりにくいです。部品選定、動作確認の後に再度部品選定をやり直す場合があります。また、並行して二つ以上のタスクを行う場合もあります。例えば3Dプリンターでモーターマウントを作っている間に制御方法について勉強する場合です。しかしまずは3Dプリンターを起動して積層が開始してから制御方法について勉強するのであって、3Dプリンターを起動しながら制御方法について勉強するわけではありません。また、誰かに秋葉原で部品を購入してもらっているあいだに基板を設計するかもしれません。この場合は部品購入を友達にお願いしてから基板設計を行う必要があります。

一度に一つのタスクだけしかこなせないことを肝に銘じてください。そのタスクは具体的でなければなりません。例えば「調査」ではぼんやりしすぎています。ぼんやりしていると何をすればいいのか分からなくなり頭がモヤモヤしてしまいます。もっと具体的に「選定したモタドラのピン配置を調べる」などがいいです。ちなみに全てのタスクについて目的をもって取り組むといいです。例えば「選定したモタドラのピン配置を調べる」場合なら「動作確認」や「基板設計」が目的になります。ただし目的まで書き出していると面倒なので、頭の片隅に置いておく程度でいいと思います。

紙に書き出したタスクを終わらせて斜線で消すとき、結構スッキリするものです。この感覚が重要だと考えます。斜線で消したタスクがたまってくると自分が前進したことを実感できます。

Trelloを用いる

タスク管理を紙で行うと自由に書き換えにくいので結構ストレスがたまります。そこでアプリを使います。今回はTrelloというアプリを使います。このアプリはPCでもスマホでも使えます。直感的に操作できるので使いやすいです。無料でできる範囲でかなりたくさんのことができます。今回説明する操作の範囲内ではお金はかかりません。

使い方を簡単に説明します。今回はPCのウェブブラウザで作業を進めます。スマホでやる場合もほぼ同じ方法でできます。なお、この記事で説明する方法は202012月15日時点での方法です。

注:以下に出てくる画像には一部手を加えているので実際の画面とはほんの少しだけ異なる場合があります。

まずTrello用のアカウントを公式サイトで作ってください。メアドがあればあとはパスワードを考えるくらいの手間で作れると思います。

ログインしてください。

新しいボードを作成してください。その際、ボードが非公開となっているかを必ず確認してください。マウスは基本的に一人で作るのでボードをチームで共有したり全世界に向けて公開する必要はないはずです。ボード名は適当に決めてください。背景色も適当に決めてください。

ボード作成

ボード作成

するとこのような画面になります。

ボード画面

ボード画面

次にTo DoリストとDoingリストとDoneリストを作ります。ちなみにボードメニューは閉じました。

リスト追加

リスト追加

ここまででタスク管理のための準備が整いました。

ここからタスク管理を始めます。やらなければならないタスクを思いつくだけTo Doリストに書き込んでいきます。一つのカードにタスクを一つ書いて下さい。今回は適当に部品選定、部品購入、部品の動作確認、設計、基板発注、組み立て、プログラミング、調整、大会にそれぞれ対応する九つのカードを作りました。各自で都合のいいようにカードを作ってください。この作業がタスク管理の基本方針その1「必要なタスクを全て書き出す」に相当します。

カード追加

カード追加

大会の日にちは決まっているので、カードにその日にちを記入します。たぶん9月19日くらいに大会があるので9月19日と記入することにします。

大会カードをクリックします。すると次のような画面になります。

カードをクリック

カードをクリック

「期限」をクリックします。すると次のような画面になります。

期限をクリック

期限をクリック

カレンダーで大会の日付を選択します。

日付選択

日付選択

保存をクリックしてカレンダーの画面を閉じ、バツ印をクリックして拡大されたカードの画面を閉じます。するとカードに大会の日付が表示されます。

カードに期限が表示された

カードに期限が表示された

先にやるべきタスクが書かれたカードほど上に位置するように並べ替えます。基板を発注して届くまでのあいだにプログラミングを終わらせたくなってきたので、ドラッグ&ドロップで組み立てカードとプログラミングカードの位置を入れ替えます。

カード順入れ替え

カード順入れ替え

カード順の入れ替えがタスク管理の基本方針その2「やるべきタスクに優先順位をつける」に相当します。

いよいよマウスを作っていきます。今、To Doリストの一番上に部品選定カードがあるので部品選定に取り掛かります。ところが部品選定というタスクは具体的でないので、より具体的なタスクに細分化します。とりあえず部品選定カードをモタドラ選定カードと(その他の)部品選定カードに分割します。モタドラ選定カードをDoingリストに置きます。そのときTo Doリストに新たにカードを作ってからDoingリストにドラッグ&ドロップするなり、Doingリストに直接新しいカードを作るなりして下さい。

一度にやるタスクは必ず一つ

一度にやるタスクは必ず一つ

一度に一つのタスクをDoingリストに置くことと、そのタスクはできるだけ具体的にすることがコツです。もしかするとモタドラ選定を「モタドラとは何かを学ぶ」タスクと「他のマウスに何のモタドラが使われているか調べる」タスクと「諸条件を考慮して使用するモタドラを決定する」タスクに分割できるかもしれません。状況に応じて柔軟に対処してください。

Doingリストにカードを一つだけ置く作業がタスク管理の基本方針その3「一度に一つのタスクだけをやる」を可能にします。今は、モタドラ選定だけに集中しましょう。

モタドラ選定が終わったらモーターに興味が出てきたのでモーターを選定することにします。そのときのボードは次のようになります。Doneリストにモタドラ選定カードが、Doingリストにモーター選定カードが置かれています。

次のタスクに進む

次のタスクに進む

Doneリストにカードを置く作業でタスク管理の基本方針その4「終えたタスクを眺めて達成を得る」が可能になります。

あとは同じ作業の繰り返しです。

注意点としてタスク管理は柔軟に対応する必要がある点が挙げられます。例えばプログラミングが終わってないのに発注した基板が家に届いたとします。そのとき人によってはプログラミングを後回しにして組み立てを先にやるでしょう。組み立てをしようとしたらLEDを購入し忘れていたと気づき、先にLEDを発注するかもしれません。そのときLED発注カードが新たに発生し、Doingリストに置かれます。タスクは状況に応じて増減し、優先順位が入れ替わります。タスクの変化に対応してカードが増減し位置が変わります。

ボードやリストやカードを間違えて作ってしまった時、それらを削除する方法は各自で調べてください。

まとめ

タスク管理によって頭を整理するとだいぶ楽になるはずです。私はタスク量の多さに圧倒されると頭がモヤモヤしてやる気が出ず、マウス製作を一切やらないまま時間だけが過ぎていくことがよくありました。タスク管理がうまくできるようになって助かっています。

おしまい

クリスマスくらいはラボ畜にならないで早めに家に帰りましょう。去年、卒論で成果が一つもなくあせりまくっていた私でさえクリスマスには早めに家に帰りましたよ。

明日はXFA-27さんのイヤホン自作の話です。その自作イヤホンとはTwitterでときどき見かけるきれいなやつのことですよね?楽しみです。

Nullさんの虚無

この記事はMicro Mouse Advent Calendar 2020 - Adventarの9日目の記事です。8日目の記事はM_vi_o_laさんの「引っ越しました」でした。苦労してそうですが楽しそうでもありました。

それでは本題に行きます。

2020年の振り返り

2020年の振り返り

2020年の3月から4月にかけて私は熱心にマイクロマウスを作っていたようです。春休みが例年より長くて暇だったからやる気が出たんだと思います。

2021年にはクラシックマウスを作りたいです。せっかく買った1717モーターを使わないまま放置するのはもったいないです。

この記事は以上で終わりです。これだけ?と思いましたよね。その通りです。この記事は短くて内容がないので、この記事のタイトルを「Nullさんの虚無」としました。

Micro Mouse Advent Calendar 2020の10日目の記事はb4rrAcud4さんの「2020年買ったもの」です。

この記事は12月11日に書いているので(9日目の記事なのに)、10日目の記事をすでに読みました。色々工夫していてすごいと思いました。

もしクラシックマウスから車のエンジン音がしたら

はじめに

この記事はWMMC Advent Calendar 2020 - Adventarの2日目の記事です。

昨日はジャッジ―さんの記事でした。ジャッジ―さんが元気そうで安心しました。

また、ジャッジ―さんは今回のAdvent Calendarの主催者でもあります。主催していただきありがとうございます。

私はあまりサークルに参加できてないのですが、少しはサークル活動しておこうと思いWMMC Advent Calendar 2020に参加してます。

それでは始めます。

卍 卍 卍 卍 卍 卍 卍

もしクラシックマウスから車のエンジン音がしたらどうなるか確かめた。

想像図

想像図

開発経緯

いつのことだったか忘れたが、Twitterを見ていたらトヨタの入社式と思われる動画が流れてきた。会場内で自動車のエンジンをふかして爆音を鳴り響かせていた。いいなと思った。そして私はこう思った。もしクラシックマウスから車のエンジン音がしたらどうなるか、と。

予想

クラシックマウスのような小さい機体から車のエンジン音のような爆音がしたらギャップ萌えしそう。

方針

エンジン音が記録されたオーディオファイルを再生する機能をクラシックマウスに搭載する。ただし音を鳴らしているときにクラシックマウスの走行を妨げないようにする。

必要な部品

・MP3デコーダ

今回は秋月電子通商にあるこちらのMP3デコーダーを使った。

akizukidenshi.com

マイコンと組み合わせて音を鳴らしたいとき、これを使うと私が知る限りで最も簡単に音を鳴らせる。

PCとUSB接続するとリムーバブルメディアとして認識される。鳴らしたい音が記録されたMP3ファイルまたはWAVファイルをコピペでMP3ボイスモジュールに書き込む。UART通信でMP3ボイスモジュールにコマンドを送れば音が再生される。

音の再生はMP3ボイスモジュールが行うので、音の再生中にマイコンではクラシックマウスの走行に関する処理だけを行えばよい。

色々な機能があるが、今回はオーディオファイル1個だけを再生するために必要な機能しか使わない。他の機能も試してみると面白いと思う。他の機能も試してみたい人は秋月電子通商のサイトでMP3ボイスモジュールについて調べることをお勧めする。

注意点が4点ある。1点目。MP3ボイスモジュールに開いているピンヘッダ用の穴の位置が中途半端である。ピンヘッダをはんだ付けしたあとブレッドボードに差し込みたいときは無理矢理押し込む必要がある。2点目。VCCピンとUSBの5V給電の配線が導通している。もしVCCピンに5V以外の電圧をかけているときにMP3ボイスモジュールをPCとつなぐとショートする危険がある。オーディオファイルをPCから書き込みたいときはVCCピンがどこにも導通してないことを確認すべき。3点目。8MBのオーディオファイルを保存できるようだが、実際には約4MBしか書き込めなかった。しかし音質を下げてオーディオファイルのデータ量を減らせば7分以上鳴らしっぱなしにできる。7分間分あればクラシックマウスの競技中に音を流し続けることができる。4点目。MP3ボイスモジュールを買うと一緒に4ピンのコネクタがついてくる。でも2ピンのコネクタはない。Digi-Keyで調べてみたが2ピンのコネクタは見当たらなかった。MP3ボイスモジュールにはピンヘッダが2列、2ピンのコネクタが1個、4ピンのコネクタが1個、USBポートが1個ついている。このうち2ピンのコネクタを利用することはできなさそうだ。でもUSBポートと2列のピンヘッダが使えれば問題なく音を鳴らせる。

・micro USB Type-Bが付いたUSBケーブル

PCとMP3ボイスモジュールを接続するときに使う。

・スピーカー

表面実装可能な小型のスピーカーではエンジン音のような低音を出せない。そのため大きめのスピーカーを使う必要がある。今回は秋月電子通商にあるこちらのスピーカーを使った。

akizukidenshi.com

このスピーカーは人からもらったスピーカーなので本当にこれかは自信がない。でもたぶん合ってる。他にもっといいスピーカーがあるかもしれない。

ステッピングモーターで動くクラシックマウス

ステッピングモーターで動くクラシックマウスは機体重量が少し変わっても制御に影響が出ない。ステッピングモーターで動くマイクロマウスを使ってもよい。今回は私の手元にステッピングモーターで動くクラシックマウスがあったためこれを使った。

理想的にはスピーカー以外から音が出ないほうがいい。でもステッピングモーターから出る音は大きい。でもスピーカーから出る音はもっと大きいので心配ない。

・段ボールとテープ

スピーカーを覆う入れ物を作るために必要。

・配線用の導線

部品を電気的につなぐために使う。

車のエンジン音の用意

YouTubeでエンジン音を流している動画を探す。気に入った動画があれば、そのURLをコピーする。FLVTOという少し怪しげなサイトに動画のURLを張り付ける。そこのサイトで動画の音声をMP3ファイルに変換し、ダウンロードする。

次にダウンロードしたMP3ファイルのデータ量を4MB以内に減らす。Audacityというソフトウェアを使う。Audacityをインストールする。MP3ファイルはステレオである必要がないのでモノラルにしてデータ量を減らす。そして音質を下げてデータ量を減らす。作業の途中でlame_enc.dllがないのでダウンロードしろとAudacityに言われる。Audacityの指示に従ってlame_enc.dllを使えるようにする。

データ量を減らしたMP3ファイルの名前を01.mp3にする。

MP3ボイスモジュールにオーディオファイルを保存

MP3ボイスモジュールをPCとUSB接続する。MP3ボイスモジュールには最初から色々音声ファイルが入っている。これらは今回使わないのでPCなど他の場所に移動する。先ほど用意した01.mp3をMP3ボイスモジュールにコピペする。MP3ボイスモジュールをPCからはずす。

ハードウェア製作手順

電気的な配線は次図のように行う。今回はマイコンから一方的にMP3ボイスモジュールに指示を出すのでUART通信用の配線は1本だけで済む。

配線図

配線図

スピーカーには入れ物が必要だ。入れ物がないと、スピーカーの裏側で鳴った音と表側で鳴った音が打ち消し合って、スカスカな音になってしまう。スピーカーの裏側で鳴った音がスピーカーの表側に回り込まないように入れ物で閉じ込める必要がある。今回は段ボールと両面テープで入れ物を作ってみた。本当はもっと硬い材料で作ったほうがいい。でも今回は製作の簡単さを重視した。段ボールの入れ物であっても結構効果がある。

スピーカー用の入れ物

スピーカー用の入れ物

スピーカー用の入れ物にスピーカーとMP3ボイスモジュールを取り付けて電気的に接続する。今回は接続にジャンパー線を使った。スピーカーは段ボールにテープで固定した。

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

スピーカーとMP3ボイスモジュールを入れ物に取り付けた様子

MP3ボイスモジュールをクラシックマウスに電気的に接続する。今回はジャンパー線を使って接続した。

MP3ボイスモジュールをクラシックマウスに接続した様子

MP3ボイスモジュールをクラシックマウスに接続した様子

最後に入れ物をクラシックマウスにかぶせたら完成。

完成!

完成!

入れ物をかぶせたせいでクラシックマウスを操作するためのタクトスイッチを押せなくなってしまった。でも気にしない。また、クラシックマウスについたLEDの光が遮られて見えなくなってしまった。でも気にしない。そのうちなんとかするつもり。

プログラム

音楽再生開始関数play()と音量調整関数volume()を用意する。

void play(uint8_t track) {
  uint8_t play[6] = { 0xAA, 0x07, 0x02, 0x00, track, track + 0xB3 };
  for (int i = 0; i < 6; i++) {
    uart_send_char(play[i]);
  }
}
void volume(uint8_t vol) {
  uint8_t volume[5] = { 0xAA, 0x13, 0x01, vol, vol + 0xBE };
  for (int i = 0; i < 6; i++) {
    uart_send_char(volume[i]);
  }
}

void uart_send_char(char)関数は1バイトずつ送信する自作関数だ。計6バイト送信するようにfor文の部分を各自で書き換えなければならない。ちなみにuint8_tは符号なし8ビット変数の型だ。

次の2行では音量を指定し、1番目のオーディオファイルを再生するように指定している。この2行によって音が流れ始める。あとは放置。MP3ボイスモジュールが指定されたオーディオファイルを読み込んで音を再生してくれる。

volume(0x1E); //Volume settings 0x00-0x1E
play(0x01);

あとはいつも通りにクラシックマウスを走らせればいい。

結果

クラシックマウスから車のエンジン音がしたらとてもうるさい。しかしそのうるささゆえに目立つので、サークルの新歓や学園祭のときに客引きとして役立つかもしれない。もしかすると屋外で鳴らしたら音が散ってうるさくなくなるかもしれない。ちょうどいいうるささなのかもしれない。

小さい機体から爆音がしたらギャップ萌えするかどうかは人による。少なくとも私はギャップ萌えしなかった。うるさいだけだ。

低音を鳴らすのは難しいらしく、ときどき音が割れた。今回はオーディオ機器に関する情報収集が不十分なまま製作したからだ。きれいなエンジン音を聞きたければオーディオ機器に関する情報をもっと集めてスピーカーなどを改善する必要がある。しかし個人的にはこのままの音質でも許容範囲内にあると考えている。

最後に

実は昔からクラシックマウスにMP3デコーダーとスピーカーを取り付けて音を鳴らす人がいた。そのような人たちはおそらく同じ感想を持ったと思う。音が鳴るとテンションが上がるのだ。私もスピーカーからエンジン音を聞いたときテンションが上がった。そしてこれからどんなことができそうか色々考え始めた。低音をきれいに出せるように工夫してみようか。低音を諦める代わりに小型スピーカーを使ってみようか。色んな音楽を鳴らしてみようか。このようにやり方はたくさんある。他の人がどのようにして音を鳴らすか知りたい気がする。みなさんも音を鳴らしてみませんか!

おまけ:ちょっと歴史を振り返ってみる

こちらはWMMCのホームページの作品紹介のページだ。

www.waseda.jp

作品紹介のページを見ると、色々なものが作られてきたことが分かる。私は作品紹介のページを読んでびっくりした。斬新な発想力と、それを可能にしてしまった技術力がすごい。私も発想力と技術力を共に兼ね備えた人になりたい。

昔だけでなくここ数年間でもWMMCでは複数人が色々なものを作り出している。それらを見るたびに私は楽しませてもらっている。

おしまい

明日はぱわぷろ@ラボさんのブログです。この1年で買った物らの紹介とのことですが、何を買ったんでしょう。楽しみですね。