ミレストのサイドバックルバックパックが最高だった

このところずっとリュックを探していて、色々なリュックを試してはしっくり来ないを繰り返すリュック沼に陥っていたのですが、やっと理想と思えるリュックを見つけました。

ミレストの店頭でたまたま見つけた LIKID サイドバックルバックパック です。

リュックを選ぶときに重視していたのは主に以下でした。

  • デザインがシンプルなこと
  • バッグ自体が軽く、背負ったときに肩が楽なこと
  • メイン収納の他に使いやすい収納ポケットがあること

このリュックは全て満たしており、店頭で実際に試着して背負いやすかったので店頭で即決しました。

仕様

  • サイズ: W310mm×H420mm×D120mm
  • 重量: 660g
  • PC収納可能サイズ:13インチ
  • 公式価格: 9,900円 (税込)

このバッグの良いところ

このバッグの良いと思ったところや好きなところを挙げていきます。

防水加工

リュック本体には防水加工が施されており、ファスナーは全て止水ジップになっています。

サイドの外ポケットの下部には排水のための小さな穴が空いており、かなり防水性の高い作りになっていると思います。

機能性を兼ね備えたシンプルなデザイン

公式で「アウトドアで使える機能にフォーカスしたバックパック」と紹介されているように様々な機能が備わっている反面、全体的にマットで落ち着いた質感でまとまっています。カジュアルすぎずドレスすぎない、バランスの取れたデザインになっていると思います。

ブランドロゴの印字が控えめな点も好印象です。

サイズ感としては無印良品の定番リュックの肩の負担を軽くするリュックサックよりも僅かに小ぶりな感じ。ころっとしたサイズでかわいいです。

背負ったときに肩が楽なこと

肩ひもの生地はしっかりしており、それでいて程よい柔らかさがあり、個人的にはとても肩が楽です。

今までは重いものを入れて歩いていると肩が凝っていたのですが、このリュックに変えてからはそれが無いです。これなら常時カメラを入れて持ち歩いても良いかなと思えるくらい。

リュック本体が軽いこと

700g 以下に収まっており軽量です。持ったときの第一印象が軽い!でした。

自立すること

リュック本体は型崩れしにくく、安定して自立します。

肩ひもが勝手に緩まないこと

背負った時などに肩ひもが勝手に緩んでしまうと地味にストレスですが、このリュックの肩ひもを調節する部分は意図的に固く作られていて、背負ったりするときに勝手に緩まりにくくなっています。

バッグハンガーとの相性が良いこと

飲食店など行ったときにバッグを床置きしたくないのでバッグハンガーの Clipa 2 を使っていますが、リュックのサイズが縦長だったり机が低かったりすると床にバッグがついてしまうことがありました。

このリュックは小ぶりなのでそういった心配はほぼ無いと思います。

チェストストラップを取り付けられること

このリュックにはチェストストラップは付属していませんが、肩ひものところにチェストストラップを通せる輪っか(?)があるので後付けできます。

なで肩だからなのか油断してると肩ひもが落ちてしまうことがあるのですが、チェストストラップがあれば安心して歩けます。

上部にポケットがあること

バッグ上部に小さめのタブレットが入るくらいのサイズのポケットがあり、電車で前に抱えて背負ったときなどに重宝しそうです。

背面に背負ったまま物を出し入れできるポケットがあること

バッグの背面には背負ったまま物を出し入れできるポケットがあります。

スマートフォンは余裕で入るサイズです。長財布も一応入りますが、サイズによっては出し入れしにくいと思います。

また、両サイドにも大きめのポケットがあります。入り口の幅は絞って調整できます。

前面にポケットが無いこと

前面に使いやすいポケットがあるリュックは沢山ありますし実際に使ったこともありますが、チャックを閉め忘れたまま歩いていてヒヤッとした経験が何度かあったため、個人的には前面にポケットが無い点は利点です。

アクセス性の良いポケットが前面にあると盗難が心配になってしまいます。使いやすさとセキュリティのどちらを重視どちらを優先するか次第だと思います。

物を吊るせるギミックが多いこと

丸カンやカラビナを通せる穴が多数あります。Bluetooth ヘッドホンなどの小物を吊るしたり、幅広い使い方が出来そうです。

他の人と被りにくいこと

ミレストは日本のトラベル系ブランドですが、リュックブランドとしてはそこまでメジャーではないので、他の人とも被りにくいと思います。店舗もそんなに多くなくてこんな感じ。ちなみに私は渋谷ヒカリエのミレストで見つけて購入しました。

手に取りやすい価格

メジャーなブランドのリュックは2万円前後するものも珍しくないですが、このリュックは1万円以下で購入できます。

残念なところ

残念なところは一つだけあります。

ファスナーが固いこと

防水ジップなので仕方ないですがファスナーが固いです。特にメイン収納のファスナーは閉めにくく、コツを掴むまで大変でした。

ファスナーに引き手 (こういうやつ) を付ければある程度は改善されます。

店頭での試着時のコツとか

このリュックに限らず、試着するときはなるべく実際の使用時に近い状態でした方が良いと思いました。

例えば…

  • 肩ひもの長さを調整して試着する
  • 重いものを入れた状態で試着する(店によりますが店員にお願いすれば重りを入れてくれたりします)

まとめ

ここまで書いてみて改めてよく考え込まれた使いやすいリュックだと思いました。大事にしていこうと思います!

[Bash] 並列数を制限しつつコマンドを並列実行するパターン

次のスクリプトは1回1秒かかるコマンド(関数)を単純に直列実行する例です。ループで10回実行するため、全て終わるまでに10秒かかります。

sleep_then_echo() {
  sleep 1
  echo $1
}

for i in $(seq 1 10); do
  sleep_then_echo $i
done

これを並列実行して速くする方法を考えてみます。

並列数を無制限にバックグラウンドジョブとして並列実行する場合

これを &wait を使って並列実行すれば、10並列で実行されるため約1秒で終わります。

sleep_then_echo() {
  sleep 1
  echo $1
}

for i in $(seq 1 10); do
  sleep_then_echo $i &
done

wait

時間のかかるコマンドの末尾に & を付けることでバックグラウンドジョブとして非同期に実行し、wait コマンドで実行中の全てのジョブが終了するまで待機しています。

並列数を制限しつつバックグラウンドジョブとして並列実行するパターン

&wait だけで手軽に並列実行の恩恵を受けられますが、もし並列実行する処理が重たいものだった場合、並列数を多くしすぎると実行負荷が上がり、逆に遅くなったり不安定になる場合があります。

こういった場合は次のようにして並列数を制限することで、安定して実行できるようになります。10回のループを5並列に実行するため、約2秒で終わります。

# 同時実行するジョブの最大数
MAX_CONCURRENT_JOBS=5

sleep_then_echo() {
  sleep 1
  echo $1
}

# 実行しているジョブ数を出力する
running_jobs_count() {
  # -r は running のジョブだけを出力するオプション
  jobs -r | wc -l
}

for i in $(seq 1 10); do
  # 実行しているジョブが最大数に達している場合は終了を待機する
  while (( $(running_jobs_count) >= MAX_CONCURRENT_JOBS )); do
    sleep 1
  done

  sleep_then_echo $i &
done

wait

ちなみに各ジョブの成功可否 (exit code) を判定したい場合は、もう少し書き方を工夫する必要があります。

xargs で並列数を制限しつつ並列実行するパターン

for を使わないパターンとして、xargs -P number でも手軽に並列実行ができます。-P オプションで並列実行するプロセス数を指定できます。次のスクリプトは10回のループを5並列に実行するため、約2秒で終わります。

sleep_then_echo() {
  sleep 1
  echo $1
}

# xargs で起動した子プロセスからも関数を使用出来るようにする
export -f sleep_then_echo

# sh -c ではなく bash -c としないと環境によって期待通りに動作しない点に注意
seq 1 10 | xargs -I@ -P5 -n1 bash -c "sleep_then_echo @"

また、こちらの方法は並列実行した各コマンドのいずれかが失敗した場合、xargs の exit code も1以上(失敗)になります。

そのため set -eo pipefail しておくだけでお手軽にエラーハンドリングができる点もメリットです。(参考: シェルスクリプトを高級言語のような書き味に近づける Tips 集

感想

for で並列実行するパターンは説明的なスクリプトを書きやすいところがメリットだと思います。

xargs を使うパターンはオプションで並列数を指定するだけなので簡潔かつエラー検知も容易ですが、xargs の挙動やオプションを理解して使う必要があります。

また GNU parallel を使う方法もありますが、こちらは別途インストールが必要なので割愛。

GitHub が公開した Rails の DB アダプタ「trilogy」の特徴を調べた

Ruby on Rails の MySQL アダプタは現状 mysql2 gem が最もメジャーだと思いますが、社内チャットで以下の記事を見かけて GitHub が Ruby on Rails 向けの MySQL アダプタを公開していたことを知ったので、その特徴を軽く調べました。

trilogy の特徴

  • libmariadb / libmysqlclient への依存の回避
    • mysql2 gem と比較してインストールが容易
  • ActiveRecord アダプタもリリースされている (github/activerecord-trilogy-adapter)
    • Requirements Ruby 2.7 or higher
  • ネットワークパケット構築・解析のメモリ効率の向上
  • 動的メモリ割り当てによるメモリ効率の向上
  • 独自の低レベルネットワークプロトコル実装
  • implemented in C
  • MIT license

所感

2015年から GitHub 社内で使用されていたものがオープンソースとして公開されたもので、まだ GitHub 社外での利用実績は少なく、ライブラリが枯れるまでしばらくは待ちが懸命と思われます。

開発の経緯としては外部ライブラリへの依存を減らし、mysql2 gem よりも移植性と効率性を高めたい狙いがあったようです。個人的には注目。

関連