2025/12/13

EPIC2025 (Ethnographic Praxis in Industry Conference) に参加してきた

こんにちは。現在は東京大学苗村研D3の矢作優知です。HCIやデザインの領域の研究者や学生がどう研究を実践しているかに興味を持っています。

9月にEPIC (Ethnographic Praxis in Industry Conference) というカンファレンスに、副指導教員としてお世話になっている藤田先生やそのゼミの学生さんと一緒に参加してきました。今回の記事では、その様子をご共有します。

この記事は「Human-Computer Interaction (HCI) Advent Calendar 2025」の16日目の記事です。

 

工学部出身なのですが、工学的なHCI研究が自分の性分には合わないと感じるようになり、大学院に進学以降は質的研究の方法論を勉強しながら研究に取り組んでいます。現在は博士研究としてデザイン系の研究室でフィールドワーク(参与観察)をしているため、エスノグラフィーをトピックとした会議であるEPICに参加することになりました。

会議全体の様子

EPIC2025は産業エスノグラフィーの国際会議であり、今年で21回目の開催となりました。エスノグラフィーは文化人類学や社会学の分野で発展してきた手法であり、調査者が現場(フィールド)の一員となって活動しながら、そこで活動する人々を観察するものです。EPICには、エスノグラフィーをUXデザインや企業コンサルタントをはじめとする様々な実践的場面で応用している研究者・実践家が集まります。デザインに関連する業界の方が多く、HCIと近しいと感じました。

今回はフィンランドのAalto大学を会場として開催されました。

Aalto大学
Aalto大学


今回の学会会場であるDipoliという建物
今回の学会会場であるDipoliという建物

参加者は約300人でした。ただ、参加者の所属機関を地域別でみるとアジアからの参加は少なく、日本からの参加者も10人以下にとどまりました。発表トラックの構成はHCIの学会と似通っており、論文(Papers)の他に、Case StudiesやGraduate Colloquium、Art Experienceがあります。加えて、一定時間ごとにスライドが切り替わる「PechaKucha」というプレゼンテーション形式のトラックがあるのは特徴的と言えます。このトラックでは、フィールドワークで得た写真などをスライドショーにして、発表者がストーリーを語ります。ストーリーテリングとしてのエスノグラフィーの側面を引き出すための発表形式として設けられています。
オープニングの様子

PechaKuchaの発表。6年にわたってアパートの共用部に "giveaway pile" として置かれたものを撮影したビジュアル・エスノグラフィー (Shure 2025)

「エスノグラフィーの実践を定義するのは、特定の方法やテクニックではなく、社会文化的視点である。」(筆者訳、https://www.epicpeople.org/what-is-ethnography/)とEPICのホームページに書かれているように、エスノグラフィーでは人々の活動や考え方を、人間関係・周囲の環境・文化などと関連づけながら理解することを大切にします。そしてEPICでは、現場でメモを取ったりインタビューをしたりする方法に限らず、アプリ利用ログやセンサーで得られた環境データなど多様な方法で行われたエスノグラフィーを受け入れています。このような背景のもと、特に今年のEPICでは、生成AIをどのようにエスノグラフィーの中で用いることができるか?に関する発表と議論が盛んに行われていました。

例えば、Barnard, Han, Louch & Raijmakers 2025 は生成AIの性能が向上したことで、AIはツールからチームメイトに変化し始めていると指摘します。つまり、インタビューの音声を文字起こしするといった単純な作業を補助するツールから、データの解釈や論文の起草を行う研究者と位置付けます。そして、通常個人による使用を想定してデザインされている生成AIを、チームで共有して利用することを試行しています。

また、ツール開発にも踏み込んだ研究も見られました。例えば Rennie, Nabben, Zargham, Potts, Coco & Miller 2025 は複数の組織をフィールドとして、エスノグラフィーのためのツール開発を含むデザイン志向の参加型エスノグラフィーを行いました。開発・運用したシステムはKOI (Knowledge Organisation Infrastructure) と彼女らが呼ぶもので、1)組織内の情報(discordでの会話履歴など)を研究に用いるためにメンバーの同意を得る仕組み、2)データにユニークなIDを付与して Obsidian に取り込みフィールドノーツに組み込んだり注釈をつける仕組み、3)注釈付きのフィールドノーツを現場の人に送り返して参加者もデータ分析に参加できる仕組みを持ち、組織内の多様なプラットフォームに分散して存在するデータを繋ぎ合わせる基盤を提供します。そしてこのような基盤によってデータの計算機(AI)可読性や多様な参加者のデータへの関与が実現されると、エスノグラフィーの観察・解釈・記述という分析プロセスが変容する可能性があると主張します。このような状況では、エスノグラファーは観察・解釈・記述の実施者にとどまらず、さまざまなアクター(計算機を含む)が関与する情報の流れの「ループを構築する」役割を担うことになるとも指摘します。

以上のような、実践の現場だからこそのスピード感ある取り組みを元にした議論は、研究へのAI活用を考える上でとても刺激的でした。エスノグラフィーというタームのもとで研究者たちは「テクニック(すなわち、methods (方法) の問題)という観点だけでなく、探究と知識生産に対する根本的な認識論的立場(すなわち、methodology (方法論) の問題)という観点」(Dourish 2014) からも研究とは何かを考察しています。このような知的生産に関する考察を加えることで、研究において生成AIをデータ分析に用いることは得られる知識にどのような質的な変化をもたらしうるのか?AIと人間はどのように協働していくのが望ましいのか?という問いを考えるヒントが得られるようになっていました。 UXデザインなどの実務の現場を対象としているため、(いい意味で)研究としての知的成果にとらわれすぎず、手段を問わない調査が実践されています。その一方で、EPICにはそのプロセスについて批判的な省察を加える場としての機能もあります。このバランスこそが、このようにユニークな議論を可能にしているのかもしれません。EPICはスピード感ある実践と慎重な方法論的議論の合流地点になっていると思いました。

私の発表

私自身はGraduate Colloquiumで研究発表を行いました。タイトルは「Tinkering in Design: Field Studies on How HCI Students Make and Learn with Newfound Technologies in Research through Design」(デザインにおけるティンカリング:リサーチ・スルー・デザインにおいてHCI学生は馴染みのないテクノロジーと共にどのように作り・学ぶのかについてのフィールド調査)です。本発表は私が博士研究として取り組んでいるテーマに関するもので、デザイン学生が生成AIを含むテクノロジーをどのように理解しデザインを進めているのか、モノづくりはそれにどのように関与しているのかを分析しています。
私の発表の様子

EPICではこの研究について発表したのですが、発表形式はやや特殊でした。このカンファレンスのGraduate Colloquiumは幅広い人に研究を伝えるためのトレーニングとして設計されています。このため、発表では、研究背景や目的、関連研究、結果、考察といった内容を順に述べるいわゆる研究のプレゼンではなく、エレベーターピッチの形式で発表を行うことが求められます。これは、実務者が多く参加するEPICならではのユニークなプログラムです。加えて、ここで磨いたピッチを披露して、すぐさま会期中に自分の研究を他の参加者に「売り込む」(紹介する)ことで、ネットワーキングに役立てることも狙いとしており、学会の初日の朝に開催されます。

今回の発表の中で、私はある学生の事例を取り上げることにしました。それは、ChatGPTで遊ぶ中で「AIからAI感を抜く」ことができると気づき、それがデザインにつながったというものです。この学生は、悩みなどの「もやもや」を入力すると、もやもやに共感したりポジティブに捉え直したりする曲が作られ、自分の悩みへの見方を変えるきっかけを提供するためのシステムをデザインしました。私の研究では、その過程にあった「遊び」を通じたAIの素材化に注目しています。

その学生は、当初はAIを「硬くてドライなもの」だと思い込んでいました。悩みを抱える人たちにポジティブになってもらえるようなプロダクトを作りたいと思っていましたが、そんな時に有効な「心を動かすような言葉」はAIからは出てこないと思っていたのです。転機は、ある日の「遊び」でした。彼女は「計画通りに勉強できなくて落ち込んでいる」という悩みを、ユーモアを加えようと思って「スナックのママの口調で励まして」とAIに頼んでみました。すると、AIは「あら、そんな日もあるわよ。計画通りにいかないことなんて誰にでもあることだからね...」と、誰かに影響を与えてくるような口調で話し始めたのです。この出来事は学生にとって衝撃的だったと言います。AIから自分でAI感を抜くことは可能であり、話し方はデザイナーがデザイン可能であり、AIは自分の作品に組み込める「素材」なのだと気づいたのです。

9月の学会に向けて事前に2回のオンラインワークショップに参加したうえで、以上の内容をピッチとして準備して学会当日に臨みました。そして、メンターを担当してくださった研究者の皆さんからフィードバックをいただきました。

いただいたコメントは、ピッチの改善と研究内容の双方に対して示唆的なものでした。 まず、ストーリーとしてまとまっていて写真やスクリーンショットも有効に活用した発表になっているという評価をいただくことができました。デザインの実践についての研究であるため、研究結果を紹介するために必要な資料を厳選して提示することは不可欠な部分でしたが、デザイン成果の説明ではなくストーリーを伝えるための資料として効果的だったと評価して頂けたのは嬉しかったです。 また、「スナックのママ」の事例は説得力があるという評価もいただきました。以上のコメントから、研究をピッチとして語ることについて手応えを感じ自信をつけることができました。

一方で、課題としては聴衆に合わせて「素材」(material)という概念の説明を行う必要があると指摘されました。具体的には、デザイン教育という実践と「素材」の関連性やギャップを冒頭で話して聞き手の焦点をそこに向けること、また社会科学的な研究の中での用語として用いている「素材」という言葉の意味を分野外の人に向けて概念を翻訳して伝える方法を工夫する必要があるとアドバイスを受けたのです。このコメントからは、自分の研究で使う用語が日常会話でも使われる言葉であることに甘んじて、説明をスキップしてしまっていたことに気づかされました。これら2点のコメントに共通するのは、聴衆がどのような人々であるかを意識する必要性の強調でした。

Graduate Colloquiumに参加できたことは、学会参加中という短期的にも、その後の研究遂行という長期的にも、有益なものであったと感じています。

まずGraduate Colloquiumの狙い通り、即座に学会中のネットワーキングにとても役立ちました。エスノグラフィーは年単位の調査で得た膨大なデータをもとにした研究で、現実の場面での多様な要素の複雑な関係性を考察します。このため、私は短時間で研究内容を伝えることは難しいと感じてきました(もちろん、分析やまとめを進めて要点を一言で言えるように磨いていくことを目指すものではありますが)。それをピッチとして、5分程度で、スライドは使っても5枚までで、という非常に圧縮した形式に変換するのはとても良い訓練になりました。一度ここまで圧縮する練習をすると不思議と、1分・3分・5分と相手の興味の度合いに合わせて詳細度を調整し、口頭での研究紹介ができるようになっていました。

またその後への良い影響を学会から数ヶ月経ったいま振り返ってみると、研究の発表形式のボキャブラリーが増えたことと、端的に表現するための表現・発表形式という観点で他の人の研究発表を見る視点が得られたことがあるように思います。

Graduate colloquiumを経験する前は、典型的な研究プレゼンの型のみを知っている状態でしたが、「私が何の研究をしているのかを覚えてもらう」ためにストーリーを中心化したピッチという形式を理解することができました。正直に言えば、プログラム参加以前は、典型的なスライド発表形式が研究のパーツを過不足なく含む完全版で、ピッチのように「わかりやすさ」を優先して発表を作ることには、研究における謙虚さを捨てているようにも感じられ、当初は抵抗がありました。それでもなお、このgraduate colloquiumによって手段の1つとして理解して受け入れることができたのは、ピッチはどんな場面で・誰に対して伝えるために必要であるかを丁寧に説明していただいたからだと思います。事前のオンラインワークショップで、民間企業などで活動しているメンターの皆さんから、ピッチという形式がなぜ必要なのかを丁寧に説明していただいたことが、この理解を支えていたのだと思います。

そして、ピッチという研究プレゼンとは大きく異なる形式を訓練したことによって、他の人が簡潔に伝えるためにどんな工夫をしているのかに敏感になったように思います。今回のピッチを作成するにあたってどうしても短くしきれなかったのは、学生とAIの関係性がどのように変化したのかというプロセスの側面です。時間をかけて展開した過程を短くいうのは、どうやっても無理だろうと感じてしまいました。ただ、そのことをメンターに相談するとプロセスに名前をつけて説明すれば短くできるだろう、とアドバイスをいただきました。これは研究の分析にもつながるコメントでした。以上のようなことがあり、短くするための工夫をどのように研究者たちがしているか?という観点で他の人の発表や論文を見るようになったのです。改めて文章にすると当たり前のことに気づいているようでもありますが、自分にとっては極限まで短くする試みを行うことで明確に限界を認識して、このことに気づくことができました。最近のカンファレンスでは発表数の増加によりフルペーパーの発表でも10分程度でプレゼンをすることも増えていますし、この学びは研究活動の様々な場面で役立ちそうです。

以上のように、EPICのgraduate colloquiumは、会議のトピックや参加者層のユニークさを生かした学びの多いプログラムでした。大学での修士・博士研究をもとにしつつも、より学術的な場面とは異なる形式で研究紹介をするいわば筋トレのような活動に参加でき、大いに鍛えられたと感じています。なおこの参加報告では、graduate colloquiumのピッチ練習が就活やnon-academicな人々とのコミュニケーションにおいてどのように役立つかという側面(これもプログラムの主要な関心の一つでした)はあまり強調できていません。また、多くを触れませんでしたが、他の大学院生の参加者たちとの交流もとても有意義なものでした。学会の冒頭に密に交流できたことで、会期中を通じて関わることができました。メンターの皆様、他の参加者の皆様、ありがとうございました。EPICは来年の開催も決定しております。情報システムのデザインやAI活用などに関して、質的研究に関心を持ったHCI分野の大学院生の皆さんや、企業などでHCI関連の研究もされている方々にもオススメできると思います。

謝辞

参加にあたって、電気通信普及財団から海外渡航旅費支援をいただいたことに感謝いたします。また、本記事は財団への報告書を加筆修正したものです。

参考文献

Katy Barnard, Qin Han, Ed Louch, and Bas Raijmakers. 2025. Collaborating with AI as a team member in qualitative  research analysis.  88–110.

Ellie Rennie, Kelsie Nabben, Michael Zargham, Jason Potts, Brooke Ann Coco, and Luke Miller. 2025. Building the Loop: The Role of Ethnography in Artificial Organisational Intelligence.  261–274.

Paul Dourish. 2014. Reading and Interpreting Ethnography. 
In Ways of Knowing in HCI, Judith S. Olson and Wendy A. Kellogg (eds.). Springer, New York, NY, 1–23. https://doi.org/10.1007/978-1-4939-0378-8_1

2024/04/07

洗濯物干しの修理

 タオルなどを干す洗濯物干しの足についている保護キャップが削れてきたので3Dプリンターでキャップを作って修理しました.


中の金属パイプが露出してきたので,このままだと床を傷つけてしまう状態でした.
Fusion360でキャップを設計して印刷しました.足の開き角度(57°)を測って開いておいたときに平らな面で接するように工夫しました.それ以外の部分は大きくフィレットをつけ,畳んで置いた時も床に優しく当たるように設計しました.
キャップが大きくなりすぎても困るので,パイプにはめる中空になる部分はwallの厚みをギリギリまで薄くするよう調整しました.今日はTPU 85Aで4mmなら安定して印刷できたのでこのパラメータで設計しました.
古いキャップを取り外すのに苦労しつつなんとか取って(壊して),1枚目の写真のように取り替えました.
ついでに,取れていたクロスの部分のネジも付け直しました.ゆるまないようにナイロンナットを取り付けました.
まだまだ長く使えそうなのでよかったです.

2020/07/31

やわらかい空気圧アクチュエータを印刷してみた

前回の記事で3Dプリンタの導入をご紹介しました.せっかく導入したので,まずはやわらかい空気圧アクチュエータを印刷してみようと思います.

空気圧アクチュエータとは

空気圧アクチュエータとは,空気圧を加えることによって動くアクチュエータです.このうち,今回は柔軟な材料で作られたやわらかい空気圧アクチュエータを印刷していきます.硬い材料とモータ等で作られたものよりしなやかに動くため,例えば手につけて手の運動を助けリハビリ用に用いるなどのアプリケーションが考えられています (Yap, Ng and Yeow, 2016).

FDM方式の3Dプリンターによる空気圧アクチュエータの印刷

樹脂のフィラメントを溶かして積み上げていくタイプの3DプリンタをFDM (Fused Deposition Modeling) 方式の3Dプリンターと言います.FDM方式の3Dプリンターは,1層ずつ樹脂の層を積み重ねていく印刷方法のため,どうしても隙間ができてしまいがちです.このため,適当に印刷しただけでは密閉されたものを製作することはできないのです.

このような課題がある中で,FDM方式のプリンターを用いてやわらかい空気圧アクチュエータを印刷する際のパラメータが,High-Force Soft Printable Pneumatics for Soft Robotic Applicationsという研究で明らかにされています (Yap, Ng and Yeow, 2016).今回は,この論文の中で紹介されているパラメータを参照しながら,空気圧アクチュエータを印刷してみたいと思います.

完成品

まずは,印刷した空気圧アクチュエータをご覧ください.500g程度のランプを持ち上げることができています.




使用機材

  • 3Dプリンタ:Sidewinder X1
  • 3DCAD:Fusion360
  • スライサ:Cura4.6.1
  • フィラメント:Pxmalion Flexible TPU クリア
    • Q&Aによるとショア硬度85A (NinjaFlexと同じ)

試作の過程

基本的には論文に記載されているパラメータでOKでしたが,一部自分の環境に合わせて変更した点もありました.試作の順に説明していきます.それぞれ変更しているパラメータのみ記載していきます.パラメータの一覧は論文を確認してみてください.誰でもダウンロードできるようになっていると思います.

試作1

まず初めは,ほぼ論文通りにしました.変更したのは以下の点です.
  • Extruder temperature: 240°C
    • フィラメントがこげるのが心配だったため.
  • リトラクション: On
    • オフにし忘れてしまった
出来上がったものは以下です.中に水を入れた状態で空気を吹き込むと水が染み出してきており,エアタイトではないことがわかります.

試作2

エアタイトにならない原因を考えてみたのですが,印刷中にブチブチという音がしていることに気が付きました.ブチブチと音が出るのはフィラメントの湿気がノズル内で気泡となりでているものだ,と言う指摘が見られます.今回はフィラメントを開封した直後なのでまともな包装がされているなら(夏で周囲の湿気は高いですが)そこまでフィラメントの状態が悪いとも思えませんが,TPU印刷の温度設定として泡立つなら温度設定を下げてみましょうと言う情報もあります.今回は温度を高めにすることがエアタイトにするポイントらしいので,あまり温度を下げたくありません.理由は十分考察できていないですが,樹脂を大量に押し出している時は泡立ちのないものが出てきますが,押し出し量が小さい時は泡立ったものが出てくる様子が観察できました.
押し出しが十分な場合

押し出し量が不足している場合
このことから,Flow rateを上げることにしました.また,とりあえず焦げることはなかったので論文に合わせて温度も上げてみることにしました.試作2で変更したパラメータは以下です.試作1ではミスしていましたが,リトラクションはOFFにしました.
  • Extruder temperature: 245°C
  • Flow rate: 150%
結果は以下です.空気漏れがなくなりました.Flow rateを上げたのが効いているようです.しかし,温度の方はやはり高すぎたようで,少し焦げてしまいました.多少空気もれしているような音が聞こえると思いますが,空気入れのコネクタとの接続部分で少し漏れてしまっています.なお,印刷時間短縮のために試作1よりサイズを小さくしました.

試作3

手元の環境でエアタイトになる条件がわかったので,しっかりと曲がるアクチュエータを印刷をすることにしました.試作1,2では論文中のモデルよりも随分太いものになっていることに気づいたので,寸法を似たようなものにしました.ただし,壁の厚さは1周多い1.6mmとしました.このモデルの場合,なぜかTravelがたくさん生成されてしまったので(外形には沿っていましたが),Travelの速度を念のため遅くしました.また,焦げてしまった点や,まだ少しブチブチ音がしていたことを考慮してパラメータを少し調節しました.他は,試作2と同じです.
  • Extruder temperature: 242°C
  • Flow rate: 160%
  • Travel: 50mm/s 
結果は以下です.しっかりと曲がるアクチュエータができました.しかし,変形量は壁が厚いせいかやや小さい気がします.

試作4

変形量が小さかったので,壁の厚さを1周減らして1.2mmにすることにしました.試作3まではFusion360の中で空洞もモデリングしていたのですが,1.2mmにすると不要なTravelが大量にできてしまったり,曲線に沿わずにジグザグに埋めたりするデータになってしまいました.曲線部分の厚さがSTLファイルからは正確に読み取れていないのかもしれません.1.6の場合に問題にならなかったのはたまたまうまくいっていただけかもしれません.
この対策として,モデルは空洞がないもので作って,infillを0%にする方法を使いました.これは論文中でも説明されている方法です.これを使うとコネクタ部分に穴が開かなくなるのでやめてましたが,壁がきれいに印刷できるならばと変更しました.変更すると,正しくスライスできます.
このデータを使って,印刷をしました.パラメータは,トラベルの問題が解決できたのでその速度を元の120mm/sに戻しました.また,底と上面の厚さはFill density 0%の場合のパラメータの1.5mmにしました.

結果はこちらです.試作3よりも変形量が大きくなりました.ものを持ち上げている様子は冒頭の動画の通りです.

挟めるタイプ

アクチュエータを2つ向かい合わせて,掴めるタイプも印刷してみました.適当に設計してしまったためあまり重いものは掴めませんでしたが,タワシを掴む事はできました.

まとめ

論文を参考に,やわらかい空気圧アクチュエータを印刷しました.FDM式のプリンタで柔らかくエアタイトな構造物を印刷し,簡単なグリッパーを製作できました.今回は自宅にある自転車用の空気入れを簡単に用いたためその部分で空気漏れが発生してしまいましたが,この点はエアチューブや継ぎ手などできちんと接続すれば改善すると考えられます.

参考文献

Yap, Hong Kai & Ng, Hui & Yeow, Raye Chen-Hua. (2016). High-Force Soft Printable Pneumatics for Soft Robotic Applications. Soft Robotics. 3. 144-158. 10.1089/soro.2016.0030. 

3Dプリンタを自宅に導入

新型コロナウイルスの流行が収まる気配がなく,大学に積極的には登校しない生活がまだしばらく続きそうです.研究室に通っていた頃は3Dプリンタに囲まれて作業をしていたため自宅にも欲しいとは全く思わなかったのですが,4ヶ月ぐらい経って3Dプリンタが恋しくなってきたため自宅にも導入してしまいました.3Dプリンタのレビューなどは山ほどありますが,何を悩んで選んだか,また今回参考にした情報について簡単に紹介します.

プリンタの選定

今回は以下の条件を決めて選定してみました.
  • 動作音が静かであること
  • ダイレクト式であること
まず,自宅に置くので静かであることは必須条件です.3Dプリンタでは特に工夫していないものではステッピングモータの動作音がそれなりにうるさいです.後からモータドライバを交換しても良いですが,今回は初めから静かなものがついているのを選ぶことにしました.

続いてダイレクト式という点ですが,フレキシブルフィラメントも印刷したいためこの条件をつけました.フレキシブルフィラメントというのは一般的なPLAやABSよりも柔軟性の高い樹脂(TPU等)のフィラメントのことで,柔軟性が高いためフィラメントを送るギアがエクストルーダの近くにあるダイレクト式での印刷が適しています.

この条件に当てはまるものはたくさんあるのですが,今まで使ったことがないタイプがいいなと思い,はじめに検討したのはM3DのTHE CRANE QUAD 3D PRINTER です.4種類のフィラメントを使ってフルカラー印刷ができます.複数のフィラメントを混ぜられるタイプは経験がなかったので,興味を持ちました.しかしセールはしていましたが,それでも予算オーバーだったので諦めました.

THE CRANE QUADはヘッドだけ購入することができます.そこで,あとでヘッドを取り替えて使えそうなものを探しました.見つけたのは,Amazon.co.jpで購入でき,YouTube等にレビューなども豊富にあるArtillery Sidewinder X1です.静音のドライバを搭載しており,ダイレクト式です.Amazonのレビューは少なく商品名に型番が入っていなくて本物が届くか心配でしたが,大丈夫でした.

セットアップ

Sidewinder X1のセットアップは簡単です.ベッドがついてる土台と上の構造物をつなげて配線するだけで完成しました.

設置

階段下に設置しました.ちょうどいい感じにはまっています.

フィラメントが出ないトラブル

テスト印刷をしようとしたところ,なぜか初め装着されていたノズルからフィラメントが出力されませんでした.エクストルーダを分解してみるとか熱したクリップで中を掃除するとか試しましたが,出るようになりませんでした.

幸い,予備のノズルが同梱されていたので,交換したところ無事出力されました.単にノズルを交換するだけの場合は分解の必要はなく,ノズルだけ外すことができます.交換は以下の動画が参考になりました.


早速予備がなくなってしまったので,ノズルをすぐ注文しました.AliExpressなどから購入できます.Sidewinder X1のノズルは高温の印刷も可能なロングなタイプで,Volcanoという名前が付いているようです (まだ届いていないので,正しい交換品か自信がないですが).

印刷パラメータ

3Dプリンタを使う上で重要な点として,印刷のパラメータ調整があります.この点,Sidewinder X1はパラメータを公開してくれている方がいるため,すぐに利用を始められます.私はスライサーとして普段Curaを使っているので,以下のサイトのプロファイルを利用しました.

まとめ

自宅用の3DプリンタとしてSidewinder X1を導入しました.ノズルが詰まっているトラブルはありましたが,予備パーツがあったため無事に印刷できました.これから活用していきたいと思います.

2020/04/09

フットスイッチでミュート解除する

オンラインミーティングである程度参加人数が多くなってくると,「話さない時はミュートにする」ことが推奨されたりします.Zoomではスペースキーを押している間だけミュート解除という機能があり,常にZoomがアクティブなウィンドウになっているなら話す時だけミュート解除するのは簡単です.しかし,オンラインミーティングをしながらメモを取るなど他の作業をしていると発言するために,
  1.  Zoomのウィンドウをアクティブにする 
  2. ミュート解除操作をする
  3. はなす
という手順が必要になります.オンラインミーティングはなんか疲れるという声を聞いたりしますが,これが原因の1つではないかと思いました.リアルミーティングなら3だけでよかったのに1, 2が増えて煩わしいです.

そこで,フットスイッチを足で押すだけでミュート解除できるものを作りました.お金がないのでフットスイッチを自作していきます.

フットスイッチの製作と配線

今回は自宅で工作をするので段ボール工作になりました.段ボール箱をカットして,ペダルの形にします.Nintendo Laboのドライブキットのペダルを参考にしました.
ペダルができたら,マイクロスイッチを取り付けます.
そして,Arduinoに接続します.

ソフトウェア

とてもシンプルです.Arduinoはスイッチの入力を読み取って,値が変化したらシリアル通信で送ります.一応チャタリング対策をしました.
Mac側は,pySerialでArduinoからのデータを読み取り,入力音声のボリュームを変更します.入力音声のボリュームを変更するというところがポイントで,どのアプリケーションでミーティングしていても使えます.またシステムのボリューム操作は簡単で,osascriptコマンドを使って容易に変更できるところも良い点です.

ソースコードはGitHubに置いてあります.

動作の様子

こんな感じで動きます.赤枠で囲まれたところがボリュームで,押していない時はミュートされています.

使ってみて

試しに使ってみましたが,議事録担当をしていてもスムーズに発言ができて快適です.引き続き使っていきたいと思います.

2017/01/07

日の出が遅いので、Raspberry Piで電気を点けて気持ちよく目覚めてみる

みなさん、今日は2017年の東京の日の出が最も遅い日ですね。*1 寒い上に日の出が遅いと早起きができない方も多いのではないでしょうか? 私もその一人です。

「朝起きたら日光を浴びる」これは早起き術としてよく紹介されている技ですが、日の出より前に起きる場合には適用不可能です。そこで、今回はそろそろ日本でも発売するというRaspberry Pi Zeroを使って、朝になったら部屋の電気を点けて部屋を明るくするということをしてみたいと思います。

実行環境

  • とても寒い冬季の日本
  • 日の出前の6時ごろ
  • LEDシーリングライト(赤外線リモコンによる操作が可能)

ハードウェアの準備

今回は赤外線を使ってシーリングライトをRaspberry Pi Zeroで制御します。このため、リモコンの信号を学習するための受信モジュールと赤外線LEDが必要です。まず、これらをRaspberry Pi Zeroに接続します。
Raspberry Pi のGPIOはそれほど多くの電流を流せないため、トランジスタで増幅しています。10Ωの抵抗をつけてだいたい100mAぐらい流すようにしてあります。

受信モジュールの出力は5Vであるのに対して、Raspberry Pi のGPIOは3.3Vであり5Vトレラントではないそうです。そこで、出力ピンに40kΩの抵抗(実際には10kΩの直列4本)をぶら下げておき、分圧することで3.3Vにしています。

使用している部品は全て秋月電子で入手可能です。型番などは以下の表の通りです。

部品名 型番 個数 URL
赤外線リモコン受信モジュール PL-IRM2121-A538 1 http://akizukidenshi.com/catalog/g/gI-01570/
赤外線LED OSI5LA5113A 2 http://akizukidenshi.com/catalog/g/gI-04311/
トランジスタ 2SC1815GR 2 http://akizukidenshi.com/catalog/g/gI-00881/
抵抗 10Ω 2 http://akizukidenshi.com/catalog/g/gR-25100/
抵抗 10kΩ 4 http://akizukidenshi.com/catalog/g/gR-25103/

作成した回路はこのような感じになりました。(ピンヘッダは1のModel B用に作ってしまったため、今回はジャンパで接続...)手前の白いキャップが付いているのが赤外線LEDで、その隣の黒いのが受信モジュールです。

ハードウェアの準備はこれで完了です。

LIRCの導入

LIRCというソフトウェアを使うと、Linuxで赤外線信号の送受信ができるようになります。まずはこれをインストールしましょう。OSはRaspbianを使用しました。
sudo apt update
sudo apt install lirc
インストールが終わったら、LIRCの有効化とピンの設定を行います。/boot/config.txtの51行目を次のように変更します。
# dtoverlay=lirc-rpi (変更前)
↓
dtoverlay=lirc-rpi,gpio_in_pin=17,gpio_out_pin=18 (変更後)
また、/etc/lirc/hardware.confも次のように変更します。
########################################################
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS="--uinput"

# Don't start lircmd even if there seems to be a good config file
# START_LIRCMD=false

# Don't start irexec, even if a good config file seems to exist.
# START_IREXEC=false

# Try to load appropriate kernel modules
LOAD_MODULES=true

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="default"
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

# Default configuration files for your hardware if any
LIRCD_CONF=""
LIRCMD_CONF=""
変更が終わったら再起動します。
sudo reboot

再起動が終わったら、受信がうまくできるか確認します。
mode2 -d/dev/lirc0
このコマンドを実行を始めたら、リモコンを受信モジュールに向けてリモコンのボタンを押します。ここで、次のような出力が現れたらうまくいっています。出力の確認が終わったらCtrl-Cで実行を終了します。
space 1907936
pulse 10217
space 5133
space 641
pulse 632
.
.
.

リモコンの信号の学習

irrecord というコマンドを実行すると対話的にリモコンの学習を行うことができます。学習が終わると、設定ファイルが生成されます。-dオプションはデバイスの指定(デフォルトのデバイス名と違ったものが現れるので明示的に指定します)、--disable-namespaceはリモコンのボタンの名前を自由につけるためのオプション、-fオプションはraw mode(届いた信号をコード化せずにそのまま保存する)で学習を行うためのオプションです。以下はコマンドの実行例です。
$ sudo /etc/init.d/lirc stop  # 学習を行うので一旦止める
$ irrecord -d/dev/lirc0 --disable-namespace -f ceiling_light.conf

irrecord -  application for recording IR-codes for usage with lirc

Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)
省略
Press RETURN to continue. (ENTERを押す)


Now start pressing buttons on your remote control.

It is very important that you press many different buttons and hold them
down for approximately one second. Each button should generate at least one
dot but in no case more than ten dots of output.
Don't stop pressing buttons until two lines of dots (2x80) have been
generated.

Press RETURN now to start recording.(ENTERを押したらボタンをランダムに1秒ずつ押し続ける)
................................................................................
Found const length: 122383
Please keep on pressing buttons like described above.
Creating config file in raw mode.
Now enter the names for the buttons.

Please enter the name for the next button (press <ENTER> to finish recording)
FULL(ボタンの名前を入力してENTERを押す、押したらすぐに学習したいボタンを押下する)

Now hold down button "FULL".
Got it.
Signal length is 69

Please enter the name for the next button (press <ENTER> to finish recording)
OFF

Now hold down button "OFF".
Got it.
Signal length is 67

Please enter the name for the next button (press <ENTER> to finish recording)
(ENTERを押して終了する)
設定ファイルが出来上がったら、/etc/lirc/lircd.confに生成した設定を追記し(初回の場合は>>を>に変えて、上書きします)、lircdを起動します。
sudo bash -c "cat /path/to/ceiling_light.conf(生成した設定ファイル) >> /etc/lirc/lircd.conf"
$ sudo /etc/init.d/lirc start
起動できたら、実際に電気を操作してみます。
$ irsend SEND_ONCE ceiling_light.conf(設定の名前) FULL(ボタンの名前)
うまく動かなかったら、信号を複数回送信するオプションをつけてみます。raw modeで学習した場合は、信号のきちんとした区切りではないところで切れて学習されている場合があるので、複数回送るとつながってうまくいく場合があります。
$ irsend -#2 SEND_ONCE ceiling_light.conf(設定の名前) FULL(ボタンの名前)
それでもうまくいかない場合は学習をやり直してみましょう。

タイマーを設定する

朝になったらコマンドを実行する、という機能を実現するためにcronを使いました。次のコマンドを実行して設定ファイルを開きます。
touch /home/pi/crontab.log  # 適当なログを取るファイルを作っておく
crontab -e
設定ファイルの中には、次のような記述をします。これで、毎朝6時に電気がつきます。絶対に起きたいのでボタンは10回押します。
  0 6    *   *   *   irsend -#10 SEND_ONCE ceiling_light FULL && echo "`date` - Light turned on" >> /home/pi/crontab.log
タイムゾーンがJSTになってないとUTCで起こされたりして大変なので、ちゃんとタイムゾーンも確認しておきましょう。
timedatectl  # 確認。違ったら以下を実行
timedatectl set-timezone Asia/Tokyo
sudo systemctl restart cron.service  # タイムゾーンの変更をcronにも反映
これで朝のお目覚めバッチリですね!!!

参考サイト

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/


*1: 実は冬至と一番遅い日の出の日はズレています。(http://kuusou.asablo.jp/blog/1970/03/07/7925757?year=2017&rg=r25)

2016/01/11

VSCode使用中にKarabinerのVimモード(エミュレーション)に入らないようにする

KarabinerのVim Emulationを使用すると、Vim以外で文書を編集するときでもhjklでカーソルを動かしたりできて便利です。しかし、それ自体がVimモードを持っているアプリケーションを使うときは無効にする必要があります。

有効にするアプリケーションの選択

有効にするアプリケーションの設定はprivate.xmlに記述します。private.xmlについて詳しくはリファレンスを参照してください。 このXMLファイルは例えば次のようになります。 VIM_EMU_IGNORE_APPSと書いてあるところの下に列挙されているのが、Vim エミュレーションを使用しないアプリケーションです。この中で指定されたアプリケーション使用中はescキーを押してもVimエミュレーションが始まりません。

VSCodeの設定はまだない

たいていのアプリケーションはすでに設定が用意されているので、そのアプリケーションに対応するコードを調べて書けば良いのですが、VSCodeについてはまだありませんでした。このため自分で追加する必要があるようです。アプリケーション内のappdef.xmlに記述した方がキレイなのではないかと思ったものの、今後VSCodeが追加される可能性もありそうなので、ひとまずprivate.xmlの中にVSCodeの設定も一緒に書いてみました。
上に示したprivate.xmlの先頭にあるのがVSCodeの設定です。<appdef>から</appdef>までを記述してVIM_EMU_IGNORE_APPSのリストにVSCODEを追加すればVSCode使用中はVimエミュレーションが発動しなくなります。