DDD ディストーション駆動開発

エレキギターと音楽とRubyを愛するフルテンエンジニアのblog

表参道.rbでHanamiについてLTした

表参道.rb #27 ~ RubyKaigiのおさらい

表参道.rbにお邪魔して、RubyKaigiで聞いたHanamiというRubyで作られたwebフレームワークについてLTしてきました。

omotesandorb.connpass.com

Hanamiが気になる

先日のRubyKaigi2017で、Hanamiに関する発表を聞き、その思想、設計、使い方に触れました。

rubykaigi.org

Rails以外のRuby製WAF、名前は聞いたことあるものの触ったことはなかったので、もしかしたらRailsのつらみを何とかするヒントがあるんじゃないかなーと思ってセッション聞いてました。

Railsのつらみは整理整頓の問題?

LTでは、Hanamiの設計思想に触れて感じたこととして、自分にとってのRailsのつらみは整理整頓の問題なんじゃないか、という話をしました。

例えばHanamiは、Railsよりも、置く場所に厳格で、以下のような感じになってます。

  • ModelはRepository(データアクセス)とEntity(ドメインロジック)に分ける
  • Controllerはactionごとにファイル(Classも)を分ける
  • ViewはTemplateとView(helper的なロジックを抱えておけるクラス)に分ける

RailsはActiveRecordが優秀すぎる故にModelが太りがちで、太ると管理が辛くなる(分厚いので読むのが辛い、いつのまにかよく似た違うメソッドが生えてる、validationのコンテクストが乱立するetc...)と私は感じていて、Hanamiの、Modelの中身を分けてしまうという方法は良いなと思いました。

ただまあそれくらいなら、「RailsやめてHanamiを使うぞー」という話ではなく、自分たちで整理整頓のルールを追加したらいいだけなのですよね。

しかしながら、ルールを追加しても既存のコードは勝手に片付いてはくれないし、みんなが納得するルールを決めるの、ってそれ自体が難しいですよね。

引き続きカオスに秩序をもたらすべくがんばります。

発表スライドはこちらです。

gitpitch.com

Hanamiとmountable engine

Hamamiはrailsでいうappディレクトリがapp"s"ディレクトリになっていて、一つのシステムの中に複数のアプリを持つことができる、という設計になってます。

このcontributorsというアプリだと、webとAPIを別々のアプリとして格納してます。

github.com

他にもwebアプリと管理画面、という感じで使えるんじゃないか、という話をしたら、mountable engine使えばRailsでも似たようなことできるよ、と教えて頂きました。

qiita.com

Railsアプリをまるっと追加できるというのは面白いですね。ここぞというところで使ってみたいです。ちょっとアイデアが湧きました。

表参道.rb

毎月第一木曜に表参道界隈のRubyistが集まるイベントです。もくもく会ではなく、テーマがあるタイプの集まりです。

わしわし作業するためにもくもく会に参加するのも好きですが、テーマがある勉強会は共通の話題で盛り上がりやすくていいですね。自分の問題意識と重なるときは情報収集のために参加するようにしてます。

omotesandorb.connpass.com

ALBIT A3GP 気難しいけどいい仕事する、いぶし銀の職人気質フロアプリアンプ

スタジオのアンプが使いこなせない

盆休みにKORG STUDIO EXTREME行って遊んできました。

今回借りた部屋はMarshallの1959 SuperLeadが置いてあったんですが、これが全然使いこなせなくて。

歪まないMarshall

http://www.korgstudio.jp/images/studio/Cst/1959SL.jpg

「初めて見た!カッコイイ!」って意気揚々とジャック刺してみたんですが、こいつMarshallのくせに全然歪まないんです。なにこれどうしたらいいのよ、inputをリンクしたらいいんだっけ、と暫く格闘してみたものの、、、面倒になって他のアンプに変えちゃいました。

後で知りましたが、この手のMarshallは低ボリュームでは歪んでくれないんですね。

サクッといい音出せるようになりたい

今回のSuperLeadは特別ですが、リハスタって、スタジオ、部屋によって置いてあるアンプが違うので、その場でパッといい感じの音を作るのって難しいし、時間かかっちゃいますよね。自分の音だけじゃなくて、バンドの中でのバランスとか考えると尚更面倒ですね。

プリアンプ持ち込めばいいじゃん

スタジオ入って音作るのが面倒なら、セッティング済みのマイプリアンプ持ち込めばかなり楽になるんじゃないかと思いまして、買ってしまいましたALBIT A3GP。予算の都合上A3GP MARKIIではなくA3GPを中古で購入。

ALBIT A3GP

前に買ったBlackStar HT-DUALみたいな、真空管搭載のフロアタイププリアンプです。BlackStar HT-DUALと比べるとA3GPはスペックがなかなかイケてます

  • 結構小さい
  • send/return、tuner outがついてる
  • ヘッドホンアウト、AUX INがついてる
結構小さい

よくあるエフェクター2.5個分くらいの大きさです。620gらしいです。BlackStar HT-DUALは結構ずっしりしていて1.2kgあったらしいので、重量にすると半分、大きさは一回り違う感じです。これだけ小さければ楽々持ち運びができますね。

send/return, tuner outがついてる

こんなに小さいのにsend/returnがついてます。TUBEMANはin/out/mixer outだけだし、HT-DUALはin/outだけなんで、小さいくせに高機能で凄いです。プリアンプってことは、こいつのoutに空間系並べてアンプのreturnに繋げば良さそうな気がしますが、わざわざsend/returnついてるってことは何か工夫があるのでしょうね。

ヘッドホンアウト、AUX INがついてる

ヘッドホンアウトがあって、さらにAUX付いてるフロアプリはかなり珍しいと思います、これが決め手でA3GPにしました。自宅練習仕様でとても有難いです。

AUX少しだけ難点があって、ボリュームは刺した機器の方で調整する必要があり、スマホを刺すとギターと音量バランス取るのが結構難儀です。

感想

全体的に気難しい

操作が難しいというより、色んなところでA3GP独特の扱いを求められます。

まず、inputとoutputが普通のエフェクターの逆です。(普通右in→out左ですが、A3GPはin左→send→return→out右になってます。)なので、ボードにこいつを入れると途端に取り回しが複雑になります。

音作りも独特です。Crunch/leadと、Clean/Driveのスイッチがあるので、Clean/Crunch/Leadの3チャンネルで使用できるのですが、音を太くするためにCrunch/Leadの音にクリーンの音を混ぜるという仕様になってます。これが結構曲者で、クリーンのvolを上げてるとDrive音が凄く変な音になります。submasterというツマミでDrive音とクリーンのバランスを変えることで調整ができますが、どれくらいクリーンを混ぜるのか、かなり悩みます。

あと、セッティングが変だとノイズが出ます。これは間違ったセッティングを行うとノイズが乗るという意味です。セッティングの仕方はマニュアルに書いてあるので、エイヤでやらず、手順に従って微調整を繰り返しましょう。

クリーンがとても綺麗

www.youtube.com

レッチリのScar Tissueのコピー、OD-2,OD-3とA3GPでこの音作ってるそうです。

真空管のクリーンのハリと厚みは素敵ですね。Drive切った完全なCleanも良いですが、ムスタングのフロントで、Crunch側のDrive、Gain低めにコーラスかけた音が最近のお気に入りです。

自分は、A3GPのCrunchではいい感じのクランチサウンドが作れなかったので、A3GPのCrunch側Gainは低めにしておいて、ブースター踏んでクランチ作ってます。

↓の動画はFenderのアンプにOD-1とかでクランチを作ってます。私のイメージするクランチってこういう感じですが、A3GP単体では作れなかったです。

www.youtube.com

Leadは歪みますが、BlackStar HT-DUALのようなモダンな歪みではないです。なんというかジミヘンとかDeepPurpleとかLED Zeppelinとかのイメージです。自分はGain低めでブースターで歪み足したりしてます。

ギンギンした歪みを作る場合Crunch側のDrive、Gain低めにMooer BlackSecretで作っちゃいます。メタル系やモダンな歪みを目指したプロダクトではないということだと思います。

今の所は、

  • Driveはonにしたままにする
  • クリーンはCrunch側で歪み軽めで作る
  • クランチはCrunch + ブースター
  • モダンな歪みはCrunch + ディストーション
  • Leadでクラシカルな歪み

という感じにすると、幅広く使えて楽しいなあ、と思ってます。

CROSSが面白い

左に回すとフェンダー風、右に回すとマーシャル風、という、HT-DUALにもあった感じのツマミです。どちらかに振り切っちゃうより、どのあたりが好みの音なのか探すのが楽しいですね。私は今のところ3時くらいのマーシャル風味が好きです

ムスタングだと6弦が暴れる

歪ませた6弦、相当気をつけて弾かないと「ぶおおおおん」というだらしない音になっちゃいます。ムスタングの弦のテンションが低いからなんじゃないかと勝手に思ってます。単に私の技術の問題だとは思うのですが、他のアンプやマルチエフェクターで弾いていて気になったことはなかった、という言い訳を添えておきます。

 

使い方まだまだ研究中です。良い方法見つかったら更新していきます。

 

ALBIT GUITER PRE-AMP ギタープリアンプ A3GP MARKII
ALBIT
売り上げランキング: 25,151

関連記事

ギター関連グッズのまとめ記事

www.hizumizm.com

 歪み系エフェクターのまとめ記事

www.hizumizm.com

  

Rails Developers Meetup #4の公開コードレビューを受けてみて

Rails Developers Meetup #4

先週開催されたRailsDM #4、残念ながら会場参加はできなかったのですが、twitterでずっと追っかけてました。

twitter.com

先日PullRequestした公開コードレビュー、イベント当日はコードチェックしてもらえなかったのですが、なんと翌日、レビューしていただくことができました!

全PRに対するレビュー動画

PR送った全員に、jnchitoさんが動画でコメントくださってます。すごい!! 

www.youtube.com

www.youtube.com

レビューのふりかえり

フィードバックは以下の通りでした。振り返ってみると、絶対やってはいけないことをがっつりやっちゃってて、非常に恥ずかしい。。。

不要なreturn

Answer by itume · Pull Request #17 · JunichiIto/train-ticket-rails · GitHub

ご指摘の通りですね。。。Rails始めたばっかりの時によく見たDoubleRenderErrorのトラウマ?でつい手癖で and returnしちゃうんですよね。全く気づいてなかったです。。。

降りられるかどうかの判定はGateがやるべきでは?

コメントいただいてる通り、現実世界で改札機と切符、どっちが判定してるのだろうか?って考えたら、そら改札機ですよね。なぜ切符の責務だと思ったのか。。。そのせいでGateとTicketを行ったり来たりしてて、気持ち悪いですね。。。

判定の責務を改札機にもたせて書き直したら、めっちゃスッキリ書けました。

Answer by itume · Pull Request #17 · JunichiIto/train-ticket-rails · GitHub

現実世界に存在しない概念をシステム内に作ると、大概失敗するんですよね。。。

やりきれない事に手を出しちゃいけない

これは今回の最大の反省点。

Arrayのindexに、index以上の意味をもたせてはいけない、という自分の経験上の鉄則があって、今回のコードのGate::FARESを見た時に、反射的に「これはあかんやつや」と思って、Hashで再定義しました。

Answer by itume · Pull Request #17 · JunichiIto/train-ticket-rails · GitHub

Hashならkeyが使えるので、Arrayのindexのようにうっかり変わっちゃったりせず、*1安心安心、、、とか思ってたんですが、今回触ってはいけない事になっているviewにGate::FARESがいるので、Gate::FARESを消すことはできなかったのです。

こうなると、ご指摘の通り、二重管理しないといけなくなっちゃうのですよね。悪夢ですね。

Gate::FARESを消せない、とわかった時点で、ここに手を出すべきじゃなかった、ということです。やり遂げられないリファクタリングはやっちゃいけないです。*2

公開コードレビューに参加してみて

参加して本当に良かったです。色々感じることがありました。

実際に自分でコードを書いて、人の回答とレビューをみたり、自分のコードに対するレビューを見るのと、当日のスライドやレビュー動画だけ見るのでは全然情報量が違ってくるんじゃないかなあ、と思います。

身の回りのシステムのロジックをぼんやり考えちゃう 

降りられるかどうかの判定はGateとTicketどっちの責務?って考えてから、身の回りのシステムってどうやって動いているんだろうか?ってぼんやり考えることが多くなりました。今まではwebのことばかり考えていましたが、世の中で動いてるいろんなシステムの設計について思いを巡らせるのも面白いですね。

思った以上にいろんなコードを書く人がいる

かなり自由度を狭めた中でのコーディングだったはずなのですが、蓋を開けたら十人十色で、一つとして同じ回答がないのには本当に驚きました。同じことやるメソッドの命名も人によってそれぞれだったり、commit messageの書き方もそれぞれですね。

中には「その発想はなかった(悪い意味で)」というコードもあったりしました。*3こういう課題をエンジニア採用時に出してみたら、その人のコーディングスタイルとか、物事の捉え方とかが見えて来るのでいいかもしれないですね。

結局FARESはどうしたらいいんだろうか

jnchitoさんもREADMEでコメントされていますが、Gateが持ってるべきではないような気はするのですよね。ただじゃあどうするよ?というと、なかなか難しいですね。

  • 定数だけのmoduleにする
  • プレーンなClassにする
  • modelのconcernにする
  • テーブル作ってActiveRecord::BaseのClassにする

といった手段が取れると思います。

一番しっくり来るのはテーブルにするパターンな気がしますが、たった2種類の料金のためにテーブル作るのは明らかにやりすぎですね。

アプリケーションの規模を考えると、一旦Gateに持ってもらう、は絶妙なさじ加減ですね。テストがあるから必要ならあとでなんとでもできますしね。

 

と、いう感じでふりかえりしつつ、コード修正してpushしたら、PR openのままだったから通知飛ばしてしまったみたいで。。。スイマセン。。。

 

参加してみて良い勉強になりました。

RailsDM運営の皆様、jnchitoさん、ありがとうございました。

rails-developers-meetup.connpass.com

*1:例えば160円の特別運賃ができた時、190の後ろに入れれないとindexが変わってテストが落ちるけど、順番に並べたくなっちゃう

*2:余談ですが仕事で触ってるコードは、志半ばで放置された「リファクタリング仕掛り中コード」がいくつかあり、多くが二重管理地獄と、忘れた時にやってくる地雷と化していてかなり辛い事になってます。。。そういうコードに限ってテスト書かれてないですしね。。。はあ。。。

*3:まあ自分のやつもそうですけどねorz

Rails Developers Meetup #4の公開コードレビューにPR送ってみた

Rails Developers Meetup #4で公開コードチェックされたい

Rails Developers Meetup #4で、Everyday Railsの訳者のJunichiItoさんが公開コードレビューをしてくれる、と聞いたので、PR送ってみました。

github.com

JunichiItoさんはEveryday RailsやQiita経由でとてもお世話になっており、自分は勝手に心の師と仰いでおります。今回は心の師にコードチェックしてもらえるかも、ということでちょっとはりきってしまいました。

業務以外で人に見せるようなコードを全然書かないので、業務外でPR出すの初めてで、なんだかキンチョーしました。。。

GitHubもアカウント持ってるのに芝は枯れてるし、Railsチュートリアルと、読むためにforkしたリポジトリくらいしかなくて、「無課金ユーザーが来た」みたいなアカウントで恥ずかしいですね。。。これを機に、気になったことがあったらissueやPR送ってみるようにしようかな。。。

 

ところでEverydayRailsほんとわかりやすくて素敵です。ありがとうございます。

www.hizumizm.com

 

Rails Developers Meetup、一度も参加できてないですが、socialで共有されてる内容見てるとすごく良さそうですね。今度は参加できるといいな。

rails-developers-meetup.connpass.com

ムスタング ダイナミックビブラートのアームを変えたらアーミングが楽しくなった

60年代スタイルのムスタング トレモロアーム

ムスタングのパーツ探してMontreuxのサイト見てたら、大きく曲がっている、60年代スタイルのアームがラインナップされているのを見つけてしまいました。

商品詳細|モントルー

早速購入

この角度のアーム、ずっと探してました。

ダウン側にアーム倒す時、曲がりの少ないよくあるアームよりも大きく倒せるし、

アームの先端が内側を向いてるので手に取るのが楽なのです。

装着してみました

入手して初めて気付いたのですが、このアーム、根元のほうに溝があります。

アームを固定するネジがそこにはまるので、高さががっちりキープできるのです。

これかなり素敵な仕様です。今までのアームは使ってる間にどんどん落ちて、根元とダイナミックビブラートのプレートが接触しちゃって可動領域が下がってしまってたんですよね。凄くいいですこれ。楽しいです。

Montreux MG Stainless Arm Inch ver.2 No.8891 トレモロアーム
Montreux
売り上げランキング: 12,634

関連記事

ムスタングについて

www.hizumizm.com

ムスタング改造まとめ

www.hizumizm.com

 

アセンブリ付き格安ピックガードを買ってみた

SUGIZOさんのギターに憧れて

SUGIZOさんが最近使ってる、ナチュラルフィニッシュのストラト。

www.instagram.com

www.ikebe-gakki-pb.com

うちのGreco SE500もピックガード変えたらこんな感じにならないかなと思って、黒いパーツを探しておりました。

ピックアップ付きで1350円!

で、探し当てたのがこれ。

なんとピックアップ付いて、ポッドやスイッチの配線されている状態で1350円!

ピックガード、ピックアップカバー、ノブをバラバラに買うより安いんじゃないかというびっくり価格だったので迷わず購入しました。

届いたのがこれです。

まあフツーです。

裏側。スイッチは5点式。Fenderとかに比べると、どのパーツもやけに安っぽい感じがしますが、まあ値段的にこんなものですかね。

ピックアップの磁石に、いらないネジとバネがくっついた状態で梱包されてたものご愛嬌ですね。

裏側に磁石があって、ポールピース自体は鉄芯、ってタイプのピックアップです。

つけてみた感想

なんせ値段が値段なので、かなり満足です。

ジャックに2本と、アース線繋ぐだけなので、ハンダ苦手な私でもなんとかなりました。

安アセンブリなのでノイズひどかったりするんじゃないかと思いましたが、そんなことはなかったです。改造前のノイズがひどかっただけかもしれませんが。。。

ピックガードの形状の問題で装着できないんじゃないか、と心配してましたが、ギリギリ装着できました。ブリッジ周りがかなりギリギリでした。

ただ、ねじ穴は全然合わないので適当にあけ直しました。ネジ足りてないけど気にしない。

音は、期待しなければ裏切られることもない、という程度です。

夏だし、家にこもって楽しく工作するには丁度いい材料ですね。

SUGIZOさんのN-STと比べると、ピックアップは普通のシングルだし、木目もアッシュとセンでは違うな、とは思いますが、雰囲気近くなったのでよしとします。

関連記事

ピックガードの交換方法

ギタークロスを駆使して、ギターを傷つけないようにやりました。

www.hizumizm.com

Greco SE500

この記事書いたすぐあとで改造しちゃいました。。。

www.hizumizm.com

 

Greco SE500 改めて弾いてみると結構いい音かも

Greco SE500 1976

私が初めて手にしたギター。叔父さんから譲ってもらってもらいました。

久々に弾いてみたら、なんだかいい音するな、って気がしたので紹介してみます。

どんなモデルなのか?

SE500は発売当時5万円代だったと聞いたことがあります。(だからきっと"500"00なんでしょうね。)80年代の大卒初任給が10万円くらいだったらしいので、今の物価で言えば10万円はしないかな、くらいなのかな。。国産で10万いかないくらい、というと、現行モデルだとこんな感じ。

Fender Japan Exclusive Classic 70s Strat Ash/Natural ストラトキャスター (フェンダー)

ネックを詳しく見る

6弦の左側、6〜5弦、4〜2弦、1弦、Grecoのロゴ乗ってるあたり、で、5種類の木目が見えてるの、わかります?

こんなヘッド今まで他に見たことないですw。特に6弦側の隅っこのところとか、なんとかならなかったもんですかね。

40年経っても欠けたりしないので、全然良いのですけど、見た目アレな感じですね。

ネック部分も3本の木が継いであります。SEシリーズでもグレード高い奴は1本だったりするのですかね。あと、指板は貼りメイプルです。なのでスカンクストライプは入ってないです。

音について

よく言えば暖かみのある、悪く言えばもわん、とした音が、自分はあまり好きではありませんでした。それゆえリアにジャガーのピックアップをつけてみたりしました。

最近、RubyRedBooster使ったらもわん、とした感じが取れて好みの音が作れたので、またガンガン弾くようになりました。

↓の動画、同じ年に作られたほぼ同じモデルと思われます。いい音出てますね。


Demo of my vintage 76 GRECO Strat, clone of 68 Fender

トレモロについて

6点支持なので可動範囲は狭いですが、普通に使えます。

ただ、アームはねじこむだけで、バネなど入っていないので常にぶらんぶらんしてて、使いたい時に掴みむのがちょっと面倒です。

このトレモロ、昔は使うたびにチューニンク狂いまくっていたんですけど、弦の巻き方、チューニングの仕方、トレモロの調整に慣れてきたのか、今では全然狂わないようになりました。

ムスタングのおかげで随分トレモロの扱いに慣れてきた気がしますw

 

関連記事

Ruby Red Booster

クリーンブースターと言えばepが有名ですが、自分はこれをジャケ買いしてしまいました。凄く気持ちいい音が出ます。

www.hizumizm.com

AXL Guiters AL-820

安ギターといえば、AL-820を購入したことありました。見た目は特徴的で面白いけど、細部の作りは雑でした。その点SE500はどう見てもしっかり作ってあるギターです。作りの差は、40年経ってもフツーに使えてることで証明されてる気がします。

www.hizumizm.com

LINE6 Variax700

これも新品のフェンジャパより安いくらいの値段で転がってましたが、フジゲンが作ってるそうでかなりいい感じの作りな上に、Variax機能搭載されてて、かなりお得なギターなんじゃないかと私は思ってます。

www.hizumizm.com