はのちゃ爆発

はのちゃが技術ネタとか日常のこととかを書いてます。

はの飯アドベントカレンダー #2 北海道編 その2

はの飯アドベントカレンダー2日目、北海道編その2です。はの飯アドベントカレンダーの Adventar はこちら。

adventar.org

昨日の記事はこちら。同じく北海道編です。

hanocha.hateblo.jp

それでは今日も行ってみましょう。

続きを読む

ゼロから作る deep learning をやった話 (feedforce Advent Calendar 2018 2日目)

この記事は feedforce Advent Calendar 2018 2日目の記事です。

adventar.org

1日目の記事は id:sawapp の「織田信長鉄甲船に学ぶシンプルな考え方」でした。

sawapp.hateblo.jp

3年連続アドベントカレンダーで初日を担当してるの素直に凄いと思います。私もちゃんと続いていきます!

ディープラーニングをやった話ですが、あんまりディープラーニングについての話は出てきません。ご了承ください。


今年の7月31日から『ゼロから作る Deep Leaning』(以下ゼロつく) という本の読書会…勉強会?をやっていました。

当初は3, 4名程度の参加希望者が居た…のですが、いろいろあってだいたい id:pokotyamu と二人での会になっていました。

10月末ぐらいに無事最終章まで読了したので、そもそもどういうモチベーションで取り組んでいたのか、どんな感じでやっていたのかをちょっと振り返ってみようと思います。

続きを読む

はの飯アドベントカレンダー #1 北海道編

今年も始まりましたはの飯アドベントカレンダー。はの飯アドベントカレンダーは基本的に「今年食べた美味しいもの」をひたすら紹介するアドベントカレンダーです。

adventar.org

去年のはの飯アドベントカレンダーはこちら。

adventar.org

それでは早速行ってみましょう。初日は北海道編です。

続きを読む

のんびり北海道旅行の写真を上げる (Tekka Advent Calendar 2018 1日目)

この記事は「Tekka Advent Calendar 2018」1日目の記事です。おはようございます。はのちゃ (id:hano_tea) です。

何か書かなきゃと思いつつネタが無いので、北海道旅行の様子をだらだら書いていきます。本当にこんなんでいいのか

流石に北海道旅行だけじゃアレなので、 Tekka アドカレっぽい内容も書いておこうと思います。

Tekka って?

Tekka は創作応援コミュニティです。

モノづくり好きな人の、モノづくり好きな人による、モノづくり好きな人のためのコミュニティです。

一昨年自分で書いた記事が役に立ちそう。

hanocha.hateblo.jp

というかもう2年も経ってるんですね…全然そんな実感が無かったです…

参加メンバーは皆なんらかの創作が好きな人々で、皆日々何かを創作しています。私ももっと見習って創作活動していきたいですね。

創作ということで、私は北海道旅行の写真をメインであげようかなと思います。

写真たち

補足的な

今回、カメラは富士フィルム X-T1, 35mm 単焦点で撮影し、 iPad Pro 11インチモデルに写真を取り込み、 iOS 用の Lightroom で現像する、というようなフローでやってみました。

iPad Pro の Lightroom が快適というのは聞いていたのですが、実際やってみるとめちゃくちゃ現像が快適でヤバかったです。 Apple Pencil で直感的に編集できることと、そもそもの Lightroom の動作がそのへんのノートPCより遥かにヌルサクなのが素晴らしい…

次は

明日は _kiteretsu さんです。「21時になったら見においで。」とのことなので21時になったら皆さん見に行きましょう。

graphql-ruby をさくっと使うメモ

自分用備忘録。

graphql-ruby を入れる

とりあえずインストール。 gem 'graphql' を Gemfile に書いて $ bundle install

graphql-ruby の初期化

以下のコマンドでセットアップ。

$ bin/rails g graphql:install

実行後再度 $ bundle install する。

Query を作ってみる

モデル類は適当に作ってある前提。

$ bin/rails g graphql:object Hoge some_field:String

app/graphql/types 以下に新しいオブジェクトが生成される。

module Types
  class HogeType < Types::BaseObject
    field :some_field, String, null: true
  end
end

オブジェクトができたので Query を追加する。

field :hoge, HogeType, null: true do
  description "Find a hoge by ID"
  argument :id, Int, required: true
end

def hoge(id:)
  # ここに hoge のリゾルバを定義
  Hoge.find(id)
end

field 定義時、 argument の引数である reqiured は必須パラメータっぽい(何も書かないとエラーになった)。

field の第一引数として渡しているシンボルと同じ名前のメソッドがリゾルバになるっぽい?

上記は #show とかに相当する Query になる。 #index に相当するものだと以下のようになる?

field :hoges, [HogeType], null: true do
  description "Get all hoges"
end

def hoges
  Hoge.all
end

本来は hoge で複数の結果を返せるようにするべきか、あるいは検索は別フィールドにすべきか。作法を調べたほうがよさそう。

Mutation を追加する

ここまでは Getting Started 通りにやれば分かるのでいいが、 Mutation は似たようなガイドが見当たらなかったのでちょっと苦労した。

UpdateHoge 的な Mutation のを追加、 Create が出来る部分までやる。

Generator で Mutation の雛形を作る

Mutation を作るジェネレータがあるのでそれを使う。

$ bin/rails g graphql:mutation CreateHoge

app/graphql/mutations 以下に create_hoge.rb 的なものができる。

module Mutations
  class CreateDepo < GraphQL::Schema::RelayClassicMutation
    # 作成後に返す結果を field で定義
    # エラーもちゃんと返す場合はここでエラー用フィールドを定義する
    field :hoge, Types::HogeType, null: false

    # 作成時に渡す引数
    # Hoge の作成に必要な情報を渡す
    argument :some_field, String, required: true

    # 実際の作成処理を記述する
    # 返り値は上で記述した field をキーに持つオブジェクト
    # 失敗した時はそれに対応したエラーを返すように設計する必要がある
    def resolve(some_field:)
      hoge = Hoge.create(some_field: some_field)
      return { hoge: hoge }
    end
  end
end

ジェネレータ実行時に app/graphql/types/mutation_type.rb が編集され、上記で編集した Mutation が使えるように設定されているはず。

module Types
  class MutationType < Types::BaseObject
    field :createHoge, mutation: Mutations::CreateHoge
  end
end

オシャカワJK御用達キーボード Blockey のつくりかた

この記事は Blockey で書かれていません。

もくじ

これなに

先日(もう1ヶ月以上前ですが)開催された Maker Faire Tokyo 2018 にて、「ゆかり屋」さんから発表、頒布されたキーボード "Blockey" 。 ファッションキーボードというキャッチコピーの通り、キーボードとしての機能をちゃんと持ちながらそのコンパクトで愛らしく、またフルカラーLED搭載でキラキラ光る見た目はまさにオシャカワJK御用達のファッションアイテム。

と言われているとかいないとか。オシャカワJKはともかく非常に可愛らしい一品です。

booth.pm

しかし、その可愛らしい見た目とは裏腹に、組み立て難易度は自作キーボードキット界の中でも抜きん出ており、

  • 表面実装ダイオードをそれなりの数実装しなければならない
  • リセットスイッチも表面実装
  • 所狭しと並べられたタクトスイッチ
  • 一部のタクトスイッチの脚は基板とほぼツライチにすることを要求される
  • ちょっとでも手を抜くと一瞬でスイッチがガタガタになるシビアさ

などなど。気軽に手を出すと心が折れそうな気がする、そんなファッションキーボードです。

とはいえ、スイッチの脚の処理さえなんとかなってしまえば後はそんなに辛くないとも思われます。

公式ビルドログっぽいものが今のところない…?気がするので、今更感は有りますが簡単なビルドログを記しておきます。 ごめんなさいありました。でも書きます。

eucalyn.hatenadiary.jp

つくりかた

組み立てに必要なものは このへん とかを参考にしてください。 今回はそこまで温度にシビアなパーツはないので、温度調整半田ごては必須ではないですが、それでも FX600 はオススメです。

キットの全容はこんな感じです。

f:id:hano_tea:20180916220032j:plain
Blockey キットの中身。これはキーキャップなしです。

何はともあれ基板を取り出します。下の画像で見える面が裏面、ダイオードを付けたり、スイッチの脚などをはんだ付けする面になります。

f:id:hano_tea:20180916220256j:plain
基板裏面。

ダイオードの取り付け

表面実装ダイオードの取り付けは怖くないよ!以下の拙著や同僚氏の記事がわかりやすいので参考にどうぞ! (同僚氏の記事のほうがイラスト付きでわかりやすいです。)

critical-alert.hatenablog.com

hanocha.hateblo.jp

先程の写真で写っていた、@eucalyn_ の ID が入っている面にダイオードを実装していきます。 「コ」の字型の枠で囲まれ、また Dn のような番号が振られている部分がダイオードの実装位置です。

ダイオードには向きがありますが、線の描いてある側(カソード)が、「コ」の時の線閉じている方になるように実装していきます。 一部「コ」の字が見えない部分がありますが、裏面のダイオードの向きは全て同じなので、「コ」の字が見えているところに合わせて実装します。

また、 D48 の右横にある、隙間が大きめのランドは ダイオード用のランドではない ので気をつけてください。近くに SW63 とあるように、リセット用スイッチの取り付け位置になります。

f:id:hano_tea:20180916220644j:plain
裏面にダイオードを付け終わった基板。

裏が終わったら、表面にも10個ほどダイオードを実装する箇所があるので取り付けていきます。

表面ですが、 D59、7個縦にダイオードが並ぶところの真ん中は

取り付ける向きが逆

なので注意してください。それ以外は特に気をつけるところはありませんが、3つ横向き?に並んでいるところはややランドが狭く実装難度が高めなので慎重に。

ちなみにダイオードは多めに入っているので余ります。実装忘れにはくれぐれもご注意を。

ピンヘッダの実装

次に Pro micro 取付用のピンヘッダをはんだ付けしていきます。 裏面に黒い樹脂部分が来るように実装します。

取り付けの際、表面側の脚は全て「可能な限り飛び出ないように」切り落とします。可能なら基板からほぼ出っ張らないように。

f:id:hano_tea:20180916223201j:plain
脚を全然フラットに切れていない例

私は切れるニッパーを持っておらず、全然フラットにできませんでしたが、みなさんは極力平らにするようにしてください。 ここでフラットにするのをサボると、最終的にスイッチがガタガタになってしまい悲しいことになります。

リセット用表面実装タクトスイッチの実装

もう一つの表面実装部品、タクトスイッチの実装です。

f:id:hano_tea:20180916223535j:plain
取り付けられたタクトスイッチの図

やり方はダイオードの取り付けと同じなので割愛します。

スイッチの取り付け

いよいよキースイッチ用タクトスイッチの取り付けです。自分好みの配置でひたすらスイッチをはめ込んでいきます。

f:id:hano_tea:20180916224114j:plain
スイッチをはめ込んだ図(はんだ付け前)

f:id:hano_tea:20180916224128j:plain
スイッチをはめ込んだ図(裏、はんだ付け前)

一点注意するところとして、裏面、黒い帯が通っている Pro micro 取り付け位置になる部分は脚を切り落とす必要があります。 先程のツライチほど頑張る必要はありませんが、 Pro micro と干渉しない程度の高さに切り落としましょう。

f:id:hano_tea:20180916224712j:plain
この帯の部分は脚を頑張って切り取ります。

スイッチをはめたら、ひたすらはんだ付けをしていきます。スイッチが傾いた状態ではんだ付けしてしまわないように気をつけましょう。 後から傾いていることに気付いてもリカバリーはかなり難しいです(出来なくはないですが…)。

私は後から傾きに気付いてひどい目にあいました

Pro micro の取り付け

ここまでくれば完成は目前です。

Pro micro を裏面に、micro USB 端子を Blockey と Pro micro の基板で挟むような向きで実装します。 なんとなくわかるかと思いますが、 USB 端子が基板の切り欠きの方に来るようにします。

f:id:hano_tea:20180916225107j:plain
Pro micro の取り付け(はんだ付け前)

Pro micro をはんだ付けした後の脚も可能な限り切って短くしておきましょう。ケースと干渉してちゃんと閉まらない原因になります。

LEDの取り付け

はんだ付け最後の作業、LEDの取り付けです。地味に取り付けにくいパーツかもしれない。

LED に描いてある → の向きに電流を流すイメージ。なので → の流れの先頭にある3つの端子にはんだ付けします。 LED 側に予備ハンダしておくとはんだ付けが楽になるはず。

f:id:hano_tea:20180916232047j:plain
LEDの取り付け方。写真撮るの忘れて雑なのになって申し訳…

Blockey 基板と LED の対応は以下の通り。この組み合わせの通り適当な導線を繋いではんだ付けすれば OK です。 (基板側 - LED 側 の順で表記。 LED 側は写真の通り、上が 5V, 下が GND になる向きで表記しています)

  • LED (上) - DI
  • VCC (中央) - 5V
  • GND (下) - GND

ケースの組み立て

最後にケース用のアクリルと基板をボールチェーンに通しながら組み立てます。

ケースと基板の順番がうまく表現しにくいのですが、以下のような感じになるはず…? アクリルの色によって違うかもしれない。私のはマットクリアの例です。

  • 透明アクリル (厚み: 薄)
  • 透明アクリル (厚み: 厚)、 Pro micro 用間隙なし
  • Blockey 基板
  • 透明アクリル (厚み: 厚)、 Pro micro 用間隙あり
  • 半透明アクリル

あとはこの5枚を貫くようにしてネジ止めして完成!

QMK firmware の書き込み

ファームウェアの書き込みは他の自作キーボードと同じ方法で可能なので省略します。以下のレツプリ製作記事中にある QMK の項を参考にしてください。

hanocha.hateblo.jp

コマンドは make blockey:default:avrdude とかでいけるはず。多分。

完成!

これであなたもオシャカワJK!バッグにつけて色んな所に連れて行こう!

f:id:hano_tea:20180916233740j:plain

Ubuntu 18.04 LTS 上で rbenv を使って Ruby 2.3.6 を入れようとすると libssl-dev 周りでコケる

という現象が発生したので、その原因と解決策のメモ。 調べた感じ同じ現象でハマっている人はまだ居なさそうだった。

続きを読む