Amazonのランキングで1位のPCスピーカーロジクール(logicool)Z120BWを買った

これ

www.amazon.co.jp

外箱

f:id:hkou:20201108173818j:plain

f:id:hkou:20201108173904j:plain

開封

f:id:hkou:20201108174108j:plain

f:id:hkou:20201108174126j:plain

f:id:hkou:20201108174158j:plain

スピーカー表

価格が1200円ちょっとと考えると結構しっかりしたつくりになっている。 ボリュームレバーを反時計回りにするとボリューム下げる、端までいくと電源OFF、時計回りに回すと電源ON(LEDランプが点灯する)ボリューム上げる。

f:id:hkou:20201108174526j:plain

スピーカー裏

裏側にはあまったコードを収納するパーツが備え付けられている。

f:id:hkou:20201108174638j:plain

感想

  • 高音、中音域はよく聞こえる、低音はあまり出ている感じがしない
  • 1290円のスピーカーとして考えるとかなり良いと思う

Windows10でHaskell開発環境を構築する(Stack, HIE, VsCode)

概要

Windows10でHaskell開発環境を構築する手順を示す。

環境

以下手順を実施した際の環境

  • Windows 10 Pro (バージョン 2004)
  • Stack
    • Version 2.3.1, Git revision de2a7b694f07de7e6cf17f8c92338c16286b2878 (8103 commits) x86_64 hpack-0.33.0
    • stack --version
  • GHC
    • 8.6.5
  • HIE
    • commit hash : a9005b2ba2050bdfdd4438f1d471a3f7985492cd

注意点

  • 以下の手順はとくに問題が発生しなくても1~2時間程度かかる
  • 夜間などのネットワークが混み合う時間帯だとGHCのダウンロードにとても時間がかかる(2~3時間)なので朝方のネットワークが比較的空いている時間帯、もしくは http_proxy 経由を推奨

手順

Stackのインストール

stack-2.3.1-windows-x86_64-installer.exe をダウンロードして実行する。

github.com

Stack Setup

とくに何も付けず stack setup するとGHC latest の 8.8.3 をダウンロードしようとするが 8.8.3 は以下のビルドエラーが発生するので他バージョンを選択する。

gitlab.haskell.org

ここでは後手順のHIEビルドに対応している 8.6.5 を指定してsetupする。
管理者権限コマンドプロンプトを開いて以下を実行する。(ネットワークが空いている時間帯推奨)

stack --resolver ghc-8.6.5 setup

ウイルス対策ソフトによって Permission Denied エラーになる場合があるらしいが自環境では特に何も無かった。
GHCのダウンロードは空いている時間帯だと30分程度、混んでいる時間帯だと2~3時間程度かかる。

インストールされた Stackのversionを確認

stack --version

GHCのversionを指定

stack config set resolver ghc-8.6.5

インストールしたGHCのversionを確認

stack ghc -- --version

HIEのビルド

前準備

以下を確認する。地味にPATHが通ってないことがあるので注意

  • stack にPATHが通っていること
  • git にPATHが通っていること
  • stackのlocal binにPATHが通っていること

clone

HIEのリポジトリをクローンする。
ビルド時の生成ディレクトリが長くなりWindowsのパス最大長を超える場合があるのでCドライブ直下にcloneするのが無難

C:\> git clone https://github.com/haskell/haskell-ide-engine --recursive hie

hieディレクトリでコマンドプロンプトを開いて以下を実行する

chcp 65001
stack ./install.hs hie-8.6.5
stack ./install.hs data

注意:chcpしてcmdの文字コードを変更しないとビルドエラーになる

ビルドは20~30分程度かかります。

ビルドが完了すると stack path --local-bin ディレクトリ配下に hie.exe 等が生成される。

f:id:hkou:20200718115450p:plain

Haskell Language Server (VSCodeの拡張)をインストール

marketplace.visualstudio.com

VSCodeを開いて拡張機能から Haskell Language Server を検索してインストールする。

設定から Hie Executable Path に先程の hie.exe へのパスを記入する。 f:id:hkou:20200718115900p:plain

試す

エディタの補完やGotoDef等が動くか試してみる

プロジェクトを作成する

任意のディレクトリにプロジェクトを作成する。
今回は hello-world プロジェクトとした。

stack new hello-world

GHCのversionを 8.6.5 に変更しておく。

cd hello-world
stack config set resolver ghc-8.6.5

hello-world ディレクトリでVSCodeを開き、型ヒントや定義元ジャンプ、補完機能が利用できるか確認する。

f:id:hkou:20200718120758p:plain

ビルド

stack build

実行

stack run

参考

qiita.com

F#でT4の実行時テキスト生成を使用する

概要

T4 (Text Template Transfomration Toolkit) を利用して実行時テキスト生成をF#にて行う。 T4がサポートする言語はC#, VisualBasicのみだが、C#プロジェクトでテンプレートを作成し、別のF#プロジェクトからそれを参照するという形でF#でもT4を利用することが可能である。 以下にその手順を示す。

環境

目次

手順

前準備

  • F# .Net Core コンソールアプリのプロジェクトを作成しておく
  • Visual StudioのT4拡張をインストールしておく
    • 標準だとVisual Studioでttファイルを開いたときにコードハイライトが効かなくて見づらい

marketplace.visualstudio.com

f:id:hkou:20200509084111p:plain

Visual Studioをダークテーマにしている場合、標準のバックグラウンドカラーではとても見づらくなるので変更する。

  1. メニューからツール→オプション
  2. tangible T4 Editor → Editor
  3. T4 Background Colorを選択し、カラーピッカーからお好みの色を選択する

f:id:hkou:20200509085156p:plain

テンプレート用C#プロジェクトを追加

  • クラスライブラリ (.Net Core) (C#)で同じソリューション内にプロジェクトを追加する。
  • F#のプロジェクトから上記のプロジェクトへの参照を追加しておく

テンプレートを追加

ランタイムテキストテンプレート を選択して新規追加する。

f:id:hkou:20200509082120p:plain

テンプレートプロジェクトの .csproj を直接開いて先程追加した .ttファイルの Generator の項目を TextTemplatingFileGenerator から TextTemplatingFilePreprocessor に変更する。

  <ItemGroup>
    <None Update="TestTemplate.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>TestTemplate.cs</LastGenOutput>
    </None>
  </ItemGroup>

↓↓↓ 変更後 ↓↓↓

  <ItemGroup>
    <None Update="TestTemplate.tt">
      <Generator>TextTemplatingFilePreprocessor</Generator>
      <LastGenOutput>TestTemplate.cs</LastGenOutput>
    </None>
  </ItemGroup>

テンプレートに渡すモデルを定義

public class TemplateModel
{
    public string Name { get;  }
    public int Age { get;  }
    public TemplateModel(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

モデルを渡せるようにpartial classを定義

追加したテンプレートファイルと同名のクラスをpartial classとして定義し、先程追加したモデルをコンストラクタから受け取れるようにする。

public partial class TestTemplate
{
    public TemplateModel Model { get; }
    public TestTemplate(TemplateModel model)
    {
        Model = model;
    }
}

テンプレートファイルを修正

ジェネレータ部分のコードにフルパスでライン表示が出てしまうので linePragmas="false" を指定する。

<#@ template language="C#" linePragmas="false" #>

上で定義したモデルを利用したテンプレートを記述する。

<#@ template language="C#" linePragmas="false" #>

<#= Model.Name #> のねんれいは <#= Model.Age #> 歳です。

テンプレートプロジェクトに System.CodeDomを追加

このままテンプレートプロジェクトをビルドするとコンパイルエラーが発生するため System.CodeDom を参照に追加する。

f:id:hkou:20200509090503p:plain

F#側で利用するコードを書く

  • モデルに値を設定する
  • templateクラスのコンストラクタにモデルを渡す
  • .TransformText() メソッドで適用後のテンプレート文字列を取得
open System
open Templates

[<EntryPoint>]
let main argv =
    let model = TemplateModel("シャミ子", 16)
    let template = TestTemplate(model)

    printfn "%s" <| template.TransformText()
    0

実行結果

f:id:hkou:20200509091546p:plain

参考

docs.microsoft.com

neue.cc

自作キーボード Mint60を組み立てた

自作キーボードのMint60を組み立てた。キースイッチとかキーキャップとか個別に揃えるのが面倒だったのでBoothでスターターキットを購入した。
組み立て直後は何故か片側のキーボードが動かなかったりしたが今の所安定して稼働している。ちなみにこの記事はMint60で入力している。

booth.pm

f:id:hkou:20181230225625j:plain

組み立て準備

電子工作を一切やったことがなく、当然道具も何も持っていなかったので必要と思われるものを揃えた。

  • 温度調整機能付きはんだこて
  • はんだこて台
  • はんだ
  • ハンダ吸い取り線
  • 先曲がりピンセット
  • マイクロニッパー
  • コネクタ補強用の接着剤

この中でたぶん使わないだろうなと思ってたけど意外と役に立ったのがピンセットだった。
また、マスキングテープは買わなかったのを後悔した。組立時にかなり必要になる。今回は一緒に組み立てをした人がマスキングテープを持っていたので借りることで事なきを得た。

f:id:hkou:20181228094907j:plain

組み立て

組み立ては一人では心もとなかったので同じく自作キーボードを組み立てようとしている人を誘って共同で組み立てをした。
iPadで組み立て解説ページを開いておいて横に配置して逐次見ながら組み立てた。 f:id:hkou:20181230130015j:plain

ダイオードの取り付け。まっすぐなダイオードを手で一つ一つ折り曲げてボードに刺していく。他の記事を見たら専用の折り曲げ機を利用したりアクリル板を重ねたところに置いて一気に折り曲げたりしていたのでこういうのを真似ればもっと作業スピードが早くなった可能性はある。 f:id:hkou:20181230134948j:plain

刺し終えたら裏側からはんだ付けをするので落ちないようにマスキングテープで固定する。 f:id:hkou:20181230150816j:plain

はんだ付けをする。一列ずつはんだ付けしていって付け終えたらニッパーで余った線をカットして次の列にはんだ付けみたいな流れでやるとやりやすいことがわかった。
はんだの煙が顔にモロに来てつらかったので横に扇風機を配置して煙を飛ばすように工夫した。 f:id:hkou:20181230151528j:plain

スタビライザの組み立て。最初それぞれの部品の向きがわからず組み立てに地味に時間がかかってしまった。 f:id:hkou:20181230164151j:plain

組み立てたスタビライザをボードに固定する。 f:id:hkou:20181230164640j:plain

アクリル板にキースイッチを固定していく。Mint60は自作キーボードの中ではキーの数が多いので地味に大変だった。 f:id:hkou:20181230171423j:plain

MCUのUSBコネクタ補強用の接着剤を用意する。2種類の溶剤を混ぜて接着剤として使用するらしい。 f:id:hkou:20181230181109j:plain

コネクタ内部の接点に入り込まないように丁寧にコネクタ周りに盛っていく。 f:id:hkou:20181230181440j:plain

MCUのはんだ付け、キースイッチのはんだ付け、LEDのはんだ付けをした。
MCUのはんだ付けは接点と接点の距離がめちゃくちゃ近いので隣通しがくっつかないようにはんだ付けにかなり神経を使った。
LEDは裏面が接着面になっていたが接着面がはんだづけした突起が並んでいてでこぼこしていてとても貼れないので雑だがテープでなんとか接着した… f:id:hkou:20181230185353j:plain

だいぶ見た目がキーボードっぽくなってきた。 f:id:hkou:20181230192842j:plain

2つとも組み上がって後はキーキャップをはめるだけという段階でPCに接続して動作確認をしてみた。あとあと他の組み立て記事を見てみるともっと早い段階で動作確認をしていたので、もう少し早めにやればよかったと思っている。
また最初に動作確認したときは何故か片側のキーボードしかLEDが光らない&キーボードが反応しない現象が発生し、いろいろコネクタを抜き差ししていたら唐突に両方使えるようになった。未だになぜ使えるようになったのかよく分からない。 f:id:hkou:20181230200445j:plain

キーキャップを取り付けた。このとき何故か左シフトキーが押したら戻らなくなってしまい何度か分解しても原因は不明だった(スタビライザーはちゃんと動作している)0Insのキーではなくテンキーの+を代わりに刺したらうまく動くようになった。

f:id:hkou:20181230203838j:plain

ApplePay->GooglePayへ移行している

iPhone8 PlusからPixel3に乗り換えたので、決済もApplePay→GooglePayへ乗り換えた(途中)

iPhone8 Plusについては以下 hkou.hatenablog.com

Google Payに移行して変わったことなど

対応する電子マネーが増えた

個人的にはnanacoが利用できるようになった点が大きい。自宅と職場の近くにセブンイレブンがありよく利用するため。
iPhoneでもSuicaで利用できていたが, nanacoだとPointが貯められるのが良い。

エクスプレスカードが不要になった

ApplePayでは電子マネーを利用するときにWallet起動・認証不要するためには、その電子マネーを「エクスプレスカード」に指定する必要があった。
GooglePayでは不要である。というよりも、すべての電子マネーがエクスプレスカードになった感じ。
GooglePayではスリープ状態ですべての電子マネーが利用できる。

その他

Suicaが未だに移行できていない。
iPhone -> iPhoneへの機種変更は簡単にできるみたいなのだが、iPhone -> Androidへの機種変更はSuica自体、アカウントを削除して作成しなおす必要がある。
また、Suicaを削除するときに残金が残っている場合は払い戻し処理をする必要があるがその際に手数料220円がかかる。
手順が面倒だし、無駄にお金もかかるので、このあたりはもう少し改善してほしい。

www.jreast.co.jp

3Dプリンタ FlashForge Adventure3を購入した

6月頃に予約注文したAdventurer3 が届いた。
初回予約組は7月中頃発送とのことなので、運良く初回予約組に入っていたらしい。

f:id:hkou:20180723080801j:plain

開封してみた。PLAのフィラメントと電源ケーブルが入っている。

f:id:hkou:20180723080912j:plain

本体を箱から取り出した。流石に最新モデルだけあってデザインがかっこいい

f:id:hkou:20180723081014j:plain

蓋を開けたところ。奥の方に見える緑色の留め具を外さなければいけないことが説明書には書いておらず、知らずに動作させてガタガタ言わせてしまった。

f:id:hkou:20180723081119j:plain

フィラメントをセットして、本体メモリに入っていたテスト用のボックスを印刷してみた。
中身がある領域はハニカム構造で印刷することで、フィラメントの節約をしているらしい。
動作音については、他の機種は知らないので比較はできないけどとても静かで、隣の部屋で稼働させてても睡眠できそうなぐらい静か。

f:id:hkou:20180723081237j:plain

出来上がったブツ

f:id:hkou:20180723081455j:plain

箱だけだとつまらないのでThingiverseで公開されているモデルを印刷してみた。

www.thingiverse.com

箱みたいな小さいものなら問題ないが、大きいブツを作る時は途中で剥がれてきて失敗してしまうということが分かったので台座に糊を付けた。

f:id:hkou:20180723081641j:plain

完成した。側面のつるつるしたところもちゃんとできていてすごい

f:id:hkou:20180723081800j:plain

ApplePencilを装着してみた。

f:id:hkou:20180723081914j:plain

次は他の素材で試してみたり、自分で作ったモデルを印刷したりしてみたい。

バイク試乗してきた(VERSYS-X 250, VStorm250)

VERSYS-X 250

  • 足つきはCRF250Lよりは良い
  • スリッパークラッチ搭載なのでクラッチレバーがすごく軽い
    • 試乗したバイクはクラッチミートがだいぶ遠くてなれるまでちょっと手こずった
  • 高回転型っぽいエンジン特性でツアラーとしてそれはどうなのとか思った(普段CRF250Lに乗っているせいか全然合わなかった)
  • シートが硬すぎる。10分ぐらい走っただけで尻が痛くなった

f:id:hkou:20180721152028j:plain

VStorm250

  • 足つき最高。両足ベタつきだった。
  • かなり粘るエンジンで下道でも5速~6速で普通に走れてかなり運転しやすい
  • シートがふかふかで長時間乗ってても疲れなさそう
  • VERSYS-X 250とVStorm250のどちらか片方買うとしたら間違いなくVStorm250にすると思う

f:id:hkou:20180721160252j:plain