隠岐のフェリー乗換案内アプリを作ってみた 〜Webアプリ編〜
前書き
久々にブログタイトル通りのプログラマっぽい記事です(笑)。
リリースから3ヶ月ほど経ちましたが、島根県の離島、隠岐諸島地域のフェリー乗換案内アプリを作ってみました。本土⇔隠岐(島前/島後)をつなぐフェリーと、島前3島をつなぐ内航船が対象です。最初にブラウザで動作するWebアプリ(もどき)版を開発して、それをベースにハイブリッドアプリ化して iPhone/iPad 版、Android版を作りました。
隠岐航路案内
Webアプリ版 http://naturebot-lab.com/ferry_transit/
普段はiPhoneアプリ開発を中心にやっていて、Webアプリベース(と言っても、ほとんどフロントエンドで処理するので、Webアプリと呼べるか怪しいですが...)のものを作るのは初めてだったので色々と調べながら作りました。Android は昔少しさわったことがありますが、Google Play ストアでのリリースは初めてです。それぞれの開発の記録やハマったところなどを書き残しておきます。3本立ての予定で、今回は Webアプリ版です。
開発の経緯
島根県の隠岐諸島では、本土と隠岐をつなぐ大型フェリーと隠岐諸島の島前各島をつなぐ内航船が就航しており、それぞれ隠岐汽船と隠岐観光が運営しています。隠岐に関係する港は全部で6つだけですが、大型フェリーと内航船の乗り継ぎルートも含めるとわりと複雑です。
西ノ島町観光協会HPより引用
さらに時期によって船がドック入りしたり、運行ルートが変わったりするので、紙の時刻表で確認するのはちょっと骨が折れます。また、内航船は大手の乗換案内サービスでは検索対象外です。
隠岐汽船公式サイトには時刻表検索機能があり、内航船を含めた乗り換えルートも検索できるのですが、スマホに対応していなかったり、時刻表の一覧はPDFベースだったりとちょいちょい不便なので、スマホで簡単に見れる時刻表/乗換案内アプリがあると便利そう、ということでWebアプリの勉強がてら作ってみることにしました。
アプリの仕様
- いわゆる電車乗換案内アプリのフェリー版
- 指定した港から出る船の時刻表(主に島民向け)
- 指定した出発地〜目的地の乗換ルート検索(主に観光客向け)
- 指定された日時に応じた時刻を表示する
- 駅順が決まっている電車と違い、時期や時間によってルートが異なる
- オフライン動作に対応できるようにする
- 島内は電波が悪いところが多くしばしば圏外になるので、観光中などにネットにアクセスできないケースを想定
- Webアプリ版では対応せず、ハイブリッドアプリでのオフライン動作を想定して設計
- 外国人観光客向けの英語表記対応
- 表示する言語はブラウザの言語設定から自動判別
配布形態の検討
HTML5のオフライン動作向けの機能は各ブラウザに普及してきたので、Webアプリで完結することもできそうですが、とりあえずHTML5 + JavaScriptで機能を作ってWeb版としてリリースした後、iPhone/Androidのハイブリッドアプリを作る方針としました。Webアプリは一般的なユーザにはあまり浸透していない(と思っている)形態なので、ブックマークやトップ画面への追加などができないユーザも多そう、という意味でスマホアプリとしてパッケージングしたほうが良さそうと考えました。広告の表示回数をアクセス解析代わりに使っていますが、実際にスマホアプリ版、特にiPhone/iPad版のアクセス数がダントツに多いです。
使った言語とフレームワーク
言語
オフライン対応のハイブリッドアプリ前提で作るので、なるべくフロントエンドで色々と処理してやる必要があります。なので基本的にはブラウザが実行できるJavaScript一択となりますが、昨今はAltJS(JavaScriptにコンパイルして使う、JavaScript の代替となる言語の総称)が全盛ということで、その中でも定番になりつつあるTypeScriptを使ってみることにしました。
TypeScript は名前の通り JavaScript + 静的型付けが基本的なコンセプトですが、ECMAScript 6 に準拠した機能を取り入れており、クラスベースのオブジェクト指向的な書き方がしやすいのでObjective-C、Swift 使いとしては馴染みやすかったです。
エディタは atom を使っているので 、atom-typescriptプラグインをインストールしました。TypeScriptで書いたファイルを保存するだけで、文法チェックとJSへのコンパイルを自動でやってくれるので非常に便利です。
なお、TypeScript で JavaScript のライブラリを使う際は、型定義情報が必要になります。有名どころのライブラリに関しては型定義情報が提供されています。型定義情報は Typings という型定義管理ツールで取得することができます。以前はTSDというツールが使われていたようですが、現在は非推奨になったようです。
バックエンド側はほとんど処理がないので、PHPで適当に書きました(^^;)
フレームワーク
フロントエンドで時刻表データを整形するのにMVC(MVW?)フレームワークのAngularJSのフィルタ機能が便利そう、ということでAngularJSを使ってみることにしました(後継の Angular 2 も開発されていますがまだ色々変わりそうなので...)。AngularJSは色々モジュールを組み込んで拡張できるので、多言語対応も angular-translate でできそうです。
デザイン方面は疎いので、素人でもそれなりにそれっぽい画面になると噂のTwitter社製 Bootstrapを今更ながら使ってみようかな、と思っていましたが、AngularJS と組み合わせて使えるようにポーティングされたUI-BootstrapがAngularJS開発チームによって提供されていたので、それを使ってみることにしました。
環境構築
TypeScript + AngularJS + UI-Bootstrap な環境を作ります。 色々依存があってややこしいですが、Macで一から構築する場合は以下の手順です。
homebrew (Mac OSX のパッケージ管理ツール)をインストール
homebrew で node.js (ブラウザなしでJavaScriptを実行するためのツール)をインストール
node.js で動作する各種ツールを使うために node.js をインストールします。 atom エディタも JavaScript で書かれているので node.js が必要です。
npm (node.js のパッケージ管理ツール) で bower (フロントエンド向けパッケージ管理ツール) をインストール(2017/10/26 追記)久々にアプリをアップデートしたら bower がお亡くなり(deprecated)になっていたので、フロントエンド系パッケージ類もnpm管理に移行しました。
npm で TypeScript をインストール
bowernpm でフロントエンド向けのライブラリ(今回は AngularJS と UI-Bootstrap)をインストール$ npm install angular-ui-bootstrap
ちなみに UI-Bootstrap は Bootstrap のCSSだけ流用するので、Bootstrap もインストールが必要でした。npm では angular-ui-bootstrap パッケージだけ入れれば良さそうです。bowernpm で AngularJS のモジュールをインストール多言語対応用モジュール
$ npm install --save-dev angular-translate
便利フィルタ詰め合わせ
$ npm install angular-filter
開発
時刻表のデータベース化
時刻表は各社からPDFで公開されていますが、それぞれフォーマットが違うので扱いやすい形に統一する必要があります。 今回は Google ドキュメントでスプレッドシートに各社のフォーマットをそのまま入力できるシートを作って、Apps Script で統一したフォーマットに変換することにしました。出力されたものを csv としてダウンロードして、それを SQLite の DB に取り込んだものをサーバに配置しました。
統一フォーマットは以下のように、「ある港」から「次の港」へ向かう便の情報を最小単位として時刻表を分解したものです。
便ID | 接続ID | 開始日 | 終了日 | 便名 | 出発地 | 出発時刻 | 到着地 | 到着時刻 |
---|---|---|---|---|---|---|---|---|
1 | 2 | 2016/01/01 | 2016/02/29 | FERRY_OKI | HONDO_SHICHIRUI | 9:00 | SAIGO | 11:25 |
2 | 3 | 2016/01/01 | 2016/02/29 | FERRY_OKI | SAIGO | 12:00 | HISHIURA | 13:10 |
3 | 4 | 2016/01/01 | 2016/02/29 | FERRY_OKI | HISHIURA | 13:20 | BEPPU | 13:35 |
便IDは各便を一意に識別するための識別子、接続IDはその便が接続する別の便のIDです。時期によって便が変わるので有効期限(開始日、終了日)があります。
バックエンド
ハード面は安いプランのレンタルサーバです。隠岐諸島の人口(約2万人)と観光客(ツアー客を除く)のキャパシティを考慮しても、大量アクセスが見込まれるサービスではないので、数百アクセス/日を捌ければ良いという見込みです。
ソフト面では、オフライン対応のために前項の時刻表DBをまとめてクライアントに渡す処理が必要です。PHP で時刻表 DB の全内容を JSON 化してクライアントに送信する処理を書きました(数行だけですが)。 DBファイルを直接クライアントに投げちゃってもいいような気もしましたが、クライアント側で SQLite3 DB が扱いにくいようなので、そのまま処理できる JSON 形式にしています。
フロントエンド
クライアント側のプログラムは TypeScript も AngularJS + UI-Bootstrap も初めてなので探り探りの開発です。 将来的な Angular2 への移行やメンテナンス性を考えると、以下のような記事を参考にするのが良さそうです。
http://qiita.com/armorik83/items/5542daed0c408cb9f605qiita.com
が、UI-Bootstrap 公式のサンプルコードは書き方が古めかしいので、それを参考にしているうちにあまりモダンでないコードになってしまいました...。いずれリファクタリングしたい(^^;)
UI(ユーザインタフェース)
アプリの主な機能は時刻表と乗換案内なので、タブで切り替えるのが良さそうでした。 UI-Bootstrap には Tabs というディレクティブ(=独自タグor要素)が用意されていて、簡単にタブの UI を作成できます。便利。
時刻表
時刻表の処理としては、以下のような感じです。
- サーバの時刻表DBからJSON化したデータ(数百KB)を取得
- AngularJS のフィルタで指定日時と出発地/到着地に一致するデータを取捨選択
- ngRepeat ディレクティブで表を生成
フィルタは拡張モジュールも合わせると様々な種類が用意されており、条件に一致するデータの抽出や排除、プレフィックスやサフィックスの追加などが簡単にできます。多言語対応モジュールもフィルタとして実装されており、登録したワードをフィルタにかけると言語設定に対応した文字列に置き換えてくれます。
SQLite3 や JSON オブジェクトには日時を表す型が存在しないので、時刻は文字列(mm:ss)として格納されており、JSON の文字列から JavaScript の Date 型に変換して保持しておきます。この時の変換元となる文字列のフォーマットは少し曲者で、ブラウザによって許容する表現が異なります。サポートしていないフォーマットを指定した場合、null が返ってしまうので全てのブラウザがサポートしているフォーマットを選択する必要があります。
というわけで、一番汎用的な"YYYY/MM/DD HH:mm:ss"フォーマットに加工してから Date 型に変換しています。
乗換案内
乗換案内のアルゴリズムは、以下のような感じです。
- 指定日時に従って有効期間外の便をフィルタで排除
- 指定出発地かつ指定時刻に最も近い便を抽出して、各経路を探索 2-1. 指定到着地にたどり着く便を抽出して結果リストに保存 2-2. たどり着けない便から接続可能な次の便を探す 2-2-1. 見つかった便から、指定到着地にたどり着く便を抽出して結果リストに保存 2-2-2. たどり着けない便から接続可能な次の便を探す ...以上を再帰的に繰り返してすべての経路をリストアップ
- 経路リストを優先度順にソート
- ngRepeat ディレクティブで経路リストから表を生成
6つしか港が無い割に、かなり色々な経路をとることができるので、隣の島に行くのに数百種類の経路が出たりします(笑)。全部いっぺんに表示するのはアレなので、最初は上位5経路を表示するようにして「もっと見る」ボタンを押すと他の経路も見れるようにしました。 となると、どの経路を優先して表示するかが問題となり、ユーザに優先したい条件(到着時刻が早い順、移動時間が短い順、値段の安い順など)を選んで貰えば解決、なのですが、それらのインターフェースも増やすとごちゃごちゃして使いにくそうなので、そこはアプリ側で優先すべき経路を勝手に判断することにしました。
多言語対応
angular-translate モジュールを使って日/英に対応しました。 使い方は以下の記事がわかりやすかったです。
http://angularjsninja.com/blog/2013/09/05/angularjs-i18n/angularjsninja.com
言語設定の自動判別は自分でやってやる必要があります。 $translateProvider.determinePreferredLanguage() に言語コードを判別して返す関数を渡します。 JavaScriptでの判別コードは以下の記事を参考にしました。
JavaScript でブラウザの言語設定を取得 | EasyRamble
デプロイ
デプロイはgitHub経由でやってみたら楽で良かったです。 手順は以下の通り。
gitHub からサーバに通知して自動 pull みたいなこともできるらしいですが、ちょっと面倒なので今回はそこまでやりませんでした。 なお、bower でインストールしたパッケージ群はgitリポジトリに含めないので、予めFTP転送ソフトでサーバにアップしておきました。
ハマりどころ
クロスドメイン通信
各ブラウザでは、クロスサイトスクリプティング(XSS)防止のため、クロスドメイン通信がデフォルトで禁止されています。つまり、JavaScript の処理からのアクセス先(今回はPHPスクリプト)が同じサーバにあるWebアプリ形態の場合は問題ないですが、ハイブリッドアプリ化した場合、JavaScript は端末のアプリ側に置かれるので、サーバに対するアクセスはクロスドメイン通信となり失敗します。
これの解決方法は、JSONP(JSON with Padding) や CORS(Cross-Origin Resource Sharing)、XDM (Cross Document Messaging)などいくつか方法があるようです。
https://blogs.msdn.microsoft.com/tsmatsuz/2011/06/24/jsonp-cross-domain/blogs.msdn.microsoft.com
JSONP は裏ワザっぽいし、XDM は大仰なので、今回は王道っぽい CORS で対応することにしました。 実装は PHP で一行追加するだけでした。
時刻入力
スマートフォンからアクセスする場合、UI-Bootstrap の Timepicker はボタンが非常に押しづらくて使いにくいです。代替として HTML5 の input type="time" を使用すると OS ネイティブの入力インタフェースが出て入力しやすいのですが、IE11、 デスクトップ版の FireFox、Safari などでは未サポートでした。
Can I use... Support tables for HTML5, CSS3, etc
解決方法としては、AngularJS の ng-hide ディレクティブで、スマホ/タブレット向け(xs, sm)は input type="time"、それ以外(md, lg)はTimepickerを表示するように切り分けました。(が、さらに Android 4.3 以下の標準ブラウザは input type="time" をサポートしていないことが判明したので、Android版では Cordova + Crosswalk でレンダリングエンジンを変更することで回避しました。詳細はAndroid版のエントリで...)
文字化け
JavaScript のコードで日本語を使っていたところ、iOS の Safari で文字化けしました(charset="uft-8" を指定してもダメ)。条件文で日本語を使っていたりすると、プログラムが動作しなかったりします。 回避方法は以下の記事で紹介されているとおり、UTF-8(BOM付き)で JavaScript を保存するというものですが、atom エディタは BOM 付き保存はサポートしていないので、JavaScript から日本語を排除するようにしました。DBに格納された日本語をif文で使ったりしていたので、DB内に日本語で格納していた船名や港名も英字に置き換えが必要でした...。
また、上の問題とは別に iOS7 では英語設定でのローマ字表記に使うラテン文字がどうしても文字化けするのですが、こちらはアプリ使用上はほぼ問題にならないため、対応しないことにしました。
その他
Favicon と App Icon
Favicon はブラウザの URL の左側に表示されるミニアイコンで、App Icon はスマホでWebサイトをホーム画面に追加したときに表示されます。アプリっぽくするために、それっぽいアイコンをこさえて設定しておきました。
アイコンの作成には Affinity Designer というソフトを使っています。Adobe Illustrator の代替のベクターベースのグラフィックソフトとして人気が出ているようですが、廉価なのになかなか使い勝手が良くて重宝しています。
フェリーのアイコンは以下のサイトで配布されているものを使わせてもらいました。 icooon-mono.com
以下のサイトに画像を投げると Favicon と App Icon を自動生成してくれます。 www.favicon-generator.org
3Dプリンタで模型製作 + エアブラシ塗装ことはじめ2
あらまし
タイトルが変わってしまいましたが、前回からの続きものです。 前回の記事では模型の塗装用にエアブラシ環境を整えました。 ag.hatenablog.com
今回はエアブラシで塗ってみたお話です。何を塗るのかは前回の記事に書いてませんでしたが、西ノ島の名産品である活イカの模型を塗りました。モデリングから始めて、3Dプリンタで印刷した上での、仕上げの塗りなのでそのあたりの流れも記録しておきます。
塗装までの工程
モデリング
有機物なのでポリゴンベースのモデリングソフトより、スカルプトモデラー(デジタル彫刻)のほうがやりやすそう、ということで Scruptris というソフトを使ってみることにしました。
簡便な操作性で、初心者でもそれなりの形に仕上がる良ソフトですが、ありがたいことに無償で提供されています(有償版 ZBrush の入門版という位置づけ)。
さて、できたのがこちらになります(3分クッキング風)。
これを OBJ 形式でエクスポートします。
3Dプリント
モデリングしたデータを3Dプリンタでプリントしていきます。 使っている3Dプリンタはこちらです。
今回は塗装前提なので eSUN の白いPLAフィラメントを使用しました。
このフィラメントはプリント温度は205〜210℃が最適なようです。200℃だと失敗してボロボロになってしまいました。 また全長30cmを超える大物のため、一回ではプリントできないので FlashPrint の分割機能で2分割しました。
さて、プリントできました(プリント直後の写真は撮り忘れました)。サポート材をニッパーやカッターで取り除き、半日ほどかけてひたすら表面をヤスって積層痕を消します。 ちゃんと研磨しないと積層痕の溝に塗料が流れたりしてうまく塗れません。 今回のような曲面の多い形状の場合、粗めのスポンジタイプのヤスリから始めると曲面にフィットして削りやすいです。
最終的には紙やすりで #60 〜 #300 くらいまで順に研磨しました。 研磨後、分割された本体を結合します。今回は水に沈む必要があったので、内部に穴を開けて釣り用のオモリを入れて浮力を調節しました。
結合したのがこちらになります。
結合部の接着はプロ用耐衝撃というなんか強そうな接着剤を使いました。
パテ補修
結合部はどうしても段差ができてしまうので、パテで隙間を埋めます。 コスパが良さそうなこちらのパテを使いました。
橙色っぽい部分がパテによる補修部分です。結合部のほかに、研磨で穴が空いてしまった部分なども補修しました。
パテを盛ったあと、カッターやデザインナイフなどで余分なパテを削ぎ落とし、紙やすりで段差が滑らかになるように仕上げます。
塗装
さて、やっと塗装に入りますが、あまり写真がありません(^o^)
下地塗装
まず、サーフェイサーで下地を塗っていきます。 1段目は下地隠蔽力の高いグレータイプ。
2段目はクリアカラーの下地とするため、ホワイトタイプのサーフェイサーで塗ります。
下地が隠蔽されるまでそれぞれ2〜3回ほど塗り重ねます。さらに表と裏に分けて塗るので、塗装→半日乾燥を計10回ほど繰り返して一週間ほどかかりました。
エアブラシ塗装
準備については前回の記事の通りです。塗料はラッカー系塗料を使いました。 塗料の希釈具合などは以下のサイトがわかりやすかったです。
http://www.k4.dion.ne.jp/~gustav/air04.html
さて、一応失敗した3Dプリント物などで2〜3日練習してみた後、本番の塗装です。 と、思ったらエアブラシが詰まって塗料がでません\(^o^)/
ノズルのクリーニングなどいろいろ試してみましたが改善せず、2日ほど悩んで最終的にエアブラシの後ろのネジ(名前がわかりません)をゆるめたところ、ちゃんと出るようになりました。
右の写真がもらった資料で目標の色となりますが、ベースの色はクリアイエローを薄く塗ることで再現できました。 その上の茶色っぽい部分はオレンジと黒の調色です。
調色については、子ども向けですがこちらのサイトの「混ぜ合わせチャート」という表が非常に便利です。
斯くして一旦塗り終えたわけですが、どうも本物はもらった資料ほど黄色くないそうで...。 実物を見せてもらってリトライです。
確かにちょっと黄土色っぽい感じですね。 というわけで、一旦色を剥がして塗り直したものがこちらです。
ベースの色はクリアイエローに黒を少し混ぜました。 目玉は筆塗りです。目の横のアイシャドウみたいな部分はクリアブルーを重ねています。
仕上げのウレタンニス
色はOKが出たので、最後にテカリと防水性(水に沈めて使うので)のためにウレタンニスで仕上げます。 今回は水性ウレタンニスというものを使いました。木工用ですが模型にも普通に使えます。
これを3層ほど塗り重ねますが、1層塗り終えるごとに#300くらいのヤスリで表面を研磨してやる必要があります(次の層の吸着を良くするため)。透明なので均一の厚さに塗るのはなかなか難しく、薄いところは研磨で下地の色ごと剥がれてしまったりしてなかなか難しかったです。
これも表裏×3層で3日くらいかかって、やっと完成です。
塗り終えた写真を撮らずに納品してしまったので、残念ながら完成品の写真はありません(^^;)
エアブラシ塗装ことはじめ
島内で依頼を受けて3Dプリンタで作った模型に塗装が必要になったので、エアブラシに挑戦してみることにしました。
必要なもの
島内にはエアブラシなど売っているところはないので、例のごとく Amazon で調達します。
エアブラシ本体
エアブラシ(ハンドピース)
これが塗料の吹き出し口になります。チューブでコンプレッサーにつないで空気を供給することで塗料を吹き付けます。吹き出し口のサイズは0.2mm、0.3mm、0.5mmが主流らしいですが、まずは汎用性の高い0.3mmにしました。迷彩など細かい塗装は0.2mm、広い面の塗装や、サーフェイサーなど粒の大きい塗料を吹く場合は0.5mmが向いているそうです。選びかたはこちらの記事が参考になります。 www.1mokei.jp
コンプレッサー
空気を送り出す機械です。音がうるさいと言われていますが、実際使ってみたら意外と静かでした。連続使用時間が1時間の制限があるものの、本体はコンパクトだし、価格もリーズナブルで入門機には良い感じです。上記サイトでコンプレッサーの比較もされてます。 www.1mokei.jp
塗料
ラッカー系塗料
模型でよく使われる塗料の種類はラッカー(溶剤系アクリル塗料)、水性アクリル塗料、エナメル塗料、ウレタン塗料などがあるようですが、今回はエアブラシ向きのラッカー系塗料を用意しました。それぞれの塗料の特徴は大まかには下記のようです。ウレタンは仕上げのクリア塗装などに限定した用途が多いらしいので省いてます。
ラッカー 水性アクリル エナメル 塗膜 強い 弱い 非常に弱い 乾燥時間 早い 遅い 遅い 塗料の伸び 良い 悪い 非常に良い 塗り方 エアブラシが最適 筆塗り/エアブラシ 筆塗りが最適 うすめ液(ラッカー系塗料用) [asin:B001AZ8CDQ:detail] ラッカー系塗料専用のうすめ液です。塗料に混ぜてエアブラシに適切な濃度に調節します。
- 下地塗り用の塗料です。今回3Dプリントした模型は素材がPLAで、あまり塗料ノリが良くないと言われているので、レビューで食いつきが良いとの評価が高い製品を買ってみました。
周辺ツール
塗料皿
色を混ぜるのに使う皿です。スポイト [asin:B002DTHA7C:detail] うすめ液を取り出すのに使います。
クリーナー [asin:B002WMB7QU:detail] 使用後や色を変える際には、ハンドピースをキレイに掃除する必要があります。うすめ液と同じシンナー系の溶剤ですが、うすめ液より強力なので塗料を落としやすいです。
塗装ブース製作
エアブラシは塗料+溶剤が霧状になって飛び散るので、室内でやる場合はファンで集気してフィルタで清浄化する塗装ブースは必須です。既成品の室内用塗装ブースも色々ありますが、そこそこ値段がするので今回はダンボールでしょぼめ塗装ブースを自作してみました。
材料
PC用冷却ファン(12V DCファン)
前面から吸気して背面から排気する直進型のファンです。前面から吸気して上に排気するタイプのシロッコファンというのもあるようで、排気ダクトありの設計の場合は本体側にシロッコファンを配置して、排気ダクトを窓用換気扇に接続するパターンが多いようですが、シンプルに直進型のファンで直接排気するようにしました。PC用のファンは色々製品がありますが、回転数3500rpmと一般的なファンより高速な割にリーズナブルだったのでこれにしました。音はうるさいです(笑)ファン駆動用AC電源 [asin:B002TOK07S:detail] PC用ファンに必要な電源はDC12Vなので、換気扇と違って直接コンセントにさせないので、ドライブ用のAC電源を流用します。電源コネクタは同じなので改造なしで使用できます。
レンジフード用不織布フィルタ 100均で買いました。大きいので適当に切ってつかいます。
ハニカムフィルタ
不織布フィルタのみだとすぐに目が詰まってしまうらしいので、ハニカムフィルタと組み合わせてミストをキャッチします。見た目のまんまダンボールを積み重ねたフィルタなので、簡単につくれるだろうと思って自作したら案外面倒くさかったです...。自作する場合は厚めのダンボールを1.5cm幅に切りそろえたものを数十本用意して、積み重ねてボンドで接着します。
地道な作業です。次からは買おうと思いました。
組み立て
見たまんまなので詳細は省きますが、ダンボールを切り貼りしてこんな感じの箱を作ります。 背面にファンの羽に合わせた大きさの穴を開けて、ファンを取り付けます。今回は木ねじで背面からファンとダンボールをぶすっと貫通させて、前面から木ねじをグルーガンで固定しました。
フィルタの取り付け
前面の角にマジックテープを貼り付けて、不織布フィルタを固定しました。
最後にハニカムフィルタをつけてできあがりです。ハニカムフィルタ側にもマジックテープを貼りつけて、不織布フィルタに固定しました。
塗装してみる
調色
塗料皿で複数の塗料を混ぜて吹きたい色を作りますが、これが実は一番難しかったです。どう混ぜて良いかさっぱりだったので、混色ガイドというアプリでざっくり配合を見てから調節していくようにしましたが、なかなか思うような色になりません。ちゃんと目的の色を得るには、色々試して経験を積んでいく必要がありそうです。
塗料の希釈
塗料そのままだとエアブラシにとっては粘度が高過ぎるので、うすめ液でちょうど良い具合に希釈します。うすめすぎてもダメなのでこれもコツをつかむのに時間がかかりそうです。希釈した塗料はハンドピースのカップに投入します。慣れたらハンドピースのカップ内にうすめ液を投入して、そこに塗料を入れる方法もあるようです。
試し吹き
写真を撮ってなかったですが、3Dプリンタで失敗した造形物に色々吹き付けてみました。ムラなく塗るのはやはりコツが要りそうですが、距離や吹付けの強さによって色々な塗装ができるので面白いです。もう少し練習してから本番に挑もうと思います。
後片付け
ハンドピースのカップに残っている塗料を空きビンに移すなどしてから、塗料を拭き取り、クリーナーを投入してうがい(ハンドピースの吹き出し口を抑えて、カップに空気を逆流させること)をします。細かいところは綿棒にクリーナーをつけて掃除します。吹き出し口のニードルキャップにも塗料が溜まるので、取り外して綿棒で塗料を落とします。
感想
準備やら片付けやらは大変ですが、塗るのは楽しいです。しかし、希釈も掃除もシンナーを使用するので換気はとても重要です。窓開けたりして換気しながらの作業でしたが、それでも結構なシンナー臭で、長時間作業は体によくなさそうです。ちょっと値段がしますが、有機溶剤用のマスクを買っても良いかも...。
3Dプリンタでおみやげ開発
隠岐・西ノ島に移住してから、「西ノ島お土産開発プロジェクト」と称してひとりで勝手にやっているのですが、第一弾として西ノ島町のゆるキャラ「活イカ活っちゃん」のフィギュアストラップを製作してみました。試作から量産まで一貫して3Dプリンタで作っています。
西ノ島町観光協会(西ノ島町別府港第2ターミナル1F)で販売していますので、観光などでお立ちよりの際はぜひご覧くださいませ。 (2017/7/18追記)現在は隠岐酒造(安藤本店様)、隠岐シーサイドホテル鶴丸様、国賀荘様でも取り扱っていただいています。
また、西ノ島町の地域振興課でも扱ってもらえることになったので、本土でのイベントでも販売される予定です。
というわけで、製作開始から販売までにやったことを振り返ってみようと思います。
準備編
使用したツール
3Dプリンタ(FlashForge Dreamer)
中堅クラスのパーソナル3Dプリンタ。動作も安定しており、ほとんど設定をいじらなくても一定のクオリティでプリントできます。購入当時は同価格帯で高品質プリントを謳うAFINIAと迷っていましたが、Dreamer はカバーが付いていることによるプリント時温度の安定性や、造形サイズの大きさ(特に床面積が量産に重要)などの面でアドバンテージがあるかと思います。材料はPLA・ABSに対応していますが、PLAのほうがプリントが安定している(ノズルが詰まったりしない)のでもっぱらPLAを使用しています。今回は使用していませんが、デュアルヘッドなので2色刷りもできます。
スライサー&プリント用ソフト(FlashPrint)
3Dプリンタに付属のソフト。使いにくいソフトではないですが、サポート(支柱)自動生成機能はうまく生成されないことがあって苦労したので、定評のある Simplify 3D とかの有料ソフトを買ったほうが良かったかも。
インクジェットプリンタ
パッケージのラベルシールや顔デカール印刷用。普通のインクジェットプリンタですが、ラベルシールなどの特殊用紙は、対応するプリンタが限られるので注意が必要です。
-
プリント後、サポートを外した部分(ゲソの裏側あたり)のバリ取りに使用します。
ニッパー
サポート外し&バリ取り用。
防護メガネ
サポート外し&バリ取り用。100均にも売っています。
キリ
ストラップを付ける穴開け用。100均で買いました。
紙ヤスリ
サポート跡の仕上げ用。100均の紙ヤスリセットが便利でした。
裁断機(ディスクカッター)
パッケージ用のシールや活っちゃんの顔デカールの裁断用。最近の裁断機はスマートで安いですね。
-
3Dモデル作成用。高機能ながら無料で配布されている、大変ありがたいモデリングソフトです。わりと操作にクセがありますが、慣れればなんとかなります。
材料
そんなに大量生産はしないので、だいたい Amazon で仕入れています。離島住まいですが、プライム会員なので送料もかかりません。
3Dプリンタ用フィラメント(PLA)
主な原料。活っちゃんは都合の良いことに白一色なので、フィラメントの色そのままで塗装はしていません。
転写シール(透明タイプ)
活っちゃんの顔用。曲面にも上手く貼ることできます。Amazon の簡易パッケージ版が安いです。
ヘッダー付きOPP袋
パッケージ用の袋。名前が分からなくて検索が難しかったですが、OPP袋というらしいです。Amazon にはあまり種類がないので、このサイトで買いました。
ラベルシール(光沢)
パッケージに貼る用。ノーカットなので自分で好きなサイズにカットして使います。
設計〜試作編
モデリング
まずは3Dプリントするための3Dモデルが必要なので、モデリングソフトを使って活っちゃんをモデリングします。今回は Blender というソフトを使いました。だいぶ前に一度使ってみて挫折した経験がありますが、以下の記事を参考にさせてもらったところ、一通りの操作を覚えつつ活っちゃんが出来上がりました。
初心者のための!作って学ぶBlenderの基礎:②モデリング | 日本VTR実験室
具体的なモデリング方法については記事にあるので割愛しますが、大まかには以下の手順です。
ガイド絵を用意する
こちらに活っちゃん着ぐるみの写真があったので、ガイド絵として使わせてもらいました。
Mirror Modifier(鏡像反転) を設定する
活っちゃんはほぼ左右対象なので、Mirror Modifier を設定することで、左右どちらか半身のモデリングを省略することができます。
本体の大まかな形をつくる
ガイド絵に沿って、平面をつなげて大まかな形をつくります。主に必要な操作はループカット、押し出し(Extrude)、拡大/縮小(Scale)の3つだけです。
細かい部分をつくる
手足やエンペラなど細かい部分をつくります。主に必要な操作は押し出しと面張り(Face)だけです。
3日ほど Blender と格闘して、とりあえず活っちゃんぽいものができたので、顔のグラフィックを貼ってレンダリングしてみました。
テストプリント
さて、作った3Dモデルを試しにプリントしてみます。3Dプリントソフト(FlashPrint)に読み込ませるには、Blender からSTL形式でエクスポートする必要があります。読み込み時にポリゴンが裏返ってたりしてエラーが発生する場合がありますが、大抵は自動で修復してくれます。
脚から胴体にかけての部分は宙に浮いているので、サポート(支柱)を生成してやります。とりあえずプリントした結果がこれです(サポートは除去済み)。
顔はインクジェット紙に印刷したものを接着剤で貼り付けています。わりと上手くいっているようにも見えますが、隠れている脚が何本か折れています(笑)。考えてみれば当たり前ですが、脚の先端の細い部分から徐々に太くなる構造は積層方式の3Dプリンタが苦手とするところです。サポートを増やして色々試しましたが、かなりの確率で折れます。
また、脚の先端が尖りすぎていて危険だったので、先っちょはだいぶ丸めました。モデリング段階で意識していなかった問題も、プリントしてみることで色々と見えてきました。
産業文化祭への出展
開発期間中に、ちょうど西ノ島町が主催する産業文化祭が開催されたので、前宣伝も兼ねて出展してみました。
3Dプリンタの実演もやったので、ちびっ子からおじいさんまで色々な方が興味を持ってくれました。役場の方にも興味を持っていただいて、後にイベントでの販売のお声がけをいただきました。この時は顔を透明フィルムシールに変更していますが、曲面になじまないので切れ込みを入れており、まだちょっと微妙な感じです。
量産〜販売編
量産方法の検討
量産方法については、3Dプリンタで作ったモデルを原型としてレジンキャスト(シリコン型枠にレジンを流し込んで成形する)なども検討しましたが、費用や手間を総合して考えた結果、全部3Dプリンタでやってみることにしました。
比較項目 | レジンキャスト | 3Dプリント |
---|---|---|
費用 | × レジンの単価が高め。型枠に使用するシリコンも単価高め、かつ寿命がある(20回程度で壊れる) | ◯ kgあたり単価はPLAフィラメントのほうがレジンより若干安め程度だが、中空構造にできるため材料消費が抑えられる。 |
複製時間 | ◯ シリコン型枠の作成はそこそこ時間がかかるが、レジンキャスト自体は1回3分程度と短い。 | △ 大きさに比例するが、ストラップサイズでも一体あたり数十分と長め。 |
複製手順 | × 型枠作成、レジンキャストともに手作業が多い。 | ◯ プリント準備(3Dプリンタの水平出しなど)以外はほぼ自動。 |
後加工 | △ バリ取り等は必要だが加工はデザインナイフなどで比較的カンタンにできる。 | × サポート(支柱)のバリが多く発生する。PLAはレジンと比較して硬いので、加工はルーターなどが必要。 |
量産プリント向けの改良
量産にあたっては、まだ何点か改良が必要でした。
サポート(支柱)の改良
自動サポートに頼っていると相変わらず脚が折れやすいので、手動で3Dモデル側にサポートをつけました。プリント時のラフト設定(土台の自動追加)と合わせてだいぶ改善はされましたが、まだたまに折れます...。
腕の位置の改良
腕が体から離れていると引っかかったりして折れやすいことが判明したので、体にくっつけるように修正しました。ただ、くっつけすぎるとプリントに失敗するようになったので、くっつくかくっつかないかの微妙な位置に調整が必要でした。
顔プリントの改良
顔のプリントは、3Dモデルに凹凸をつけてプリントして着色したり、シールで貼るなどで色々試してみましたが、転写シート(デカール)が一番うまく行きました。活っちゃんの顔は曲面なのでシール系は貼りにくいのですが、転写シートは曲面にうまくフィットしてくれます。
改良の結果、こんなフォルムになりました。
小さい活っちゃんが実際にストラップとして販売するサイズです。 大きい活っちゃんは西ノ島町観光協会にプレゼントしました。
活っちゃんの使用許可申請
活っちゃんは西ノ島町のキャラクターなので、町の使用許可が要ります。使用許可申請の許諾条件はイラスト利用を前提としており、立体物は前例がないとのことでしたが、産業文化祭で一度お披露目していたこともあり、わりとあっさりと許可をいただけました。
量産プリント
使用許可も取れたので、いよいよ量産に入ります。
プリント中の様子。
ぎちぎちに並べたところ、同時に25体までプリントできました。プリント時間は20時間程度です。
大量にできました。
仕上げ
さて、プリント後の状態からストラップとして販売できる状態に仕上げていきます。
バリ取り
ニッパーなどで一体ずつに分解して、脚まわりのサポートを外していきます。結構飛び散るので防護メガネが必須です。
サポートの跡が残るので、ミニルーターで表面を滑らかに磨きます。ミニルーターで処理できない箇所は紙ヤスリで仕上げます。
ヒートン装着
ストラップを引っ掛けるためのヒートンを挿す穴をキリで開けます。最初はミニルーターにドリルをつけてやっていましたが、回転の熱で溶けたプラスチックがドリルに引っ付いてしまうので、キリに変更しました。
ヒートンを穴に挿します。そのままだとずっぽ抜けてしまうことがあるので、瞬間接着剤で固定します。
顔貼り
転写シートに印刷した顔を貼っていきます。顔の周りのフチを少し残して切り取り、本体に貼ってから水に濡らしたティッシュなどで押さえつけます。十分に水分が浸透したら、滑らせるようにして裏紙を取り除くときれいに転写されます。印刷面が見えない状態で位置合わせが必要なので、蛍光灯で透かしながら合わせてやります。
ニス塗り
転写シートは素のままでは耐久性が低いので、顔周辺に耐水性のニスを2度塗りします。
ストラップ装着
ヒートンにストラップを装着して本体は完成です。
パッケージング
布で汚れを取りつつ、バリの取り残しなど最終チェックします。
OPP袋にラベルシールを貼ります。ラベルシールはインクジェットプリンタで印刷して、裁断機で程良い大きさに裁断してあります。
袋を閉じて完成です!立体物を収めるので、キレイに閉じるのは案外コツが要ります。なるべく袋の上のほうに活っちゃんを寄せて、平らな面積を増やした状態で閉じるとうまくいきます。
販売開始
ディスプレイ用の小物は100均で揃え、ポスター部分は奥さんが作ってくれました。 最初の販売場所は、西ノ島町観光協会さんに委託販売をお願いして、別府港ターミナルにて販売中です。
まだオフシーズンですが、わりと好評いただいているようで、第一陣は無事完売しました。
やってみた感想
比較的簡単なストラップでも、いざ作ってみると検討すべきことは沢山あるし、一工程増えるだけでもかなり作業が大変になったりします。巷にはモノが溢れていますが、そういった過程を体験すると、一見簡単そうに見えるものも様々な判断や工夫が積み重なって作られているんだろうな、と想像することができて感慨深いものがあります。一方、数十〜数百個規模の量産であれば、3Dプリンタで量産まで対応できるケースは結構ありそうだなとも思いました。素材が限定されたり、大物のプリントに時間がかかったりといったデメリットはあるものの、ロットを気にせず完全に受注生産できるので、材料のロスや在庫リスクもないため、小さく始めやすいというのもあります。また、サイズ変更や微修正が容易なので、製品のバリエーションを出しやすいのもメリットです。小型CNCフライスでの金属部品、電子基盤の切削加工などを組み合わせれば、デスクトップでもかなり幅広いものづくりができそうです。
今後の課題
後工程の手作業が案外時間がかかるので、もう少し作業を最適化したい
サポートの付け方を工夫するなどして、バリ取り作業を減らせないか思案中です。
積層痕をなんとかしたい
紙ヤスリで頑張って磨けば積層痕を消すことができましたが、かなり時間がかかるので全部手作業はさすがに採算が合いません。自動研磨機を作ろうかな...
離島子育て雑記 〜出産編〜
久々の更新となりますが、今月の頭に第一子が無事に誕生しました。 せっかくなので、隠岐・西ノ島での出産事情について記録を残しておこうと思います。
Term1: 妊娠期間中
産婦人科の妊婦検診
離島のお医者さんと言うと小さい診療所のイメージがありますが、西ノ島には隠岐島前病院があり、各科のお医者さんがローテーションで月に数回来てくれています。産婦人科医は月に2回の来島のため、検診はそのタイミングに合わせて行くことになります。お隣の海士町や知夫村では診療所のみのため、島前地域の妊婦さんが全員同じ日に検診に来ます。なので、毎回けっこう混み合っていました(と言っても数人待ち程度ですが)。産婦人科の先生は夕方のフェリーに間に合うように診察を終える必要があるので、結構テキパキとした検診です。妊婦検診は全部で十数回行くことになりますが、費用は行政から配布される受診票を使うことでほとんどかかりませんでした。
行政のサポート
島前病院では出産はできないため、必然的に本土(松江)の病院または産院に行くか、里帰り出産かという2択となります。そのため、出産予定日の約1ヶ月前には本土に移動しての待機が推奨されています。このあたりが離島出産のネックですが、西ノ島では移動などの費用として出産準備金10万と、宿泊に関して補助金(または提携ホテルでの割引)が用意されており、かなり手厚いサポートが受けられます。
また、島根県からは「こっころカード」というものが配布され、本土までのフェリーでは2等料金で1つ上のランクの席(混雑していないのでゆったり座れます)に乗船できたり、協賛店で各種割引を受けたりすることができます。今回は島根県松江市に滞在しましたが、飲食店などは協賛店が多く割引率も高い印象で、なかなかありがたいサービスです。
Term2: 本土での出産待機
職業柄PC一台でできる仕事がほとんどなので、今回は夫婦で松江に渡りました。滞在先は西ノ島町と提携しているレインボープラザというホテルにしました。このホテルは妊婦滞在用の部屋(和室 or 洋室)があり、自炊設備があるので滞在中の食費も抑えることができます。部屋は広くはないですが、トイレ、風呂などもキレイで快適でした。また、妊婦滞在用にバリアフリー仕様になっていたり、緊急時の呼び出しスイッチが設置されていて安心でした。ただし、和室はインターネット環境がないので少し困った*1のと、せんべい布団だったのでちょっと背中が痛くなりますが、フロントで毛布を借りられるので敷布団の上に敷いたらなんとかなりました。がっつりインターネット使って仕事する時は、島根大近くの「たちよりkitchen」というカフェに入り浸ったりしていました。Free Wi-Fiあり、作業しやすい机でかなり居心地が良いです。ホットケーキやカレーなど、料理もおいしいです。
レインボープラザは松江駅から遠くて不便かと思いきや、数百メートル圏内にスーパーや外食チェーン、服屋などなんでもあるのでかなり便利な立地です。ちょっと足を伸ばすと松江城や県立図書館に行けるので、運動がてらの散歩コースとしてもなかなか良かったです。
http://seene.co/s/e86iLVseene.co
Term3: 入院〜出産
産院は無痛分娩ができるところに行きたい、という奥さんの希望で城北産婦人科クリニックになりました。妊婦さんは全室個室で、毎食豪華なごはんがでます。その割に費用は安く、無痛分娩費用を除くと出産育児一時金として支給される42万から少し足が出る程度で済みました。先生の診察も丁寧で、助産師さんもいろいろとサポートしてくれるので、入院中は快適に過ごせたようです。出産時は一緒に立会いましたが、出産の部屋も病院然としないように工夫されていて、なるべくリラックスして臨めるような配慮がされていました。
Term4: 帰島
出産後、自分は家を片付けるために先に帰島して、その後のサポートは出産前日に来てくれた義母にバトンタッチしました。出産後の入院期間は5日間で、基本的に母子同室です。ごはんは相変わらず毎食豪華で、お祝い膳も鯛が出たようで喜んでいました。入院期間中は助産師さんに授乳、オムツ替え、沐浴などの一通りのお世話を教わって過ごしていたようです。入院期間後、帰島のために新生児を連れてバスやフェリーで4時間ほど移動が必要なので、そこが心配点ではありましたが、義母にも交代で面倒を見てもらったりで、無事に西ノ島に帰ってきてくれました。
Term5: 自宅でお世話開始
自宅でのお世話が始まりました。奥さんは2ヶ月の産休、自分は家で仕事しているので、二人で適当に家事やお世話を分担しています。 ベビー用品は日用品的なものは島内にありますが、ベビーバスなどの大物は売っていないので、ネットで色々と揃えました。
ベビーバス [asin:B00GRKKL0Q:detail] 数ヶ月しか使わないので、処分しやすいように空気で膨らますタイプにしました。
ベビー布団
一通りセットになっているのと、りんごがかわいい、ということでこれになりました。 サイズは長く使えるようにちょっと大きめです。今のところ赤ちゃんは布団の長さの3分の1くらいに収まっています。ベビー服
松江のイオンで買いました。島にはあまり売ってないですが、たまに島内のリサイクル子供用品を無料で配ってくれる催しがあるので、そこでもらっても良さそうです。
おむつ/おしりふき
今のところ島内で買っていますが、種類や数はあまりないです。
- 島内では売っておらず、車移動には必須なので先にネットで買ってしまいましたが、西ノ島町ではベビーシートの無料レンタルとチャイルドシート の購入補助があることを後で知りました^^。
だっこひも [asin:B0057D1RKM:detail] 一応買っておきましたが、新生児はちっちゃすぎてはみ出そうなのでまだ出番は先のようです。帰島の際は、抱っこ紐ではなくおくるみに包んで連れて帰ってきました。
チキンジャンジリを再現したい
西ノ島に移住してはや四ヶ月となります。生活面で困ることはほとんどないですが、移住前によく通っていた錦糸町のインドカレー屋さんの「チキンジャンジリ」というカレーが時々食べたくなります。島前地域にはインドカレー屋さんはないので、ネットでレシピを探したりしていましたが、良いレシピを見つけることができませんでした。
というわけで、ないものは作ろう!ということで他のカレーのレシピを元に再現にチャレンジしてみました。
ちなみに元ネタのカレー屋さんはこちら。 www.sapana-group.com
チキンジャンジリはカシューナッツや卵、レーズンなどが入ったコクのあるクリーミーなカレーです。 レシピはこちらの本のバターチキンカレーをベースにジャンジリ要素を足してみています。
この本は写真が豊富で、炒め方のコツや手順も細かく書かれていて、非常にわかりやすいです。3種のスパイス(クミン、カイエンペッパー、ターメリック)を使った基本のカレーとその応用という構成になっているので、基本のカレーをベースとしたアレンジもしやすいです。
結論から言うと、味はかなり近い感じになりました。非常にこっくりマイルドでうまいですが、ハイカロリーです(^q^) 実は2回目のチャレンジなのですが、前回は肉の漬け込みなし、生クリームがなかったので牛乳+バターで代用しました。 やはり肉は漬け込んだほうが断然やわらかく仕上がります。生クリームは代用品のほうがオリジナルに近い味になった気がします(今回は植物性の生クリームを使ったからかも...)。
見た目は、(写真がないですが)オリジナルはもう少しオレンジ色に近い感じです。生クリームがもっと多く入ってるんでしょうか。
材料(4皿分)
- 鶏もも肉 400g
- マリネ液
- プレーンヨーグルト 100g
- おろしにんにく 小さじ1
- ケチャップ 大さじ2
- はちみつ 大さじ2
- スパイス
- クミン 大さじ1
- カイエンペッパー 小さじ1/2
- ターメリック 小さじ1/2
- バター 30g
- しょうが 2片
- タマネギ 1個
- カットトマト 1缶
- カシューナッツ 50g
- ピーマン 4個
- レーズン 40g
- 生クリーム 200g
- 塩 小さじ1/2
- ゆで卵 4個
生クリームは牛乳+バターでも代用できます。 作り方はこちらのサイトを参考にしました。
ナンはレシピに含めていませんが、フライパンで焼けるナン粉をネットで買いました。
スパイス類もネットで調達しています。クミンは消費量が多いので他のスパイスより多めに買ってます。
作り方
ムダにフローチャートで書いてみましたが、面倒くさかったです(^q^)もうしません。
カシューナッツ投下直後の様子。
完成!
竹でディジュリドゥ作り
おとなりの島、中ノ島(海士町)で繁殖しすぎた竹を刈る会、鎮竹林(ちんちくりん)に初めて参加してきました。鎮竹林では竹チップとしての活用がメインみたいですが、参加する前から竹で楽器つくったら楽しそうだなと思ってたので、刈った竹をもらってきて、さっそくディジュリドゥを作ってみました。
ディジュリドゥはオーストラリアの先住民アボリジニーの伝統的な管楽器で、指穴等はなく音階は固定されていますが、ぶおぉぉぉという迫力のある音がでます。
本来はユーカリの木をシロアリが食べて中が空洞になったもので作るそうですが、竹や塩ビ管などでも結構それっぽく作れるようです。 作り方は以下のサイトなどを参考にしました。 http://www.guaduabamboo.com/working-with-bamboo/bamboo-didgeridoowww.guaduabamboo.com
竹製ディジュリドゥの作り方
http://www5d.biglobe.ne.jp/~asiakaze/diju/bamboo.html
材料と工具
- 竹(120〜150cmくらい)
- ビーズワックス(蜜蝋)
- 竹用のこぎり(木工用よりも目が細かい)
- メジャー
- カセットコンロ
- 長い金属の棒(竹の半分以上の長さがあると良い)
- ハンマー
- 汚れても良い布
作り方
竹の切り出し
適当な竹を見繕って切り出します。吹き口の内径は3cmくらい、そこから先端に向かって広がっているものを使います。吹き口は節のところに合わせると具合が良いらしいですが、あとで調整したりするので節よりちょっと長めに切り出しておきます。
節抜き
長い金属の棒(鉄筋など)を竹の内部に突き刺して、ハンマーで棒の先端を叩き、内部の節を落とします。吹き口から二番目の節は適度に残しておくと、吹いた時に抵抗感がつくので吹きやすいそうです。片側からすべての節に届く棒はあまりないので、両側から攻めます。
油抜き
竹の水分を飛ばすため、カセットコンロなどで竹をくるくる回しながら炙ります。炙っていると水分がにじみ出てくるので、汚れても良い布で時々拭き取ります。ちょっと焦げるくらいまで炙って、全体が茶色っぽくなったら完了です。炙っている最中は竹の先端から熱い汁が出てくるので注意が必要です。
Before
After
カット
吹き口側を節に合わせてカットします。また、吹き口にする節からメジャーで測り、適当な長さ(今回は120cmにしました)にカットします。長さにより音程が変わるので、実際に吹いてみて長さを決めます。
切り口がちょっとバリバリしちゃってますが、本当はマスキングテープなどを巻いておくと良いようです。
また、外側の節はかんなを使って落としておきます。
マウスピース
吹き口の大きさ調節と防水のため、肌にやさしいビーズワックスで吹き口を成形します。ディジュリドゥ用にシート状になっている製品などもありますが、単価が安かったので今回はペレット状のものを使いました。
ボールにちょっと熱めのお湯を入れ、ビーズワックスのペレットを適量放り込んで20秒ほど待ちます。ペレットが柔らかくなってきたら、ペレットを拾い集めてドーナツ状に成形します。
これを冷めない内に吹き口に乗せて、吹きやすい大きさの穴(2.5cm〜3cmくらい)に成形して完成です。
仕上げ
今回はここまでしかやってませんが、ちゃんと良い感じの音が出るようになりました。 あとは、アクリル絵の具で色を塗ったり、内部の防水加工をしたりすると尚良し、という感じでしょうか。まあ、焼き目がなかなか良い感じについたのでこのままでもいいかなぁ。
演奏方法
循環呼吸という呼吸法で鼻から息を吸いつつ、口から息を吐きつづけることで、息継ぎの切れ目なく音を鳴らし続けることができます。 コップとストローで練習するのが定番みたいです。 piperscaffe.org
奏法もいろいろあるようなので練習してみようと思います。 timbernote.cloud-line.com