奥さんの@y_komacoがオリジナルキートップの販売をBOOTHで始めました。

poop keytop - kmgt keytop - BOOTH

Image from Gyazo

Image from Gyazo

Image from Gyazo

間違いなくこれはクソですね。

奥さんは元ジュエリーデザイナーで彫金とかの学校も出てるので立体造形は得意ではあります。

ただ、他にも動物とか試作品がいっぱいあるのに何故第一弾がクソなのか、何故無駄にカラバリが多いのか、全てが謎に包まれていますが、凄い勢いで作っているので静かに見守りたいと思います。

フィヨルド宛にwillnetさんからRuby on Rails 6 エンジニア 養成読本をいただきましたー。

Image from Gyazo

rails6になって新しく押さえておかなきゃいけないところをチェックしたかった自分にはちょうど良い本でした。

特にこれらはRailsGuideでもまだWIP状態なので本にまとまってるのはわかりやすかった。

  • Action Text
  • Action MailBox
  • Multiple Database

さらにWebpacker、StimulusについてはREADME・公式サイト以外の情報はあまりないので少しでも記述されている本は集めたい気がします。

testunit(minitest)信者として一番良かったのは、rspecじゃなくてminitestでのテストを一通り説明してあるところ。

これの本は人によって自分が詳しく知ってるところ、弱いところが違うのでありがたい箇所も人それぞれだと思います。(僕はEarly Hints知らなかったので助かった)

ちょっとだけRailsから離れてて復帰した人、Rails6の新機能を押さえたい人にとっては最適な本だと思います。

プログラミングスクールのフィヨルドブートキャンプの提出物のレビューでよく指摘するシリーズ。

rubyではメソッド呼び出しにカッコ()が必須ではありません。カッコを使わずにメソッドを呼び出すと単に変数を参照しているように見えます。

article = Article.new
article.title # メンバ変数が呼べているように見える

rubyはこれを利用してアクセサを実現している。(c#やswiftでは専用の構文を用意している)

attr_accessor :title
def title
  @title
end

def title=(title)
  @title = title
end

↑この2つは同じ。

これは自分のプログラムにも活用できる。メソッド名が名詞であって、そういうメンバ変数のアクセサとして動いているように”見えれば”問題ないメソッドになる。

def age
  today - birthday
end
user = User.new
user.age # そういうメンバ変数にみえる

実際にはそんなメンバ変数はなく、メソッドがメンバ変数のフリをしているだけだ。クラスを使う人からみれば同じように振る舞うのであれば問題ない。 複雑な処理を整理したいとき、これを使ってなるべくそのクラスのメンバ変数に見える名詞メソッドの形にしてみよう。 たくさんのメンバ変数(に見える名詞メソッド)を扱う少数のメソッドという形になると全体が把握しやすくなる。何故ならメンバ変数よりメソッドの方が入力・出力・副作用を考えなければ行けないので複雑だから。

注意

ただ、メンバ変数のように見えるメソッドが派手な副作用を持っている時、使う人から見るとエゲツない罠となる。

まずこれをやっておく。

ターミナルからVisual Studio Codeを起動する方法【公式の方法】 - Qiita

$ git config --global core.editor 'code --wait'

コミット時にVSCodeが開いてアラ便利。

フィヨルドブートキャンプというプログラミングスクールをやっていますが、最初の印象で

「この人は良いプログラマーになれそうだな」

とか

「こういう感じの人は続かなそうだな…」

とかそういう先入観は僕らにももちろんあります。

しかし、今までの経験上、そういう先入観ってあんまり当てにならないなと感じます。

良さそうだな〜と思ってた人が全然続かなかったり、逆にすぐに辞めちゃいそうかも?と思ってた人が気づいたら長く続いていて、スキルもしっかり付いていたり。

僕の先入観なんてそのぐらい当てにならないので、今は「ごちゃごちゃ言わずとにかく暖かく見守ろう」というのが新しく入ってきた人へ思うことです。

僕がどう思ってようが1ヶ月ぐらい経ったら答えが出てます。1ヶ月以上続いてる人はみんなすごいと思う。

僕が「英語1ヶ月みっちりやれ」と言われてもできる気がしないし。

Corne Cherry、Mint60に続いてLily58 Proを作りました。

Image from Gyazo

最近毎週末キーボード作ってる気がする。

ひとまず、自分の求める理想のキーボード環境になったように思います。

3個目だから楽勝かと思いきや、表裏逆につけてしまってハンダをとるのに苦戦したり、やっぱりギリギリでした。

ネットではクリア軸がずっと売り切れてたんですが、実店舗ではあったので買いに行ってよかったです。

プログラミングスクールのフィヨルドブートキャンプの提出物のレビューでよく指摘するシリーズ。

可読性の面

可読性(他の人が読んだ時のわかりやすさ)の面から言うと、initialize(初期化)と言える処理のみ書くべきです。

そのクラスがインスタンスになっているとき、そのインスタンスが備えているべき変数の状態などを設定しておくべきです。

newしただけなのに初期化とは言えないことをやっているとそのクラスを使った人はビックリするし、勘違いから事故が起きやすくなる。

機能の面

機能の面から言うと、大抵は受け取った引数からメンバ変数を設定する程度をするのが一般的です。

例えば、newしただけで何か文字を出力してたりすると、そのクラスをテストする時に困る。拡張するときも困る。

printer = Printer.new # ここで画面に何か出ちゃう
assert printer.ready?

自作キーボードにハマってしまって今度は普通のキー配置+5段のmint60を作りました。

Image from Gyazo

Image from Gyazo

Image from Gyazo

前回作ったCorne Cherryも苦労してなんとかできた感じでしたが2回目だからもう大丈夫だろうと思いきやギリギリでした。

好きなキー配置によってスタビライザーをつける箇所が違うんですが、無駄に多くつけてた状態でほとんどスイッチをはんだ付けしてしまい、危うく詰みそうでした。

なんとか隙間からニッパーでスタビライザーを破壊して取り出したのでなんとか完成。

Corne Cherryは超軽いクリア軸だったので今度は茶軸を試してみました。

やはりクリア軸に慣れたせいか、茶軸はすごく力がいるように感じます。キー配置は数字の段があるとやはり便利。他は右手親指にエンターキーさえ割り振れれば違和感なく使える感じ。

家ではWindowsのゲームPCのキーボードとして使っていこうと思います。

三連休の初日に@takkanmさん主催による自作キーボードの入門のイベントに夫婦で行ってきました。

秋葉原の自作キーボード専門店遊舎工房に行ってキットを買って @takkanmさんや@emorimaさんなどの経験者の方に教わりつつ自作キーボードを作っちゃおうというイベントです。

Image from Gyazo

みなさん(ほとんど@takkanmさん)の作品(と@katsyoshiさん)。

永和さんのオフィスで自作キーボードの種類やスイッチ、キーキャップの説明をしてもらい、みんなで遊舎工房へ。

Image from Gyazo

10人以上いる参加者が全員一度には入れない広さですが、専門店だけあって謎の部品がたくさん売ってました。様々なスイッチが試せて、それがタブレットにつながっていて、押したスイッチの説明と値段がわかる仕組みは便利でした。

僕らが「どのキーキャップがいいかしら?」とちんたらしている横で店員さんに、

「青軸60個ください」

と素早く買い物を済ませる@emorimaさんの玄人感がハンパなかったです。

Image from Gyazo

秋葉原でお昼を済ませたあとは永和さんのオフィスに戻りひたすら半田付け。

初めての人はキー4つの入門に最適なmeishi2 キットを作り、他の人もそれぞれ自分の買ったキットを組み立てていました。

僕もmeishiを先日組み立てたのでCorne Cherryという40%分離型のキーボードにチャレンジしました。

Image from Gyazo

いいゾ~コレ

ものづくり系職種で手先の器用な妻はAttack25というテンキーのキットを詰まらず作り上げていましたが、僕の方は結局三連休をフルに使って最終日の深夜にやっと完成するというありさま。

Image from Gyazo

かなり疲れましたが、何度も動かなくてハマったので完成した時の嬉しさもひとしお😭

1週間程使っていますがクリア軸の軽さと親指での操作の気持ちよさにハマっています。

それもこれも楽しい入門イベントのおかげ。@takkanmさんありがとうございます!

妻はキーキャップを自作し始めているし、僕も早くも次のキーボードを作りたくでウズウズしています。

超楽しかったのでまたキーボードイベントやりたいですね!

これまたフィヨルドブートキャンプで何度も説明しているのでまとめておきます。

getterとsetter

一般的なGetterとSetterについてはこちら:

3.5 GetterとSetter : Javaのオブジェクト指向入門

titleというメンバ変数があった場合、getter, setterを実現するためにget_title set_titleというメソッドを作らなきゃいけないのは冗長。

rubyではアクセサというが、メンバ変数と同名のメソッドができる機能がある。

attr_accessor :title

c#やswiftなどでもプロパティという仕組みで同様のことができる。

public string Title { get; set;}

クラス名、メンバ変数名、メソッド名の原則

  • クラス名:名詞
  • メンバ変数名:名詞
  • メソッド名:動詞

変数の動詞化

見方を変えると、titleget_titleというメソッドをあてがうというのは変数をメソッド化(=動詞化)するために無理やりgetを付けていることになる。

メンバ変数のように振る舞うメソッド

rubyではメソッドを呼び出すとき必ずしも()を付ける必要がない。

foo() # カッコあり
foo # カッコなし

これにより、本来動詞であるべきメソッドを名詞にして、カッコなしで呼び出すとメンバ変数であるかのようにみえる。

article = Article.new
article.title # メンバ変数が呼べているように見える

rubyはこれを利用してアクセサを実現している。(c#やswiftでは専用の構文を用意している)

attr_accessor :title
def title
  @title
end

def title=(title)
  @title = title
end

↑この2つは同じ。

アクセサの考えを自分のプログラムに活用する

これは自分のプログラムにも活用できる。

メソッド名が名詞であって、そういうメンバ変数のアクセサとして動いているように”見えれば”問題ないメソッドになる。

def age
  today - birthday
end
user = User.new
user.age # そういうメンバ変数にみえる

実際にはそんなメンバ変数はなく、メソッドがメンバ変数のフリをしているだけだ。クラスを使う人からみれば同じように振る舞うのであれば問題ない。

複雑な処理を整理したいとき、これを使ってなるべくそのクラスのメンバ変数に見える名詞メソッドの形にしてみよう。

たくさんのメンバ変数(に見える名詞メソッド)を扱う少数のメソッドという形になると全体が把握しやすくなる。

何故ならメンバ変数よりメソッドの方が入力・出力・副作用を考えなければ行けないので複雑だから。

メソッド名の原則を外れていてるコードを見たとき

他人のrubyコードを見たとき「メソッドなのに動詞じゃない」と思ったときはこのテクニックが使われてないか考えてみよう。そして自分のコードにも取り入れるとわかりやすいコードになるかもしれない。

宣伝

ss

現場の即戦力になれるプログラミングスクール フィヨルドブートキャンプ