DDDとClean Architectureの対応関係について
まず何より、DDDとClean Architectureそれぞれの指向性の違いを把握しておいた方がいいと思う。
DDDはアプリケーション層(Clean Architectureでいう「UseCase層」)の内部、つまりドメイン層の表現を豊かにするための手法だと僕は捉えている。ドメイン層の独立性の担保のために仕方なく他のレイヤも大雑把に分割している、くらいに思っておいた方がいい。特にインフラ層とプレゼンテーション層にドメイン層ほどの厳密な説明がないのは、DDDが採用される多くのケースはある程度ドメインが見えてきているほどシステムやビジネスが成熟してきている時が(エヴァンス本執筆当時)多かったので、プレゼンテーション層を作り直すようなリファクタリングはドラスティック過ぎるので、アプリケーション層とドメイン層の再分析・再設計に多くのリソースが割かれたからではないだろうか。
一方のClean ArchitectureはUseCase層(DDDでいう「アプリケーション層」)の外部、つまりFrameworks&Drivers層とInterface Adapters層までいかにユニットテストが書けるくらい責務を分割するか、というところに焦点が当たっていると僕は捉えている。なので、Entities層の独立性や表現云々ではなく、それぞれの責務に応じて機能の分割を行えば、必然的に各レイヤは独立するだろう、くらいのニュアンスではないだろうか。
僕は上記のような捉え方をしているので、アーキテクチャや実装方針を話す時にDDDの言葉だけで進めると不明な点がたくさんでてくると思うし、業務を正確に理解する時にアーキテクチャに拘ってClean Architectureの言葉でしか話せないと、深い理解にはつながらないと思っている。それこそ両者は似てるとはいえコンテキストが違うので、似た単語が中にあったとしてもあまり緻密な対応付けをしても双方の理解には大きくは貢献しないんではないだろうか。
因みに僕はDDDとClean Architectureをどう区別しているかと言うと、機能実装をする時にユースケースはDDDの手法を使って分析・記述して、その外側はClean Architectureを意識した実装になるように心がけている。これなら双方のいいところを残せる上に不明瞭な箇所をカバーしあえるので、精度の高い設計や実装を目指すことができるんではないか、と僕は勝手に信じている。
以下は蛇足。
Clean Architectureの本を読んだことで、寧ろDDDの目的がより鮮明になったな。
— Taiyoh Tanaka (@ttaiyoh) 2018年12月13日
ドメイン層のモデリング(とその周辺)をやるときはDDDの方がツールが豊富なのでそっちを使って、それ以外はシンプルで説明しやすいClean Architectureに寄せようというのが最近の僕の中での風潮
ソフトウェア開発における設計手法やテクニックはDDDとClean Architectureの組み合わせがフルセットだと僕は思ってて、そこから何を差し引いたのがその開発チームにおける合意点となってるのか、という観点に割と興味がある
— Taiyoh Tanaka (@ttaiyoh) 2018年11月25日
自作キーボードとDvorakと私
この記事はSmartDrive社員が綴るアドベントカレンダー「SmartDrive Advent Calendar 2018」の13日目の記事となります。
Agenda
- きっかけは転職から
- Ergo42を組んだ
- Dvorak配列へ
きっかけは転職から
9月1日付けで株式会社スマートドライブに入社しました。よろしくお願いします。
6月(前職中)、退職の諸々の連絡をして僕の視点からは各方面から割とあっさりと了承してもらったので、意気揚々としておりました。退職はなんだかんだ言って一つの区切りなので、何か自分へのご褒美を買おうかなと考えていたところ、ふと「分割キーボードが欲しいな」と思いつきました。
同時に、転職先のSmartDriveはIoT関連のスタートアップでありデバイスを扱ってることを思い出し、折角なら以前からtwitterのTL上でたまに目にしていた「自作キーボード」なるもので分割キーボードを自作するのが一番エキサイティングではないか!?と思うに至りました。
Ergo42を組んだ
この辺のドタバタはブログ記事を書いてました。
Ergo42を組み立てています(そしてどうやら失敗しています) - taiyoh's memorandum
Ergo42が遂に組みあがりました - taiyoh's memorandum
今日の机の上 pic.twitter.com/gFcDyBobbY
— Taiyoh Tanaka (@ttaiyoh) 2018年9月18日
(本当はHelixも組もうとしていたのですが、ハンダ付けでかなり色々なところをミスってたことに気づき、その後の自作キーボード作成の際の反省とさせてもらいました。すいません><)
実はこの後Fortitude60も組んだのですが、macbook proのキーボード(QWERTY)・Ergo42(Dvorak)・Fortitude60(QWERTY)と3つ平行して使ってみたら頭の中がだいぶ混乱してしまったので、今はメインはErgo42を使用し、ミーティング等で席を離れるときはmacbook proのキーボードを使用しています。
Ergo42はかなり使用感がよく、キー数はがっつり減ったとはいえ必要に応じて追加できる余地があるので、かなり気に入ってます。
また、これを作ったときは僕のハンダ技術がたりなかったために時々接触不良を起こすので、「開腹手術」をしてすぐに直せるのもよいですね。
Dvorak配列へ
10年以上前からDvorak配列自体は知ってましたが、以下の理由から大人しくQWERTYを使っていました。
- 多くの市販PCやキーボードはQWERTY前提のキー配列となってることが多く、そこを無理やり変えてまでDvorakを採用するモチベーションがなかった
- ソフトウェア的に配列を変えて、キーキャップに印字されてる文字と出力される文字が違うのは抵抗があった
- MXキースイッチのキーボードを買っていたので試してみたが、列ごとにProfileが違うため、QWERTY以外の配列に並べるとちぐはぐになった
が、自作キーボードというか同じProfileのキーキャップを使える環境なら、自由に自分の思い通りのキー配列が設定できるため(これはqmk_firmwareの存在も大きいですね)、8月の夏休み期間(有給消化とも言う)に思い切って乗り換えることを決めました。
夏休み中は小さなGo製のアプリケーションを試しに作っていて、そこでGoでのプログラミングの勉強をしていたのですが、Go自体もあまり慣れてないしDvorakもおぼつかないので、かなりストレスフルでした。
が、最初は0.5key/secくらいだったのが徐々に1key/secになり(よくそれで仕事回してたよな、というツッコミはありますが)、最近はやっと内容によっては3〜4key/sec(肌感)くらい出せるようになりました。が、まだ配列に慣れてないっぽく、特に日本語入力時のミスタッチはかなり多いのでそれは改善したい。。。
8月からDvorakを使い始めたので4ヶ月以上経ってるので、Dvorakの感想を。
まとめ
- 自作キーボードは長年の夢を叶えさせてくれる
- QWERTY以外の配列を覚えるとボケ防止になる
- SmartDriveではエンジニアを募集してます!
2018年を振り返る
この記事はカヤックOBが綴るアドベントカレンダー「ex-KAYAC Advent Calendar 2018」の11日目の記事となります。
この一年何してたか
- Lobi Tournament @ KAYAC(〜7月)
- IoT device platform @ SmartDrive(9月〜)
本記事は技術エントリではなく、一年の振り返りと今更転職報告を兼ねたものです。
Lobi Tournament @ KAYAC
前職で最後に関わっていたのは、PvPタイトルでの大会作成・運営を支援するLobi Tournamentというプロダクトでした。このプロダクトでは2017年3月頃から僕の鶴の一声でドメイン駆動設計の勉強と実践に取り組むことを決め、開発メンバーで当時思いつく限りの手法を試しまくるDDDの大実験場と化していました。
敢えて機能単位でサブコンテキストの分割を行い、コンテキスト間の繋ぎ込みのためのACLの実装方法を試したり、集約を跨ぐが結果整合性が伴えばよい処理はドメインイベントとしてアーキテクティングしてみるとか、IDDD本内の付録以外のことは曲りなりにも手を出してみたつもりです。
プロダクトはLL言語(Perl!)なのに同じチームの後輩がinterface的な役割を持ったクラスを定義したことがあり、流石にそれはtoo matchだとは思ったんですが、おかげでオニオンアーキテクチャについて理解が深まったという一面もあります。
あとLobi Tournamentは前年からGraphQLの採用も始め、GraphQLのtype定義とDDDにおける集約はだいぶ親和性高いなぁ、と使いながら思ってました。GraphQLはqueryだけでなくmutationも使っていて、普通にRPC的に使ってました。subscriptionは構想まであったけど手が出せなかった(その前に僕が転職した)です。
何故か最終出社後に「最後に何か話してくれ」と言われたので、Lobi TournamentでDDDやGraphQLを採用した経緯なんかを話しつつ「まず先人たちのレールに乗っかって、その上で自分たちなりの手法や取捨選択をすればいいのでは」という話をしました。
僕自身、DDDに触れるまでソフトウェア設計の守破離の「守」すら知らなかったようなものなので、DDDやClean Architectureのような「前提知識」があると、アーキテクティングや設計時に何かを判断する時に本当に助けになる、ということを身を持って知ることができました。
ただ、何でもかんでもうまくいってたなんてことはなかったです。特にレイヤードアーキテクチャはある程度事前知識がないとキャッチアップが難しく、いくら「ここでこう書いてるようにやればいいよ」と言ってもなかなか思うように進まなかったということは何度もありました。また、僕と周囲のDDDに対する温度感も違っていたりして、独りよがりだということを指摘を受けて今では反省しています。
なお余談ですが、DDDの勉強を始めて半年くらいの時点の知識というか思いの丈を以前エントリにまとめてました。
この記事で触れてる某Mカリに行った後輩(というか自分にとっては先生ですね)には今でも感謝してます。
DDDを勉強してある程度自信がついたことで、「この会社でまだ学ぶことがある」から「学びたいことはどこでも学べる」という気持ちに切り替わったというのは、転職に至る大きな原動力になりました。
(転職活動中にとあるDDDを実践してる会社さんに伺って話をしていて「DDDのこと、結構分かってそうですね」と言ってもらえたり、4月に開催されたDDD交流会にて、結構いい感じで他の参加者と話が出来たのが自信になった)
IoT device platform @ SmartDrive
何年か前くらいからぼんやりとゲームや広告とは無縁の事業に関わることに関心を持ち始めていて、IoTもそうした「別の関心ごと」の一つでした。
「カヤックだったら何でもできるじゃん」みたいな意見はあるとは思いますが、そろそろ事業部間異動はいいかなー、外の世界も見てみたいなー、という思いが強くなって転職するという道を選びました。去年末からいくつかの転職サイトでの活動を少しずつ始め、お声がけいただいた会社の中から興味の湧いた会社何社かに話を聞きに行き、そのなかで一番お互いに手応えが良く9月に転職したのがSmartDriveでした。
SmartDriveではGo(Gin)とRuby(Rails)で事業が展開されています。が、僕はどちらも業務でまともに書いたことがなかったので、正直よく入社できたよな、と我ながら関心してしまっています。
あ゙っ・・・!?
— 賭博就職録 キャリアカウンセラーカイジ (@black_kaiji) 2018年11月1日
Perl…?
このエンジニア…
面接での「使える言語は?」の質問に…
答えてきおった…
Perlと…!!
使わん…!Perlなど絶対に……!
ほら見ろ…CTOの顔もひきつっている…
いやさすがに
使えるはず…他の言語も…
多少は…
「Perlだけです」
ぐががっ!
採用……見送りっ…
使える言語はマジでこんな感じだったけど見送られなくてよかった〜〜〜〜😂
面接等は終始和やかだったと思っています!
実際のところはオファーを提示される前に体験入社を一日行っていて、そこで実際に動いているコードを触らせてもらってました。そこで出されたお題に対してPRを作るというものだったので、実際のコーディング能力も採用時に把握されています。
体験入社の制度はいいですね。採用側が相手の能力を見ることができるだけでなく、エントリーした側もどういうコードで実装されているのかを確認できるので、入社後に初めてコードを見て「なんじゃこりゃあ!」という事態を避けることができると僕は思っています。そういえば、SmartHRさんでも体験入社の制度が整備されているそうですね。
→ エンジニア向けの体験入社制度ができました - SmartHR Tech Blog
現職は正直なところ、ここまで至れり尽くせりではないですね。。。ただ、「体験入社」という仕組み自体はもっと広まってもいいのかな、と思っています。
因みに、カヤック時代と比べて生活がどう変わったかと言うと。。。
- 通勤時間
- めっちゃ伸びた(1時間半〜2時間弱)
- 暇なので本読んだりポッドキャスト聞いたりする時間にあててる
- 早く帰ろうと思ったら満員電車に重なり、遅く帰ると妻にも迷惑がかかるというちょっと板挟み的な状況
- オフィスアメニティ
- WeWorkさまさまです!
- 空調はちょっと残念かも
- ドリップコーヒー、ティーパックが(ほぼ)飲み放題
- 蛇口から出る水が恐らく浄水
- 昼になったらビールサーバーが解禁になる
- 帰り際に一杯飲んでから、なんてことができる
- WeWorkさまさまです!
- 飯事情
- そこそこ美味く、そこそこ安い店が多い
- ただ、僕は普段は弁当。。。
- 弊社では毎週水曜日はケータリングサービス使って社員数人でのグループランチを美味しく戴いてます
- 周辺環境
- 職場の空気
- 口調が穏やかな人が多いからか、近くで会話しててもそんなに気が散らない
- 多分、僕はうるさい。。。
- times文化が強い
- 口調が穏やかな人が多いからか、近くで会話しててもそんなに気が散らない
いつぞやのグループランチ www.instagram.com
現職でもDDD関連の勉強というか情報収集や実践は続けています。
最近新機能開発に携わっていたのですが、既存実装に影響がないことを条件にClean Architectureの採用をシニアエンジニアに許可もらったので、ドメイン層はDDDを意識してモデリングを行い、RepositoryやUseCase等の層はClean Architectureをだいぶ意識して実装しました。
Clean Architecture 達人に学ぶソフトウェアの構造と設計
- 作者: Robert C.Martin,角征典,高木正弘
- 出版社/メーカー: KADOKAWA
- 発売日: 2018/07/27
- メディア: 単行本
- この商品を含むブログを見る
この新機能実装については、折を見てどこかで触れる予定です。
また、とりあえずこれでGoでドメインモデリングを伴う実装に対して実績が出来たので、まず社内で知見を共有していきたいと思います。
Ergo42が遂に組みあがりました
承前↓
問題点の絞り込みと対処法について
twitterに細かく情報をのっけて行く形だとちょっとあれだな、と思ったので、一旦ブログに現状をまとめてみたところ、作者のBiaccoさんに読んでいただくことができました。
読んでいただきありがとうございます!おおお、対処できそうなんですね。僕ももうちょっとPro Microの近辺のはんだ付けは見直してみたいと思います。
— Taiyoh Tanaka (@ttaiyoh) 2018年7月24日
ありがとうございます!やってみますー
— Taiyoh Tanaka (@ttaiyoh) 2018年7月24日
半田をつけたり外したりしてテスターをあててみましたが、導通は確認できませんでした。。。他のピンでも導通を試してみたので、恐らく教えていただいたところで合ってそうに思いました。
— Taiyoh Tanaka (@ttaiyoh) 2018年7月24日
Pro Microを一度外した時に傷ついてたのかな。。。あとは基盤の外でワイヤリングするとかでしょうか
家にあったワイヤを使ってキースイッチのピンとPro Microを繋いでみたところ、一列全部のキー入力が確認できました!なので、ちゃんと半田付けして完成させます。色々アドバイスいただき、ありがとうございました!!
— Taiyoh Tanaka (@ttaiyoh) 2018年7月25日
実際のワイヤリングはどのようにやったか
当初はこのようなワイヤリングで導通させていましたが、いざケースのネジを締めて少し使ってみると、部分的にスイッチの半田が圧迫されるのか、キーが効かなくなってしまいました。 あれこれ考えて、もっと簡素化できる方法を思いついたので、バージョン2のワイヤリングをやってみました。
これなら圧迫もなく、無事に全部のキー入力が確認できました!因みにこの黄色いワイヤは、元々はブレッドボード用の硬いジャンパーワイヤですね。持っててよかった。
そして。。。
うおおおお #Ergo42 pic.twitter.com/l8ZplUiHyQ
— Taiyoh Tanaka (@ttaiyoh) 2018年7月25日
慣れないながらもちゃんと打つことができて、感動ですね。。。
キーマップについて
デフォルトのキーマップは、初めて分割キーボードに手を出した自分にとっては結構使いやすかったです。
でもやっぱり、自作キーボードに手を出した以上はもっと自分の好みを反映したいな、と思ったので、以下のキーマップを作成しました。
gist957d0e08b81c69d0c1cdda621f7debc4
当初は7列をフルに使うことを想定していて、妄想ではこういうキーマップを当初想定していました
が、いざこれを書き出して打ってみると、1列目と7列目のキーを押すのはだいぶしんどいと気づき、あえなく撃沈。
しばらく色々試していて見えてきたのは、特に僕の場合、意識せずに伸ばせる指の範囲は6列分までだということでした。
これを踏まえ、以下のようなルールを作ってみました
- Tab, Ctrl, Shiftは内側に、そして左側に1つずつあればいい
- ESC, LGUIは使用頻度が低いか、Tab, Ctrlとの組み合わせで使うことが圧倒的に多いので外側でいい
- Dvorak配列も試してみたいので、Dvorakで明確に配置されているキーは必ず上3行の中に収める
- META / SYMBで記号が打てならそちらに任せる
- 無理にデフォルトキーマップの全キーを埋める必要はないだろう
- 矢印キーはvimキーバインドに倣って「←↓↑→」の並びに
- 手首に近いところにはよく使うキーは配置しない
これらを実際の配列に落とし込んだのが上記のキーマップです。
backspaceを右手親指で扱うというのはだいぶイレギュラーかも。でもまあ、しばらく使っていたら段々慣れつつあります。
qwertyとdvorakを共存させるにあたり、2点ほど気を付けたことがあります。
- META / SYMBよりレイヤ番号を低くする
config.h
に#define PREVENT_STUCK_MODIFIERS
をつける
の記事より、定数を定義しておくことでmodifierキーのロックを防ぐことができます。また、dvorakのレイヤ番号をqwertyを配置しているdefault layerの次に低くしておくことで、default layerのキーを引き継げるだけでなく、上のレイヤのキーを利用することができます。なお、上記キーマップではqwerty→dvorakへの変換ですが、dvorak→qwertyに戻す際は、METAからソフトウェアリセットをかければいいようにしています。
ファームウェアへの書き込みについて
自作キーボードを組み立ててる方々はMac使いが多く、Windowsでの情報が少ないように感じたので、自分のやったことと所感を載せておきます。
始めに書いておくと、僕はWSL(Windows Subsystem for Linux)とqmk toolboxを併用しています。
なぜMingwでの環境構築がおススメされているかというと、makeコマンド一発で(make ergo42/rev1:<keymap>:avrdude
と入力すれば)ファームウェアへの書き込みまで行うことができるからです。
ただ、僕は諸々の開発環境をWSL上で既に作ってしまっているので、今更Mingwで環境を作り直すのが面倒くさく、こういう方式を採ることにしました。
その場合、 make ergo42/rev1:<keymap>
とmakeの引数を調整すれば、WSL内でビルドまではやってくれます。あとはqmk toolboxでのhexファイルの読み込み先をビルド先に指定すればよいです。
最後に
特に僕みたいに初めてまともな電子工作をする人にとって、既製品を買うのに比べてだいぶお金も労力もかかってしまうのは間違いないです。
が、作りきった時の達成感は尋常じゃないですし、自分にとって必要なものだけがまとまっているキーボードというのは格別ですね。
因みにこのエントリは当然ながら、Ergo42+上記の自前キーマップで書いております。書いてるうちに少しずつキー入力の速度が上がってるのがなんか面白い。
いやそれにしても、キースイッチの押し心地はいいし、キーキャップの色は自分で好きなように変えられるし、配列に不満があれば変えればいいし、分割キーボードは肩回りの負担が確かに少ないし、これはちょっとハマりそうですね。。。!
Ergo42を組み立てています(そしてどうやら失敗しています)
[追記 2018-07-27] 組みあがりました
[/追記]
最近突如として自作キーボードに興味が出てきて、電子工作のスキルなんて全然ないのに道具を揃えてErgo42を組み立ててみることにしました。 (作者のBiacco42さん、ありがとうございます!)
組み立て手順については、qiitaにある組み立てログを参考に作業を進めていました。
ただ、Pro Microの右側の取り付けで盛大にミスをしてしまい、左側と同じ付け方をしてしまいました。 (チップやLEDが見える方を上側にしてしまった) なので慌ててスプリングピンヘッダを切って無理矢理取り外し、Pro MicroもAmazonでほぼ同じものを購入し、正しい向きにした状態で改めて装着しました。
そんなこんなでキースイッチを全部半田付けしていざ試してみたところ、右側のキーボードの左から2番目の縦一列(デフォルトのキーマップで言う「U」「J」「M」「'」)のキーが全て効かない状態になっております。。。 以下、自分なりにトラブルシュートを行ってみました。
- 4つのスイッチを全部差し替えてみましたが、特に挙動に変化はありませんでした
- テスターで導通チェックをしてみましたが、絶縁状態にはなってないようでした
- ダイオードの向きも問題ないようです
- 右側のファームウェア書き込みのついでにいくつかキーを打ってみて、やはり当該のキーだけ打てませんでした
- 左側との連係ミスとは考えづらい
となると、あと考えられるのは
- Pro Microを外した時に必要以上に強い力がかかった
- 目視する限り、基盤には影響はなさそうでした
- ニッパーでスプリングピンヘッダを外す時に一部エッチングが削れてしまったというのはあります
- 半田と半田ごての扱いが未熟でPro Microを痛めた
ですかね。。。 自分のスキルを差し置いて希望だけ書いておくと、Pro Microを使ったキーボードで縦一列が使えなくなる、というのがよくある失敗パターンとしてあって、何かをやり直したら解決する、だといいなぁ。 そうじゃないとしたら、もう1セット買って右側を作り直すしかなさそうですね。。。
左側は全キー問題なさそうなので、キーキャップまで全部着けました。パステル系のキーキャップを買ったので予想通りかわいい。
この左から二番目の縦一列が全滅です。因みにキースイッチはkailh pro purpleです。打ち心地いいですねこれ。
右側のPro Microを上から見たところです。
右側のキーボードを基盤裏から見た図です。
Docker for Windows 18.03で/var/run/docker.sockがマウントできなくなってた
sqsdの最近のアップデートについて
以前「作った」と書いたsqsdについて↓ taiyoh.hatenablog.com
最近これのバージョンアップを頻繁に行っている。
Release v0.0.4 · taiyoh/sqsd · GitHub
v0.0.3~v0.0.4の差分
社内のgoの達人方にレビューしてもらい、channel capacityを導入したところコードの見通しがものすごく良くなったので、v0.0.4として一旦リリース。
workerに送るqueueをchannelによってブロックできるようにすることで、余計なmutex等を入れずに安全にqueueをworkerに送れるようになった。
このシーケンス図を同僚に見せたところ、「これは producer-consumerパターン
で書くといいですね」というコメントをもらう。
Release v0.0.5 · taiyoh/sqsd · GitHub
producer-consumerパターンは自分の中で咀嚼が必要だったので、一旦保留。
そろそろログ周りを整理したかったので、このQiitaの記事を読んで hashicorp/logutilsを入れることにした
この時点では構造化ログまでは必要ないと思っていて、ログレベルが調整できればいいと考えていた。
Release v0.5.0 · taiyoh/sqsd · GitHub
producer-consumerパターンがやっと自分の中で咀嚼できたのでリファクタリングを開始。やってみたところ、今までJob
という名前のstructがqueue自体の保持だけでなくconsumerの責務も負っていることが分かったので、それを分離したところ、それだけでほぼproducer-consumerパターンといえる組み方ができてしまった。あとはそのデザインパターンを適用していることを示すためにJob
やWorker
という言葉は避け、producer
やconsumer
という言葉を使うことにした。
デザインパターンの適用をはっきり見せることができたので、βクオリティということを示したいのでバージョンを思い切って上げることにした。
Release v0.6.1 · taiyoh/sqsd · GitHub
SQSのqueue urlの構築をパラメータから行うようにしてしまったため、例えばローカルで開発する時など、awsに飛ばないようにしなくてはいけない。
そのため、強制的にURLを指定できるようにもした。
また、実際にプロダクトに投入される時のことを想像したとき、万が一workerの起動が遅かった時、queueの取得が先に行われてしまうとvisibility timeoutが発生してしまうのではないか、ということに気づいた。その解決策として、producerの起動前にhealthcheck用のエンドポイントにリクエストを行い、その時のレスポンスコードが200を返したときにworkerの準備ができたとみなすことにした。それが済むまで、SQSへのqueueの取得は行わない。healthcheckに対してはexponential backoffアルゴリズムに従ってリトライを行い、これが規定の秒数に達しても200が返せないときはsqsdごと落とすようにした。この挙動はconfに healthcheck
というセクションが定義されている時のみ行われる。optionalとしているが、なるべく定義した方がいいのでは、と考えている。
Release v0.7.0 · taiyoh/sqsd · GitHub
queueの取得の性能について以前からぼんやり気になっていたので調べていたところ、上記URLに答えが書いてあった。(当然金はかかるが)ガンガンリクエストして取りに来てくれ、ということのようなので、遠慮なく一度に複数リクエストを投げられるようにした。v0.0.4の時にchannel capacityの対応を入れていたおかげで、投入部分は何も気にすることなく対応できたのがとてもよかった。
取り急ぎどうしても必要そうな更新は終わったつもりだが、これからまだまだ必要な機能実装はあるかもしれない。直近ではログの構造化を考えている。
また、イケてない箇所は優しくissueをいただけますと :pray: