2016年 08月 04日

4K ディスプレイの不満

dot by dot だと細かすぎると感じることがあるが、だからといって高解像度設定だと狭すぎる。(結局 dot by dot で使ってる)

ということで、5K が本命だなと感じている。

Dell ディスプレイ モニター UP2715K 27インチ/5K/IPS低反射/8ms/MimiDPx1,TwinDPx1/AdobeRGB 99%/USBハブ/スピーカ内蔵/3年間保証 - Dell

Dell

3.0 / 5.0

最近まで 5K は DELL の 27インチが20万ぐらいという感じだったが、いつのまにか HP Z27q 5K というのも出ていて、これがだいぶ安い。

 -

3.0 / 5.0

どちらも AdobeRGB 99% の色域。

今うちのモニタは 27インチ 2560x1440 (AdobeRGB) と 24インチ 4K (sRGB) なので、2560x1440 を 5K に単純に置き換えられそう。なんだけど、現実的には以下の点で難しい。

  • KiCAD みたいな低解像度環境でしか使えないアプリケーションがある
  • そんなに映像出力がない

モニタの進化についていけてない……

2016年 08月 03日

AMP に対するモヤモヤ

結構前にAMP 対応しようと思ったけどやめたときのメモを掘り起こしてポストしておく。



AMP のチュートリアル的なやつ数回眺めて「なんか(標準として)イマイチだなー」と感じつつ、 Google がサポートするなら一回試すぐらいはしようと思いやってみましたが、対応を見送りました。

AMP のスコープ

  • ページリフローの低減
    • 画像サイズ指定の厳密化とか
  • ブロッキングスクリプトを強制的に不許可
  • 遅くなりそうな機能はとにかくナシ

https://www.ampproject.org/docs/get_started/technical_overview.html 見ると、別に AMP だからできるのだ!っていう機能はない。

AMPには2つの要素が同居している

  1. コンテンツ自体の表示の高速化 (レンダリング負荷の軽減など)
  2. コンテンツをダウンロードしはじめるまでの高速化 (CDN配信とか)

後者はつまり AMP を使っている限り悪意のあるスクリプトのあるページにはなりませんよという保証。

AMP のメリット

  • 検索流入からの表示が早くなる
    • Google (など) にキャッシュされてCDN経由で配信される

AMP のデメリット

  • 普通にロードする限りではたいして早くならない
    • ないし真の static コンテンツに対して AMP JSの実行時間分損をする
  • 専用のHTML・CSSを書く必要がある
    • かなり制約が多い。CSS にも !important はダメとか細かい制約がある
  • マークアップ側にレイアウトという概念がある
    • は?
  • AMP JS で提供される以外の機能は使えない

AMPのメリットはメリットなのか?

検索流入に特化するならメリットになる。Google の CDN 経由で配信されるのが大きい。

しかし、似たような構成 (特にいえばJS無効の) のページのロード時間ってそもそも遅くない。コネクションにかかる時間分の速度向上のために、わざわざ特殊なマークアップで書くメリットはあるだろうか。

AMP は標準になりえるか?

結局 AMP がやってることって「JSなしのページのキャッシュ・プリロード」+「オレサマのJSなら特別に実行してやっても良いぞ」みたいな感じなので、そのために変なカスタムエレメントとか入れてんの? レイアウトまわりにCSS以外の概念入れんの?? という疑念が晴れない。

元々 Cache-Control: public という便利なのがあるのだから、その場合はキャッシュ済みのを CDN から配信するのを優先したらいいだけじゃないか? 既存技術の延長でなんとかできる範囲ではなかったのだろうか? 任意スクリプトってのが最大の問題だけど、AMPならオッケーってのはどうなのか?

ベンダープリフィックスつきのボイラープレートをいちいち書かされるのも意味不明。新しいベンダー出てきたらどうすんの?

カスタムエレメントも、amp-twitter とか amp-facebook とか、どういうつもりで追加してるのかわからないエレメントがたくさんある。いろんなサービスが「カスタムエレメントを定義してくれ」といったら対応コードが無限に増えていくんでしょうか。amp-ad も、メジャーな広告ネットワークをサポートしているけど、そもそもサポートする広告ネットワークを指定されてるのが気にくわない。いろんな無限のアドネットワークがが「ウチにも対応してくれ」といったら対応コードが無限に増えていくんでしょうか。

と、だんだんイライラしてきたのでやめて、別の見方をしてみることにします。

JS フレームワーク AMP

  • Google でインデックスされることが保証されてる
  • 画像の遅延ロードとかはSEO的にどうなの?という不安があったがAMPでは保証される
  • なんとなく便利なインターフェイスがついてて、パフォーマンスが良いことが保証されている

あたりを考えると、変なJSライブラリを使うよりはマシそうな雰囲気があります。この捉えかたで多少心が落ち着きました。

「AMP とは準 static ページを作るためのJSフレームワーク」であって、Google が対応済みという大きなメリットがある! 万歳!!! Google が対応済みってのがとにかく最高!!!

2016年 07月 31日

デジタルノギスを買ったのに結局アナログばかり使っている

シンワ測定(Shinwa Sokutei) ポケットノギス 100mm 19518 - シンワ測定(Shinwa Sokutei)

シンワ測定(Shinwa Sokutei)

5.0 / 5.0

シンワ測定(Shinwa Sokutei) デジタルノギス 大文字 ホールド機能付き 15cm 19975 - シンワ測定(Shinwa Sokutei)

シンワ測定(Shinwa Sokutei)

3.0 / 5.0

デジタルとアナログだと1ケタ精度が違うのだけど、デジタルだとその分取り扱いに気をつける必要があってちょっと面倒だったりする。デジタルノギスは箱に入れて保管しているので、雑に計りたいときは結局雑に使えるアナログしか使わない。そして殆どのケースで精度は必要なくて雑に計ればことたりてしまう。

デジタルノギスを使うのは結局、現物しかないものの寸法を図面に起こすときぐらいしかない。全く使ってないわけではないから無駄とまではいえないけど、そんなに必要ではなかったな、という感想。

あとそもそも買ったデジタルノギスはいまいちすべりが悪くて使いにくい……

OS X で KiCAD を使う際の注意点

前提

どのOSでもレンダリングは遅くて、多少乱れるので、OS X だから遅いのかな〜とか考える必要はない。

OS X 固有の話

  • pcbnew / eeschema は一定の大きさまでウィンドウを広げると刺さります
    • GPU のメモリとかに左右されるかもしれません
    • 自分の環境で「ギリギリまで広げられる範囲」を見つける必要があります
    • Retina だとちょっと広げただけで刺さるので、Retina ではない外部ディスプレイを使いましょう。内蔵Retina に限らず、ppi 高いディスプレイだと使いにくいのでダメです……
  • pcbnew を起動したときOpenGL ビューの初期化に失敗します
    • 気にしないで起動してから OpenGL ビューに変えれば普通に動きます
    • または標準ビューにしましょう
  • pcbnew はズームレベルを広げすぎる(俯瞰にしすぎる)と刺さります
    • うっかりマウスホイールを回転しすぎないようにしましょう
    • これが一番困ります

eeschema / pcbnew 共通の罠

  • ホイール使うとポインタが飛ぶ!!
    • 「設定」から「拡大縮小時にカーソルを中心へ移動」のチェックを外します
  • 中クリックしながらドラッグでパンする機能が動かない
    • 「設定」から「画面のパンにマウスの中ボタンを使用」にチェックを入れます
    • 一回ウィンドウの内側を左クリックすると動いたりします
  • フットプリントの関連づけに自分の部品がでない
    • 既存ライブラリにある部品名とかぶっていると出ないことがあります (優先順位による)

pcbnew の罠

  • 描画モードによって機能が変わります
    • 部品を一括で並べかえる機能はデフォルトのビューじゃないと使えません
    • おしのけ配線は OpenGL のビューじゃないと使えません
  • 部品を一括で並べかえる機能は基板外形がないと機能しません
    • チュートリアル的なPDFだと外形なしでやってる風なんですが、できません
  • 配線の undo できない
    • 配線ツールを選択している状態だと undo できないので ESC 連打して通常の選択ツールにします。するとなんと undo できます。
  • 全配線の ripup
    • 標準描画モードにして、全体を選択する。このとき選択対象にワイヤーとviaを入れる。選択されたら削除する
  • 配線を維持してコンポーネントの移動
    • OpenGL ビューだとできません
    • 標準ビューだと回路図エディタと同様に G でできる
  • ここにさらに追記されます

OS X で KiCAD を使う際の注意点

前提

どのOSでもレンダリングは遅くて、多少乱れるので、OS X だから遅いのかな〜とか考える必要はない。

OS X 固有の話

  • pcbnew / eeschema は一定の大きさまでウィンドウを広げると刺さります
    • GPU のメモリとかに左右されるかもしれません
    • 自分の環境で「ギリギリまで広げられる範囲」を見つける必要があります
    • Retina だとちょっと広げただけで刺さるので、Retina ではない外部ディスプレイを使いましょう。内蔵Retina に限らず、ppi 高いディスプレイだと使いにくいのでダメです……
  • pcbnew を起動したときOpenGL ビューの初期化に失敗します
    • 気にしないで起動してから OpenGL ビューに変えれば普通に動きます
    • または標準ビューにしましょう
  • pcbnew はズームレベルを広げすぎる(俯瞰にしすぎる)と刺さります
    • うっかりマウスホイールを回転しすぎないようにしましょう
    • これが一番困ります

eeschema / pcbnew 共通の罠

  • ホイール使うとポインタが飛ぶ!!
    • 「設定」から「拡大縮小時にカーソルを中心へ移動」のチェックを外します
  • 中クリックしながらドラッグでパンする機能が動かない
    • 「設定」から「画面のパンにマウスの中ボタンを使用」にチェックを入れます
    • 一回ウィンドウの内側を左クリックすると動いたりします
  • フットプリントの関連づけに自分の部品がでない
    • 既存ライブラリにある部品名とかぶっていると出ないことがあります (優先順位による)

pcbnew の罠

  • 描画モードによって機能が変わります
    • 部品を一括で並べかえる機能はデフォルトのビューじゃないと使えません
    • おしのけ配線は OpenGL のビューじゃないと使えません
  • 部品を一括で並べかえる機能は基板外形がないと機能しません
    • チュートリアル的なPDFだと外形なしでやってる風なんですが、できません
  • 配線の undo できない
    • 配線ツールを選択している状態だと undo できないので ESC 連打して通常の選択ツールにします。するとなんと undo できます。
  • 全配線の ripup
    • 標準描画モードにして、全体を選択する。このとき選択対象にワイヤーとviaを入れる。選択されたら削除する
  • 配線を維持してコンポーネントの移動
    • OpenGL ビューだとできません
    • 標準ビューだと回路図エディタと同様に G でできる
  • ここにさらに追記されます
2016年 07月 26日

ポケモン Go

僕はポケモンシリーズを一切プレイしたことがなくて、子供のときはコロコロか何かについてきたポケモンのモンスター一覧を眺めて「進化先が複数あるポケモンとかいるんか! すげーな!」とか思っていただけだった。ゲームボーイを持ってなかったし、買ってもらってまで(お小遣いでは買えないし、交渉するのが大変だった)やるほどではなかった。

それはともかく、Ingress は結局無視してたけど (やりはじめるタイミングがなかった)、ポケモンはやってみることにした。なんといっても世界的ブーム!! 長いものにはマカレロ!!! 同じアホなら踊らにゃ損ソン!!!

住んでいるところのポケスポットをいくつか回ってみたりした。明かに「これはポケモンGoやってるな」っていう人が結構いてすごい。Ingress のことを想うと知的財産ってすごいという感じがする。都心ではないがルアーモジュールが刺さってるスポットも結構あった。

それはともかく、今住んでるところは小学生から断続的に住んでいる土地なので、まぁだいたいどんなスポットがあるかは分かっているつもりだったけど、そんなことなかった。「こんなにお地蔵さんあったのか」みたいな発見はある。面白い。

ゲームシステムの感想

ポケモンGo 良いと思ったのは、ゲーム内のコミュニケーション要素がかなり削られているところ。今のところジムで対戦する以外にゲーム内で他プレイヤーとの接点はない。

ゲームの主目的も「ポケモンの収集」がメインであって、自分だけで完結する。

Ingress はもはや古参と暗黙のルールが作られたネトゲなので、初心者が変なことをするとなんか言われるという負のモチベーションがある。成熟したネトゲには全てを理解している人しかプレイしてはいけないみたいな感じがだいたいあって (変なことをすると「なんでxxしないの?」みたいなことを言われたりとか)、そういうのは初心者プレイヤーを大きく不愉快にさせる。Ingress はもうそういう状態で、もはや Ingress を初める気にならない大きな理由はこれになる。

ポケモンGoはまだ新しいというのもあるが、そもそもシステム的にそういうのがない。原理的に、他人に不利益になるようなことは殆どできない。ポップしたポケモンはその場にいる全ての人で共有して沸くが「取り合い」にはならず、全ての人がボールを投げられる。ジムの取り合いはポケモンの収集には必須要素ではないし、全く関わらずに強いポケモンを育てたりもできる。

2016年 07月 25日

KiCAD で複数ボードプロジェクトを運用する

背景

KiCAD は1つのプロジェクトにつき1つのボードしか作れない。小さな基板であれば1つの基板にVカットを入れるでいいが、どうしても複数ボードとして設計したい場合に困る。

複数プロジェクトにして回路図をわけると、今度はこの回路図間でコピペが動かないという問題が発生する。KiCAD はプロジェクト間のブロックコピー・ペーストができない。

階層シート

KiCAD は階層シートという、回路図については複数ページに分けて書く機能をサポートする。これは部分的に別の .sch 回路図ファイルとして分離して、プロジェクトルートの回路図から参照するという形をとる。名前の通り、これはツリー上にすることができる。

考えたやりかた

考えかた

  • 全体を管理するプロジェクトとルート回路図を作る
  • 各基板ごとに階層シートとして回路図ファイルを分離する
  • 各基板ごとに別のプロジェクトとルート回路図を作る
  • 各基板のルート回路図から全体を管理するプロジェクトの階層シートを参照する

これで原理的には全体を管理するプロジェクトのルート回路図を開いて各階層シート(モジュール)に入ったり出たりして図を書け、各基板ごとのプロジェクトのルート回路図を開けば各基板ごとだけのネットリストを吐ける。

実際のオペレーション

ルートに何も置かず、それぞれのボードごとに階層シートとして、まず全て設計する。このとき作る回路図を Root.sch とする。階層シートはそれぞれ _module_a.sch とか、あとあと被らないような命名にしておく。

全体ができたら (できる前でもいいけど)、Root.sch をモジュール数分だけコピーする。これは KiCAD 上ではできないので適当にターミナルとかでやる

$ cp Root.sch ModuleA.sch
$ cp Root-cache.lib ModuleA-cache.lib

cache.lib もコピーしないとダメ。

この状態で KiCAD のプロジェクトビューを更新すると、コピーした回路図が見えるので開く。開いてから保存すると勝手に ModuleA.pro が作られて別プロジェクトとなる。ModuleA.sch ではボードに実装したい階層シート以外を削除する。ModuleA.sch はこれで1つのボードに対応する回路図となる。

他のモジュールも同じようにコピーして必要な階層シートだけを残す。

結果的にできる構造

Root.sch
  _module_a.sch
  _module_b.sch
 
ModuleA.sch
  _module_a.sch

ModuleB.sch
  _module_b.sch

それぞれキャメルケースのファイル名の回路図がルート回路図で、_ から始まるスネークケースのファイル名の回路図が階層化回路図になっていて、上記のような参照関係になる。

こうすると、Root.sch で全体を見ながら各階層化回路図に変更をかけたことが、個々のモジュール用回路図にも反映される。ネットリストはモジュールごとの回路図から生成するので、これでボードごとのネットリスト出力ができる (Root.sch に対応する kicad_pcb ファイルは作らない)。

ワークフロー

基本的に Root.sch 開いた状態で階層化回路図を編集する。

これで保存をして閉じて、ModuleA.sch を開くと、編集が反映された状態になっている。この状態でフットプリントの関連付け、及びネットリスト出力をして pcbnew すると、該当する基板の部品だけを出せる。

ネットリスト・pcbnew した後は以下のようになる

Root.sch はあくまで全体管理用なのでネットリストとかは出さない。

.sch 間のコピペ

コピペ対象の回路図が階層化回路図になっていなければならない。なので、全体を見ながらモジュールの構成をしたいときは Root.sch を開いてそれぞれコピペ(ブロックを保存)することになる。

他に方法はないのか

わかりません。普通に全部を吐きだしたネットリストから、うまいこと各階層シートごとのネットリストだけ分離するようなスクリプトを書けばもっと楽に管理できるかもしれません。

標準のネットリストファイルはS式なんですが、ちょっと見た感じだと簡単にはできない気がしました。

仕事が忙しくなってくると、同時に趣味もやりたいことがいっぱい出てきて(逃避行動)、主観的な忙しさが指数的に上がっていく感じがする。

無線マウスの電池を軽量化

id:h2u エルゴマウスの持ちやすさ。単三*2で重いマウス、単四+スペーサーにして軽量化とかはやってた。

http://b.hatena.ne.jp/entry/s/lowreal.net/2016/07/19/1

というコメントがついていて、単4+スペーサーで軽量化というのになるほど!!! と思ったのでやってみました。

【BLUELOTUS】単4形電池を単3形電池に変換 電池変換アダプター 電池スペーサー BL-224-RK (6本) - bluelotus

bluelotus

5.0 / 5.0

Amazonベーシック 充電池 充電式ニッケル水素電池 単4形8個セット (最小容量800mAh、約1000回使用可能) - Amazonベーシック(Amazon Basics)

Amazonベーシック(Amazon Basics)

5.0 / 5.0

これらを買って元からついてきていたアルカリ電池と入れ替えしました。

感想

確かに軽くはなったんですが、本体そのものが思ったより重くてあんまり実感がわきませんでした。しかしじわじわ効いてくると信じたい。

備考

スペーサーのやつはレビューを読むと違う商品が送られてくるパターンがあるみたいです。今回 umiwo というところから買いましたが、ちゃんとしたのが送られてきました。ただ、この販売者はもうこの商品を出品していないようです。

「ちゃんとした」というのは、プラスにもマイナスにもちゃんと電極がついているやつです。電極はスペーサー内で多少カタカタと動くのですが、これにより機器にセットしたとき機器側のバネで抑えつけられることで導通が確保されるようになっているようです。