プランクを手に入れて自分自身を慣らすために職場でも使っていまして、いろいろ書くことも溜ってはいるのですが、ハード的な問題点とその解決策について書きます。
特に、Surfaceと一緒に使う時にかなり邪魔になります。
直角に挿さるようなケーブルを使えばよいのですが、ケーブルを自作する場合、90度に曲ったコネクタは手に入りません。
せっかく作った自作ケーブルを使うには、、「USB-B オス <-> USB-B メス」で直角に曲っているアダプタが必要です。
そんなものは無いかなぁと探してみると、良いものをみつけました。
READ MORE
ケーブルがつっかえる
Planckのケーブルは、奥に垂直に挿さるようになっています。なので、真っ直ぐなケーブルだと奥行方向に場所を取ります。
特に、Surfaceと一緒に使う時にかなり邪魔になります。
直角に挿さるようなケーブルを使えばよいのですが、ケーブルを自作する場合、90度に曲ったコネクタは手に入りません。
せっかく作った自作ケーブルを使うには、、「USB-B オス <-> USB-B メス」で直角に曲っているアダプタが必要です。
そんなものは無いかなぁと探してみると、良いものをみつけました。
直角に曲ったアダプタ発見
以前から中国の通販サイトのaliexpressが気になっていて、でも、値の張るものは初めてだとちょっと怖くて手を出してませんでしたが、ちょうどよさそうなので、探してみました。
キーワードとしては、USB, angle あたりで入れてみると沢山ヒットします。
今回手に入れたいのは、「USB-B オス <-> USB-B メス」で直角に曲っているアダプタです。
結局ここで売ってやつにしました。 これです。
さて、注文してちょっとドキドキしながら待っていると、発送連絡のあった2日後くらいに問題なく届きました。
結局ここで売ってやつにしました。 これです。
さて、注文してちょっとドキドキしながら待っていると、発送連絡のあった2日後くらいに問題なく届きました。
届いたもの
プチプチの付いた封筒で届いたのがこれです。
ケーブルって書いてありますが、アダプタです。 右向きと左向きの2個セットです。
これで、送料込みでだいたい500円です。たぶん、日本で買うより安い。使ってみた
ケースとの干渉も心配していましたが、そのようなことも無く、問題無く使えました。
これで、つっかえる心配もなく快適になりました。
亡くしそう
さて、使ってみると、 これ使いやすい向きっていうのが、シチュエーションによって違いそうです。ということは、両方持ち運ぶことになるのですが、どうやって亡くさずに持ち運ぶかっていうのが問題です。
穴を開けて、連結して、ケーブルに付けておくことができるようにするかな。
ちなみに、Ergodoxのアクリルケースにもかろうじて付けることができました。
Ergodoxはこれだけでなく、連結用のケーブルもあるので、そちらの対策も考えないとあまり意味はありませんが。
こんな感じです。
やっとplanckが届きました。組み立てはスイッチを付けるだけで難しくはないので30分くらいでることができます。
組み立て方法についてはいろいろなサイトで紹介されているのでやりませんが、カスタムポイントだけ。
- スイッチは基本は茶軸ですが、親指のところの前列真ん中の6個だけ黒軸にしています。
上の写真をよく見ると、前列の真ん中だけ、スイッチ本体が黒いのがわかると思います。 - プレートの切り口はちょっとバリっぽかったので面取りをして、表面もちょっとザラっとしていたのでやすりがけをして軽くコンパウンドで磨きました。
- 大幅な遅れの原因になったFCC/CEの認証シールですが、ダサいし日本では不要なので、はがしてケースの内側に貼りました。
- 組み立てのポイントを1つだけ。スイッチは,まず4隅の4つをプレートにはめて、裏返して基板を載せ、浮かないように半田付けをします。こうすることで、基板とプレートの位置を決めてしまうのです。 後は残りのスイッチを全てパチパチはめてダーっとハンダ付けです。全てのスイッチをプレートにはめてから基板を載せようとすると、スイッチの電極がうまく穴から出なかったりして苦労します。
以下箱開けです。
こんなMassdropの箱で届きます。
中には、一緒に頼んだスリーブとキットが格納された箱。この箱なかなか良い。裏にはデフォルトで入っているファームウェアのキーマップが印刷されています。
箱には、OLKB とMassdropのロゴが。
内容物は、ケース・マウントプレート・キーキャップ・USBケーブル・ゴム足、あと、基板。
キーキャプはフラットなタイプに魅力を感じていないのもあり、安いOEMタイプのものを選択したのですが、白が白過ぎでかなり安っぽさを醸し出してしまっていてちょっと悲しい。
ケースの緑は、想像よりも緑だった。
こんな緑だと思っていましたが、こんなみどりでした。
基板は、ゲースの中にスポンジの緩衝材に挟まれて入っていました。
スイッチ以外のパーツは半田付け済みです。
基板の作りや、パーツの実装はとても綺麗です。
ぱーっと組みたてて、これが裏。
Planck?
Planck っていうのは、OLKB という会社?が作っている小さなキーボードです。発表されたのは数年前で、基板のバージョンは4になってます。
キーが縦に4行・横が12列しかありません。 基本的に、ホームポジションから指を延すだけで届く範囲にしかキーが無いキーボードということです。
会社名のOLKBはたぶん OrthoLinear KeyBoard の略で、Ortholinear っていうのは格子配列のことで、そして、OLKBの作っているキーボードはすべて格子配列になっています。
ちなみに、Planckは量子力学に出てくるプランクのことで、最小の長さと言われているPranck長を意識して付けたものでしょう。 他のキーボードも、Preonic(プレオン的)とかAtomic(原子的)みたいな名前を付けてます。
持ち運び用キーボードが欲しい
普段は仕事場ではKinesisのAdvantage(リンクは新版の2ですが)を使っていて、もうすっかり格子配列に慣れてしまっていて、普通のキーボードはあまり打ちたくないのです。
とは言え、Advantageを持ち歩くのは現実的ではないので、持ち運び用にはTypeMatrixの2030を使っていました。
格子配列であること、左右のキーの間にEnterなどの機能キーがあっていくらか分離していること、Dvorak配列に対応していることなどかなりいい線行っているのですが、いくつか不満があって、第一はキーのリマップができないこと。やっぱりこういう変態配列のキーボードはリマップできてなんぼだと思うのですよ。僕はコントロールを親指で押したいのです。 もう一つは、キーの押下圧がちょっと高めなこと。長時間使っていると確実に疲れます。 もしかすると、パンタグラフでストロークが短かいのが原因かもしれませんが。
で、長らく代替案を探していたわけですが、画期的なやつを発見です。
Textbladeは画期的
画期的なやつっていうのは、WayToolsのTextbladeです。ホント凄いんです。
でも、2年半も経ってるのにまだ発送される気配はなく、開発状況も未だに不明瞭なままというひどい状況になってます。
本当にひどい話なんですが、まあ、でも、なんとなく先には進んでいるみたいだし、製品としてはとても先進的で魅力的な新しいデバイスなので、気長に待つことにしてます。
んなことしているうちに、去年、Ergodoxを手に入れました。
Ergodoxはどうなのよ
Ergodoxはなかなか使い心地がよいのですが、持ち運んで使ってみるとやっぱりちょっとかさばる。Footprintも大きいし、場所によっては分離型のキーボードは置きにくかったりする。
ということでやっぱりもうちょっと小さいキーボードが欲しいなぁ。 ということで、Planckです。
Massdrop で Planck 注文
Massdropで実施されたPlanck keyboardのdropが実施されたので、登録したのが3/27でした。
発送予定は6月末。
なかなか届かない
そのキーボードが発送されたよっていうメールがさっき来ました。
2ヶ月遅れですね。
Massdropで前回買ったスイッチは発送からだいたい1週間で届いたので、今回もそれくらいを期待しつつ2週間くらいかかるつもりで待ちましょう。
ひどいMassdropの対応
MassdropはGroupBuyなので遅れることはよくあることらしく、それについて特に文句を言うつもりは無いのですが、今回の対応はちょっと酷いと思う。
・メールでの情報提供がほとんど無かった。
発送が遅れることを始め、遅れた理由、新たな予定日など本来参加者には通知されてしかるべき情報が何もメールで連絡されませんでした。掲示板ではそのような話題になっていて遅れることが判っていましたが、メールが出ないとは思いませんでした。掲示板みてなかったらわからないとかありえません。
・掲示板などで指摘されても改善しない
連絡が無いことについて掲示板で散々指摘されているにもかかわらず、メールが出るどころか、掲示板での応答すら無い有様。どうしょうもない。
・担当者が交代してもあまり状況がかわならい
実際に発送がはじまった9月の後半になって担当者が変ったらしく、掲示板で情報が出てくるようになったけれども、それでもまだ十分でなく、また、なんだかまだ発送もされていない人達がいるらしい。
6月の末には、キットはすべてそろったとか言っていたはずなので、それは嘘だったということになる。
発送が遅れることを始め、遅れた理由、新たな予定日など本来参加者には通知されてしかるべき情報が何もメールで連絡されませんでした。掲示板ではそのような話題になっていて遅れることが判っていましたが、メールが出ないとは思いませんでした。掲示板みてなかったらわからないとかありえません。
・掲示板などで指摘されても改善しない
連絡が無いことについて掲示板で散々指摘されているにもかかわらず、メールが出るどころか、掲示板での応答すら無い有様。どうしょうもない。
・担当者が交代してもあまり状況がかわならい
実際に発送がはじまった9月の後半になって担当者が変ったらしく、掲示板で情報が出てくるようになったけれども、それでもまだ十分でなく、また、なんだかまだ発送もされていない人達がいるらしい。
6月の末には、キットはすべてそろったとか言っていたはずなので、それは嘘だったということになる。
もうMassdropで物は買わないかも
こんな状況ではもう買わないかもしれない。
突然ですが、Planckの話です。
そろそろ届くんで、キーマップ考えてます。
作っているのは、キーボードのマッピングの画像をいろいろ作れるサイト。
http://www.keyboard-layout-editor.com/
物理的な配列も作れるし、ほとんどすべてのキーボードのデータが作れそうなすごいサイト
配列の中身の方はちょっと迷走ぎみ。 足りないキーとかある。
どうしよう。
どんなキーが足りないんだかすらよくわからん。
(7/5 : ちょっと変更)
だいたい入ったかな?
Planckの話は届いてからね。
(9/9 追記)
届きました。詳細はそのうち。
で、使ってみながらちょっとずつキーマップを修正しています。
この文章もこのキーマッピングで打ってます。
READ MORE
そろそろ届くんで、キーマップ考えてます。
作っているのは、キーボードのマッピングの画像をいろいろ作れるサイト。
http://www.keyboard-layout-editor.com/
物理的な配列も作れるし、ほとんどすべてのキーボードのデータが作れそうなすごいサイト
配列の中身の方はちょっと迷走ぎみ。 足りないキーとかある。
どうしよう。
どんなキーが足りないんだかすらよくわからん。
(7/5 : ちょっと変更)
だいたい入ったかな?
Planckの話は届いてからね。
(9/9 追記)
届きました。詳細はそのうち。
で、使ってみながらちょっとずつキーマップを修正しています。
この文章もこのキーマッピングで打ってます。
久し振りの投稿です。
ちょっと、余裕ができたってのと、Massdropで注文したPlanckがそろそろ届くってことで、ひさしぶりに投稿してみることにしました。
さて、本題です。
Ergodoxには、ケーブルが2本必要です。 1本は、脱着式になっているUSBケーブルと、右と左をつなぐ3.5mmの4極ジャックです。
先日この2本を自作したって話です。
https://www.massdrop.com/buy/keycap-themed-braided-nylon-usb-cable
Webで「custom usb cable」で検索すると、これまたいろいろなカスタムなケーブルの画像がヒットします。
なかなかいい。欲しい。
https://geekhack.org/index.php?topic=44924.0
探せばいろいろなところで売ってますので、そんなのを買ってもいいんですが、日本で売っているところは見あたらないので、海外通販あるあるな、送料の方が高いじゃないか問題に直面してしまうのでなかなか手が出ない。さらに、売っているのを見ても、仕上げが熱収縮チューブになっていたり、手作り感満載のものがほとんどなので、そろまでしてってなってしまう。
ということで、自作へ進むわけです。 調べると自作する方法もちらほら出ていたりするし。
そもそもこんなカラフルな電線ケーブルなど売ってたりはしません。
そこで登場するのがパラコード。 いや、偉そうに言ってますが、僕も今回調べていて初めて知ったんですけどね。 もともとはパラシュート用の紐(コード)だから、パラシュートコードでパラコード。命をぶらさげるものなので、丈夫にできているんですが、パイプの中にナイロンのコードが沢山通っているという構造をしています。強度の部分はこの中身が持っているので本来の機能はそっちにあるのでしょうが、パイプになっているところがポイント。 そして、いろいろなアクセサリの材料になったりすることで、いろいろな柄のものが作られるようになっているようです。
そして、USBのケーブルを作っている人がこの、パイプの部分に目を付けたってことです。
READ MORE
ちょっと、余裕ができたってのと、Massdropで注文したPlanckがそろそろ届くってことで、ひさしぶりに投稿してみることにしました。
さて、本題です。
Ergodoxには、ケーブルが2本必要です。 1本は、脱着式になっているUSBケーブルと、右と左をつなぐ3.5mmの4極ジャックです。
先日この2本を自作したって話です。
キーボードケーブル?
キーボードの自作ってやっぱり海外の方が進んでいるわけですけど、Massdropによくキーボード接続用のオシャレなUSBケーブルが出ています。https://www.massdrop.com/buy/keycap-themed-braided-nylon-usb-cable
Webで「custom usb cable」で検索すると、これまたいろいろなカスタムなケーブルの画像がヒットします。
なかなかいい。欲しい。
https://geekhack.org/index.php?topic=44924.0
探せばいろいろなところで売ってますので、そんなのを買ってもいいんですが、日本で売っているところは見あたらないので、海外通販あるあるな、送料の方が高いじゃないか問題に直面してしまうのでなかなか手が出ない。さらに、売っているのを見ても、仕上げが熱収縮チューブになっていたり、手作り感満載のものがほとんどなので、そろまでしてってなってしまう。
ということで、自作へ進むわけです。 調べると自作する方法もちらほら出ていたりするし。
パラコード?
ポイントは、先の写真に写っている、カラフルなコードです。そもそもこんなカラフルな電線ケーブルなど売ってたりはしません。
そこで登場するのがパラコード。 いや、偉そうに言ってますが、僕も今回調べていて初めて知ったんですけどね。 もともとはパラシュート用の紐(コード)だから、パラシュートコードでパラコード。命をぶらさげるものなので、丈夫にできているんですが、パイプの中にナイロンのコードが沢山通っているという構造をしています。強度の部分はこの中身が持っているので本来の機能はそっちにあるのでしょうが、パイプになっているところがポイント。 そして、いろいろなアクセサリの材料になったりすることで、いろいろな柄のものが作られるようになっているようです。
そして、USBのケーブルを作っている人がこの、パイプの部分に目を付けたってことです。
自作するには材料集め
材料集めです。コネクター部分(USB)
これが一番見つからなかった。秋月とかに売ってない。
いろいろ探し回って、やっとみつけたのがここ。
試験販売・少量入荷とあるので、いつまで入手可能かわかりませんが。
コネクター部分(3.5mmジャック)
Ergodoxの左右をつなぐケーブルは、TRRSという4極の3.5mmケー ルです。 普通のパーツ屋にあるんですが、黒いプラスチックのださい感じのやつ。
せっかく自作するんだからもうちょっと見た目のよいものをってことで探していると、オヤイデさんにあるではないですか。
使ったのは上の方です。下のがかっこいいんですが、高すぎ。
ケーブル
USBケーブル用には、3.5mmのジャックを買ったときに一緒に4芯のシールド線を購入。 作っていて思ったのですが、シールド部分をアースにすればいいので、3芯シールドでもよかった。
3.5mm用のケーブルは、4芯シールドだと太すぎるのですが、手元にあった4芯のリッツ線がちょうどよかった。 昔ヘンドフォンを修理するために買ったのだと思うのですが、入手先は忘れてしまった。
熱収縮チューブ
コネクターを手に入れてからそれを持って、入るものということで、10mm径のスミチューブを入手。
パラコード
ネットでいろいろな柄のものが手に入るし、1mから選べたりするするので好きな色柄のやつを入手しましょう。
僕は、ヤフオクで端切れの詰め合わせを売っていたのでそれを入手。 なかなかよい柄が入っていたのでラッキーでした。
僕は、ヤフオクで端切れの詰め合わせを売っていたのでそれを入手。 なかなかよい柄が入っていたのでラッキーでした。
作りかた
こんなのを見ていただければいいのです。
ポイントは、パラコードをケーブルと同じ長さに切断して、中身のナイロンコードを全部出してしまい、そのチューブにケーブルを差し込んで使うってことです。
コネクターとケーブルを接続するための情報はこれがわかりやすいかも。
あたりまえですが、ちゃんと半田付けできていなければ使いものになりませんし、ショートしたり結線を間違えれば、最悪接続した機器=PCを壊すことになります。
テスターなどを使って入念にしあがりを確認してから使ってください。
できあがり
肝心の作りかたのところが無いじゃないかという感じですが、できあがりです。
なかなかいいでしょ?
これって、 2016 clojure advent calender の記事です。
もともと紙とペン・定規・コンパスなどの道具で点や線を書くので、手書きのころは立体物でも2次元の図面だけ作っていました。僕も実は機械工学科だったので、「図学」とか言ってちゃんとした製図の方法を習ったりしたものです。
コンピュータを使うようになると、自由度が広がってこれまでできなかったようなことができるようになりました。
- 3DCGで立体を描画できるので物をイメージしやすくなった
- 曲線を直接扱えるようになって、自由な形が作れるようになった。
などです。 最近の3Dモデラーなども目的は同じではありますが、数値から離れて直感的に物を扱えるようになっています。
自由度を広げるという方向にはまた別のアプローチとして、例えば二次関数や表されるグラフのように数式で表される線や、特定のアルゴリズムによって定義される点や線の集まりで図を作るという方向性に行ったものもあります。
パラメータを含んだ式を使って図面を表すことで、複雑な形でも簡潔に表すことができる可能性があったり、また、そのパラメータを変更するだけで、大きさや比率の違うものが簡単に作れたりするわけです。
ようするに、部品があって、それに対する操作があって、列挙したり、繰り返しや条件分岐などで制御したりなどして、目的のものを作っていくわけです。 そして、変数が使えることによって、各属性をパラメータにする(パラメタライズ)ことができるので、カスタマイズが楽にできるということになります。
SCADの言語というか表現方法は、ちょっと独特で、そこそこ長いプログラミング経験がある僕としても始めて見る感じの書き方で、かといって使いやすかったり、読みやすかったりするわけでもなさそうです。
そんなわけで、しばらく前に目にしてはいたものの、手は出していませんでした。
最近、久し振りに図面を引くことになり、フリーのCADの状況を調べていたときに再発見しました。 記述方法そのものも以前のより進化しているようですが、なんと、ClojureでDSLを作った人がいるようなのです。
ということで、ちょっと調べてみることにしました。
http://adereth.github.io/blog/2014/04/09/3d-printing-with-clojure/
筆者がこんなこと書いてます。うん、そのとおりですね。
そして、そんな場合にこそDSLを作ることに意義があるのでしょう。
奇妙な関数の書式
関数名の後のカッコ内のパラメータに付いている記述やブロックの書式
ソースコード上に変数の経路を複数作ることができ、また、変数の値の変更が予期せず変更以前の場所にも波及したりする。
うんうん。 よさそうですよ。
scad-cljを使ってとりあえず何か作ってみましょう。
https://github.com/farrellm/scad-clj
なんともシンプルですね。docディレクトリがあって、中に「intro.md」なるファイルがあるので期待して空けてみると。
ともあれ、leiningenでプロジェクトを作成してscad-cljを関連づけます。
:dependencies の ベクターに [scad-clj "0.5.2"] を追加して、lein deps を実施します。
関連パッケージを含めていくつかのパッケージがローカルに転送され、準備OKです。
さて、どこかにあるはずのサンプルを探します。ネットを探しまわるのもありですが、まずは、ソースからです。
testディレクトリがあるのでまずはそこ。テストが書いてあれば、それぞれの関数がどのような入力に対してどのような出力をするのかよくわかるはずです。
が、これも空でした。残念。
となればソースを見るしかなさそうです。
geometry.clj には、 line と lines という関数があります。その通り、線を引く関数のようです。
text.clj には、文字列を生成する text-partsという関数が定義されています。
model.clj には、$f や $fa など、scadで特殊な意味のある変数や、import や use などの指示子、あとは、square や sphere などの基本的な2Dと3Dのパーツが定義されています。
そして、scad.cljには、write-expr というメソッドが定義されていて、たぶん、これが、レンダラーですね。
と、ここまで見てきても、全くイメージが掴めません。
まあ、結局最初のサイトですね。scad-clj を知るきっかけになったサイト
とりあえず、書いてあることをやってみましょう。
立方体(cube)と球(sphere)と円柱(cylinder)を合成(union)したものがprimitiveとしてできあがるはずなんですが、これ、どうしたらいいんでしょう?
write-scad という関数でこのprimitiveを出力できる形にできるようなので、REPLを起動して実行してみます。 ファイル名はとりあえず、 test01.scad とでもしておきます。 できたファイルをscadで開いてみます。
表示されましたねー。
さらにこのscad、開いているファイルが変更されると自動的に読み込むようになっているので、primitiveを変えて関数を呼ぶだけで、scadの中の図形が自動で変更されます。
ということで、scadの画面を開きながら、REPLでいろいろ試行錯誤しながらあれこれ形を作ることができるということのようです。
なかなか面白そうですよ。
こんな風に、Clojureの制御構文も使うことができます。
ということで、これでちょっと変った物をと思ったのですが、面白そうなものを思いつかず、時間も無くなってしまったので、将来の自分への宿題ということで・・・
READ MORE
CAD
Computer Aided Design ということは、コンピューターを使ってデザインをするためのツールですが、基本的には「製図」をするためのツールです。学生時代に製図をしたことが無いとなんのことかわからないかもしれませんが、機械や建造物などの設計図を書くことを製図といいます。もともと紙とペン・定規・コンパスなどの道具で点や線を書くので、手書きのころは立体物でも2次元の図面だけ作っていました。僕も実は機械工学科だったので、「図学」とか言ってちゃんとした製図の方法を習ったりしたものです。
コンピュータを使うようになると、自由度が広がってこれまでできなかったようなことができるようになりました。
- 3DCGで立体を描画できるので物をイメージしやすくなった
- 曲線を直接扱えるようになって、自由な形が作れるようになった。
などです。 最近の3Dモデラーなども目的は同じではありますが、数値から離れて直感的に物を扱えるようになっています。
自由度を広げるという方向にはまた別のアプローチとして、例えば二次関数や表されるグラフのように数式で表される線や、特定のアルゴリズムによって定義される点や線の集まりで図を作るという方向性に行ったものもあります。
パラメータを含んだ式を使って図面を表すことで、複雑な形でも簡潔に表すことができる可能性があったり、また、そのパラメータを変更するだけで、大きさや比率の違うものが簡単に作れたりするわけです。
OpenSCAD
OpenSCADは、ものの形状を式で表しやすい形状の集まりとして扱うことに特化したCADの一つです。ようするに、部品があって、それに対する操作があって、列挙したり、繰り返しや条件分岐などで制御したりなどして、目的のものを作っていくわけです。 そして、変数が使えることによって、各属性をパラメータにする(パラメタライズ)ことができるので、カスタマイズが楽にできるということになります。
ClojureでSCAD
LispでCADといえばAutoCADですね。使ったこと無いのですが、製図の図面に現れるオブジェクトとそれに対する操作を簡潔に表現する方法として、Lispが優れているということの証なのだろうと思ってるのですが、SCADの記述は残念ながらLispではありません。SCADの言語というか表現方法は、ちょっと独特で、そこそこ長いプログラミング経験がある僕としても始めて見る感じの書き方で、かといって使いやすかったり、読みやすかったりするわけでもなさそうです。
そんなわけで、しばらく前に目にしてはいたものの、手は出していませんでした。
最近、久し振りに図面を引くことになり、フリーのCADの状況を調べていたときに再発見しました。 記述方法そのものも以前のより進化しているようですが、なんと、ClojureでDSLを作った人がいるようなのです。
ということで、ちょっと調べてみることにしました。
scad-clj
scad-cljに出会ったのがこのサイトです。http://adereth.github.io/blog/2014/04/09/3d-printing-with-clojure/
筆者がこんなこと書いてます。うん、そのとおりですね。
そして、そんな場合にこそDSLを作ることに意義があるのでしょう。
- Strange function application syntax (parameters in parens after the function name with an expression or block following the closing paren)
奇妙な関数の書式
関数名の後のカッコ内のパラメータに付いている記述やブロックの書式
- Unclear variable binding rules (multiple passes are made over the code and the results of changing a variable may affect things earlier in the code unexpectedly)不明確な変数の束縛ルール
ソースコード上に変数の経路を複数作ることができ、また、変数の値の変更が予期せず変更以前の場所にも波及したりする。
- No package/namespace managementネームスペースが無い
- Multiple looping constructs that depend on what you are going to do with the results, not on how you want to loopいくつかあるループ構文は、どのようにループさせたいかではなく、結果をどのように使うかによって選ばなくてはならない
うんうん。 よさそうですよ。
scad-cljを使ってとりあえず何か作ってみましょう。
scadのセットアップ
本家のGithubはここです。https://github.com/farrellm/scad-clj
なんともシンプルですね。docディレクトリがあって、中に「intro.md」なるファイルがあるので期待して空けてみると。
TODO: write great documentationうーん残念。ドキュメントが無いようですから、使うには自力でソースなどを見てみるしかなさそうです。
ともあれ、leiningenでプロジェクトを作成してscad-cljを関連づけます。
:dependencies の ベクターに [scad-clj "0.5.2"] を追加して、lein deps を実施します。
関連パッケージを含めていくつかのパッケージがローカルに転送され、準備OKです。
さて、どこかにあるはずのサンプルを探します。ネットを探しまわるのもありですが、まずは、ソースからです。
testディレクトリがあるのでまずはそこ。テストが書いてあれば、それぞれの関数がどのような入力に対してどのような出力をするのかよくわかるはずです。
が、これも空でした。残念。
となればソースを見るしかなさそうです。
geometry.clj には、 line と lines という関数があります。その通り、線を引く関数のようです。
text.clj には、文字列を生成する text-partsという関数が定義されています。
model.clj には、$f や $fa など、scadで特殊な意味のある変数や、import や use などの指示子、あとは、square や sphere などの基本的な2Dと3Dのパーツが定義されています。
そして、scad.cljには、write-expr というメソッドが定義されていて、たぶん、これが、レンダラーですね。
と、ここまで見てきても、全くイメージが掴めません。
まあ、結局最初のサイトですね。scad-clj を知るきっかけになったサイト
やってみよう
とりあえず、書いてあることをやってみましょう。
立方体(cube)と球(sphere)と円柱(cylinder)を合成(union)したものがprimitiveとしてできあがるはずなんですが、これ、どうしたらいいんでしょう?
write-scad という関数でこのprimitiveを出力できる形にできるようなので、REPLを起動して実行してみます。 ファイル名はとりあえず、 test01.scad とでもしておきます。 できたファイルをscadで開いてみます。
表示されましたねー。
さらにこのscad、開いているファイルが変更されると自動的に読み込むようになっているので、primitiveを変えて関数を呼ぶだけで、scadの中の図形が自動で変更されます。
ということで、scadの画面を開きながら、REPLでいろいろ試行錯誤しながらあれこれ形を作ることができるということのようです。
なかなか面白そうですよ。
こんな風に、Clojureの制御構文も使うことができます。
ということで、これでちょっと変った物をと思ったのですが、面白そうなものを思いつかず、時間も無くなってしまったので、将来の自分への宿題ということで・・・
この投稿は ErgoDox Advent Calendar 2016 の 7日目の記事です。
Ergodox作りました
最近のErgodoxの話題というと、Ergodox EZを入手したよとか、Falbatecでそろえたというような記事が多いのですが、もともとErgodoxはオープンハードなプロダクトなので、基板やケースを作って、部品を集めて、自分で組み立ててというのが本来の取り組み方なのではないかと思うのです。
なんてことを言ってハードルを上げていた僕は、Ergodoxを手に入れることなど無いだろうと思っていたのですが、ひょんなことから基板や部品を分けていただくことができたので手に入れることができたのですが、何しろ全部自分で揃えようとしたらどんなことが必要なの? 日本で揃うの? ってあたりを記事にしてみます。
Ergodoxの情報
先ずは本家の情報を入手しないとですよね。しばらく前は、ergodox.org にサイトがあったのですが、潰れてしまっておりました。
最近以下の場所で復活しています。
https://www.ergodox.io/
ここから入手できるのは。
- 部品一覧
- ファームウェアの情報
- ケースの情報
部品一覧を見ながら入手方法を考えてみましょう。
基板1組(1x Pair of pcbs (one for each hand))
左右対象のセパレート型のキーボードであるErgodoxですが、その基板は、表裏を使って左右を作り分けるようになっています。 要するに、同じのを2枚用意すればよいのです。
手に入れる方法はいくつかあって、
- 自作はハードルが高いので買う
日本のサイトで見たことはありませんが、海外のサイトにはErgodoxの基板を打っているところがあります。
・ Falbatech ここはフルセット揃うのであたりまえですが、基板だけでも入手可能ですね。
・ MechanicalKeyboards.com メカニカルキーボード関連の情報/物を扱っているサイトです。
・ その他 プリント基板は英語で PCB(printed circuit board) と言うので、「ergodox pcb」などのキーワードで検索すると他にもいくつか出てきます。 安いところだとセットで1000円くらい?リスクと計りに掛けて選択ください。 - だれかが作ったものを入手
僕のはこれでしたけど、まあ、そんな目に遭うことはなかなか無いかもですね。
そもそも日本でメカニカルキーボードの話ができるのって、2chぐらいしか知らない。 あとは、ツイッター? - 自分で作る
最近は、データを用意すれば比較的少ない枚数でも基板を作ってくれるサービスを利用することができるので、そういうサービスを利用して自分で作ることもできます。
そして、自分で作るのであれば改造することもできますね。実際、僕が入手した基板は改造されていて、小指側の1.5xキーが 1xキー2つになっています。
Ergodoxのオリジナルの基板のデータはergodox.orgから行けますが、githubにあります。
https://github.com/bishboria/ErgoDox
このデータは、フリーソフトのKiCadという基板のデータを作るためのCADで作られています。
http://kicad.jp/?page_id=2
データとそれを操作するソフトが手に入るのですから、さあ、どんどん改造しましょう。
改造したら、あとは発注です。たとえばこんなところ
https://www.seeedstudio.com/fusion_pcb.htmlhttp://www.pcbgogo.jp/
さて、これで好きなようにキーの物理配置をいじることができますね!
Teensy 2.0 マイコンボード 1つ(1x Teensy USB Board, Version 2.0)
キーボードのコントローラには、Atmega32U4が載ったTeensy 2.0というマイコンボードが使われています。写真の白いUSBケーブルがささっているやつです。
https://www.pjrc.com/teensy/
Atmega32U4というチップはUSBのインターフェースを供えていて、また、Teensy 2.0は専用のブートローダが書き込まれていて、専用の書き込みソフトを使ってUSB経由で中身を書き換えられるようになっています。特別な装置が無くても書き換えができるので、手軽に開発ができます。
ただ、このTeensy 2.0というボードは日本で取り扱っているところが無くちょっと入手が難しいところが難点です。
基板を改造して、他のAtmega32U4ボードを使うようにしてしまうってのはありだと思いますね。ちょっと調べただけでいくつかみつかります。
Da Vinci
Arduinoファームが載ったものと、Atmeg32U4オリジナルのブートローダが載ったものがあります。
全ピン出ていて値段も安く、入手性もいいのですが、オリジナルよりかなり大きいです。
ATmega32U4搭載マイコンボード
サイズは小さめですが、全ピンは出ていないかも。
Pro Micro
海外のものですが、前のボードのスイッチサイエンスなど日本の業者が扱っていてそこから入手できます。
Arduino Micro
お高いですが、安心感はありますよね。
サイズは大きいです。
DaVinciを使うように基板を改変してみるのもいいかもと、今思った。
IOエキスパンダー MCP23018-E/SP 1つ(1x MCP23018-E/SP I/O expander)
左右分離という形状はErgodoxの大きな特徴の一つです。この実現方法として、左右それぞれを独立したキーボードとしてしまうという手があって、たとえばInfinity Ergodoxなどはその方式を取っています(いるはず)。
オリジナルのErgodoxは、右手側にTeensyを載せてマスターとして左手側には簡単なICの載ったスレーブとするという構成になっています。
左手側に載っているのは、IOエキスパンダーというICで、TeensyとはI2C接続なので、たった2本の信号線で16本入出力をコントロールできます。
このあたりの電子部品は、日本でも老舗のお店があったりして、最近なら通販もやっていてそこにあれば入手は比較的容易です。
昔から電気・電子工作とか好きだったので、秋葉原のパーツやさんは知っていて、実店舗でお世話になっているのは、秋月電子さんとかマルツさんとか千石さんとかですね。 通販もやってます。
海外の図面を使う場合、同等パーツだとフットプリントが違ってだめなので同じパーツが必要になりますが、下のところも探すとあったりします。
https://www.digikey.jp/
http://jp.rs-online.com/web/
最悪海外で発注ですけど、100円のパーツの送料が2000円とか笑えないとこになったりします。
チェリー MXスイッチ 76〜80個(76-80x Cherry MX switches, (depending on your layout))
しばらくく前まで、ほぼ唯一のキーボード用メカニカルスイッチのメーカだったのがチェリー(現ZFエレクトロニクス)ですが、特許が切れていくつかの中国のメーカーが互換のスイッチを製造しています。Gateron, Kailh, Outemu, Greentech あたりが有名です。
チェリーのものがそうだったように、押下に必要な力が違っていたりクリック感があったりなど、いろいろな仕様のものがあり、また、最近はメーカによる違いなどもあり、選択肢はかなり広くなっています。
僕は、Gateronという中国のメーカーの茶軸と呼ばれるスイッチを入手しました。
https://www.jw-shop.com/
海外だと、ちょっと検索するだけでいくつかみつかりますね
https://mechanicalkeyboards.com/
https://1upkeyboards.com/
僕が入手したのはMassdrop
http://www.massdrop.com
マスドロップって何?って人は検索してみてください。 共同購入サイトみたいなものです。
WM17115 USB ミニB コネクタ (1x USB mini B connector WM17115)
基盤用のUSB ミニB用のコネクタ。 WM17115というのは、Digikeyの型番で、たぶん、モレックスの54819-0519と同じもの。 これなら日本でもみつかる。3.5mm 4極(TRRS)プラグソケット (2x 3.5 mm TRRS sockets, CP-43514. FC68129 will also work if its extra pins are snipped off)
あまりみかけない、4極の3.5mmソケットです。 右と左は4線で接続するI2C通信でつなぐのですが、これを接続するためのものです。
以下のパーツは秋月とかマルツとかで入手可能
Teensy用 ヘッダーピン (24x Teensy header pins, male (unless pre-installed))1N4148 もしくは DO-35ダイオード 76〜80個 (76-80x 1N4148 diodes, SOD-123 package (Surface mount) or DO-35,(0.3” pitch) (through hole))
2.2KΩ 抵抗 2つ (2x 2.2k Ω resistors (red, red, red))
3mm T1 LED 3つ (3x 3mm T1 LEDs)
220Ω 抵抗 3つ (3x 220 Ω resistors, or match to LED. (red, red, brown))
0.1µF セラミックコンデンサ (1x 0.1 µF ceramic capacitor (marked “104” for 10*104 picofarad). Not strictly necessary but suggested)
USBミニBプラグ (1x USB mini B plug with short cable (such as H2955))
分解して中身だけ使うのでなんでもOKですかね。
USBケーブル オスA-オスミニB (1x USB cable male A to male mini B)
キーボードとPCの接続用
3.5mm 4極(TRRS)プラグ (1x Cable with two 3.5 mm TRRS plugs)
でも、4極のソケットがDigikeyにしか無いので、全部Digikeyで揃えるってことになるかも。
ケース (1x Ergodox Keyboard case)
ケースの図面も2種類入手可能で、1つは、3Dプリンタで出力するもの。かなりすっきりした外観のケースが作れます。 もう1つは、アクリルなどの板をカットして積み上げて作るものです。
僕のは基板が改造されていることもあり、自分で図面を加工してアクリル板で作りました。
加工については、図面さえ用意できれば、加工を頼むことができる所をみつけるのはそれほど難しくありません。また、最近は、DMM.MAKEなどの加工機械や場所を提供してくれるサービースが利用できたりして、レーザーカットや3Dプリンタの出力を自分でやることもできるようになっています。
いずれにしても、かなりコストかかりますけどね。
僕は知り合いにレーザー加工している人がいるので頼んで作ってもらいました。
板をカットしてつくる方法で、MDF材などを使えば手で加工することもできなくはないし、とても安くできますね。
キーキャップ (76-80x MX Keycaps)
意外なことに、多分、この、キーキャップを入手するのが一番大変で、場合によってはコストの半分以上がこのキーキャップのため、というようなことにもなります。まあ、直接指が触る部分でもあり、一番目に付くわけですから、こだわるのも悪くないでしょう。
日本で入手できるキーキャップとしては、ダイヤテックのやつがあります。
ところが、これを入手しても、Ergodoxの一部のキーは合うものが含まれていません。
特に、
- 両小指のところのちょっと大きいやつ
- 人差し指のところのちょっと大きいやつ
- 親指のところの 大きいやつ
がそうなります。
これを単体で入手するとなると、もう、日本ではだめで、
Pimp My Keyboard の DSA PBT/ABS のErgodoxモディファイアーセット
か、
WASDキーボードでバラのキーを必要数だけ入手する
のいずれかになるでしょう。
となれば、もう、全部そこで揃えたほうがいいですね。
自分はというと、ジャンクなメカニカルキーボードを倉庫からみつけてきて、そこから外したキーキャップを使っています。基板が改造されているおかげで、小指のところのキーが標準サイズなので、致命的に足りないキーというのは人差し指のところの2つだけです。
あ、僕はDvorak配列使いなので、配列はもうめちゃくちゃです。
とまあ、こんな感じで、部品を集めたり作ったりするのもなかなか大変なわけですが、そういう苦労もまあ、楽しみの一つなわけです。
おまけ Massdrop
Massdropというのは、海外の共同購入サイトです。とあるものについて、xx人集ればxx円で入手できますよー、みたいなことをやっていて、参加者を募るわけです。Ergodox EZやInfinity Ergodoxもここに何度もDropされています。
また、キースイッチや、キーキャップもしばしばDropされています。
12/7現在でもこんなキーキャップがDropされています。
https://www.massdrop.com/buy/max-keyboard-keycap-set
過去にあったやつについては、投票が行なわれていて、どんなのがあったのか見てみることができます。
https://www.massdrop.com/vote/Ergodox-Keycaps
再登場するかどうかはわかりませんが、興味があればWatchしておくといいですね。
Cherryのスイッチもあります。
https://www.massdrop.com/vote/Cherry-MX-Keyswitches-110-Pack-Plate-Mount
僕のキースイッチはここで入手しました。
https://www.massdrop.com/buy/gateron-switches

































