akinobu-music’s diary

記事作成の練習・公開 ※ このサイトの実践により生じた損害について、一切の責任を負いかねます。


Lua入門】Neovimプラグインは5分で作れる。「Hello World」を表示するだけの自作プラグイン開発

「Neovimのプラグイン開発」と聞くと、何かすごい魔法を使っているように思えるかもしれません。

しかし、現代のNeovimはLuaという非常にシンプルな言語で制御されており、ディレクトリ構成さえ守れば、誰でも簡単に機能を拡張できます。

今回は、「コマンドを叩くと、画面中央に挨拶を表示するフローティングウィンドウが出る」という、シンプルながらも"プラグインらしい"挙動をする機能を作ってみましょう。

1. ディレクトリ構成:これが全ての基本

Neovimのプラグインは、特定のディレクトリ構造を持ったただのフォルダーです。

適当な場所(~/dev/my-first-plugin など)に、以下の構造を作ってください。

Plaintext
 
my-first-plugin/
└── lua/
    └── hello/
        └── init.lua
  • 重要: lua/ フォルダの中に作ったサブフォルダ名(ここでは hello)が、require('hello') で呼び出す際の名前になります。一意な名前にするのがコツです。

2. コードを書く:APIを叩くだけ

lua/hello/init.lua を開き、以下のコードを記述します。

やっていることはシンプルで、**「バッファ(メモリ上の作業領域)を作り、ウィンドウを開き、そこに文字を入れる」**だけです。

Lua
 
-- lua/hello/init.lua
local M = {}

-- メインの関数
function M.say_hello()
  -- 1. 新しいバッファを作成 (listed=false, scratch=true)
  local buf = vim.api.nvim_create_buf(false, true)

  -- 2. バッファに文字を書き込む
  vim.api.nvim_buf_set_lines(buf, 0, -1, false, {
    "   Hello, Neovim!   ",
    "   This is my 1st   ",
    "   Plugin using Lua ",
  })

  -- 3. ウィンドウの設定(画面中央にフローティング表示)
  local width = 20
  local height = 3
  local ui = vim.api.nvim_list_uis()[1]
  local row = (ui.height - height) / 2
  local col = (ui.width - width) / 2

  local opts = {
    relative = "editor",
    width = width,
    height = height,
    row = row,
    col = col,
    style = "minimal",
    border = "rounded", -- 角丸の枠線
  }

  -- 4. ウィンドウを開く
  vim.api.nvim_open_win(buf, true, opts)
end

-- セットアップ関数(ユーザーが require('hello').setup() で呼ぶ)
function M.setup()
  -- コマンドを定義する (:Hello)
  vim.api.nvim_create_user_command("Hello", M.say_hello, {})
end

return M

3. 動かしてみる:ローカルプラグインの読み込み

作ったプラグインをNeovimに認識させましょう。

普段使っているプラグインマネージャー(lazy.nvimなど)の設定ファイルを開き、ローカルパスを指定して読み込ませます。

lazy.nvim の場合:

Lua
 
-- plugins.lua など
return {
  {
    dir = "~/dev/my-first-plugin", -- 自分のフォルダパスを指定
    config = function()
      -- ここでinit.luaのsetup関数を呼ぶ
      require("hello").setup()
    end,
  },
}

設定を保存してNeovimを再起動し、コマンドモードで :Hello と打ってみてください。

画面中央に、角丸の枠線で囲まれた「Hello, Neovim!」が浮かび上がったはずです。

これが、あなたが初めて作ったNeovimプラグインです。

4. ステップアップ:Rustでプラグインを書く (nvim-oxi)

Luaは手軽ですが、複雑な計算や重い処理には向きません。

そこで、Rust使いのあなたの出番です。

nvim-oxi というクレートを使うと、Rustで書いたコードを共有ライブラリ(.so.dll)としてコンパイルし、それをLuaから require して動かすことができます。

Rustでの実装イメージ:

Rust
 
use nvim_oxi::{Dictionary, Function, libuv::{self, AsyncHandle}};

#[nvim_oxi::module]
fn my_rust_plugin() -> nvim_oxi::Result<Dictionary> {
    let mut dict = Dictionary::new();
    
    // Rustの関数をLuaに公開
    dict.insert("compute_heavy_task", Function::from_fn(|()| {
        // ここで重い計算やスレッド処理を行える
        Ok("Result from Rust!".to_string())
    }));

    Ok(dict)
}

「UI周りの軽い処理はLua」、「検索アルゴリズムや通信処理などのコアロジックはRust」。

このハイブリッド構成こそが、**最強のPDE(個人用開発環境)**を作るための最適解です。

【脱VS Code】なぜ今、あえて「Neovim」なのか? Rustエンジニアがハマる「自分だけの最強エディタ」の育て方

2026年の今、統合開発環境IDE)といえばVS CodeやJetBrains(IntelliJ/RustRover)がスタンダードです。

しかし、GitHubのDotfiles(設定ファイル)トレンドを見ると、**「Neovim」**の人気が衰えるどころか、爆発的に加速していることに気づきます。

「黒い画面で操作が難しそう」「設定が面倒くさそう」

そんなイメージは過去のものです。今回は、RustエンジニアこそNeovimを使うべき3つの理由と、現代的な活用術を紹介します。

1. 「エディタ」ではなく「PDE」を作る喜び

VS Codeは、誰にとっても80点の環境をすぐに提供してくれます。

対してNeovimは、**「PDE (Personalized Development Environment)」**という概念で語られます。つまり、「自分専用の開発環境」です。

  • 必要な機能だけを搭載:

    使わないメニューバー、サイドバー、重たい拡張機能は一切不要。必要なのは「高速なコード補完」と「正確な定義ジャンプ」だけ。

  • 起動速度:

    VS Codeが起動に数秒かかるところを、Neovimは0.1秒以下で起動します。この「思考を止めない速さ」が、開発リズムを生み出します。

2. Rustエコシステムとの親和性が異常に高い

実は、Rustの開発体験を最高にするためのツールチェーンは、Neovimコミュニティ主導で進化しているものが多くあります。

  • LSP (Language Server Protocol) のネイティブ対応:

    NeovimはLSPクライアントを内蔵しています。rust-analyzerの動作が非常に軽量で、型推論やエラー表示が爆速です。

  • Rust製の高速ツール:

    ファイル検索の ripgrep、Gitクライアントの gitui、ターミナルマルチプレクサ zellij など、Rust製の高速CLIツールはNeovimとシームレスに連携します。

    「Rustで作られたツールを使い、Rustを書く」。この統一感がたまりません。

3. 「キーボードから手を離さない」という快感

マウスに手を伸ばす数秒間、エンジニアの集中力は途切れています。

Vimキーバインド(h j k l移動など)を習得することは、一生モノのスキルです。

  • テキストオブジェクト:

    「カッコの中をすべて削除」→ di) (Delete Inside Parentheses)

    「単語をヤンク(コピー)」→ yiw (Yank Inner Word)

    この**「動詞 + 対象」**で編集を行う感覚を覚えると、通常のテキスト入力には戻れなくなります。

  • ライブコーディングへの応用:

    前述のAlgorave(ライブコーディング)でも、高速なテキスト操作がパフォーマンスの質を左右します。Vim操作は「思考の速度でコードを書く」ための最短ルートです。

技術コラム:Luaプラグインを書く

かつてのVim scriptは難解でしたが、現在のNeovimはLua言語で設定やプラグインを書けます。

さらに、最近はRustでNeovimプラグインを書くためのバインディングも充実しています。

Lua
 
-- init.lua (設定ファイル例)
-- 保存時に自動でRustのフォーマッター(rustfmt)を走らせる
vim.api.nvim_create_autocmd("BufWritePre", {
  pattern = "*.rs",
  callback = function()
    vim.lsp.buf.format()
  end,
})

このように、わずか数行でエディタの挙動をハックできる柔軟性が、エンジニアの「改善魂」に火をつけます。

まとめ:道具を愛するということ

大工が自分の手に馴染むカンナを調整するように、エンジニアも毎日使うエディタを「育てる」べきです。

最初は操作に戸惑うかもしれません。しかし、設定ファイル(init.lua)を書き、プラグインを選定し、自分だけのショートカットキーを定義し終えたとき。

Neovimは単なるツールを超え、**「あなたの指の延長」**になっているはずです。

【IoT×Rust】クローゼットを「物理grep」する。服の場所をLEDで光らせて検索できる「ゲーミング・ハンガー」を作ってみた

「あれ、勝負服の黒シャツどこ行った?」

服が増えてくると、クローゼットはカオスになりがちです。ソースコードなら grep や Ctrl+F で一発なのに、現実世界には検索コマンドがありません。

ないなら実装しましょう。

今回は、スマホで「黒シャツ」と検索すると、その服がかかっている場所が物理的にピカッと光るシステムを構築します。

1. コンセプト:物流倉庫の技術を自宅へ

Amazonの倉庫などでは、作業員が商品を探し回らなくて済むように、取るべき商品の棚が光る「デジタルピッキング」というシステムが導入されています。これを自宅のクローゼットに適用します。

  • Before: 服を一枚ずつかき分けて探す(線形探索 $O(n)$

  • After: 光っている場所のハンガーを取るだけ(定数時間アクセス $O(1)$

2. アーキテクチャ構成

システムは3つのレイヤーで構成されます。すべてRustで記述します。

  1. Hardware (Edge):

    • ESP32-C3: Wi-Fi内蔵マイコン

    • WS2812B (NeoPixel): フルカラーLEDテープ。これをクローゼットのポールの上部に貼り付けます(LED 1個 = ハンガー 1本に対応)。

  2. Server (Backend):

    • Raspberry Piなどで動くRust製サーバ。

    • 「どの位置(LED番号)」に「何の服」があるかを管理するDB。

  3. Client (UI):

    • スマホやPCからアクセスする検索画面。

3. ハードウェア実装:ポールを「ゲーミング化」する

工作は驚くほどシンプルです。

  1. LEDテープの設置:

    クローゼットのハンガーポールの真上(または真下)に、LEDテープを直線状に貼り付けます。

  2. 配線:

    ESP32のGPIOピンとLEDテープの信号線(DIN)を1本繋ぐだけです。

  3. ポジショニング:

    「LEDの3番目の真下」=「ハンガーポジション3」と定義します。

これだけで、クローゼットが「100個の独立制御可能な光源を持つ空間」に変わります。

4. Firmware (Embedded Rust) の実装

マイコン側のコードは、「MQTTで指示待ち」→「指定されたLEDを指定された色で光らせる」だけを行います。

Rustのエコシステムには smart-leds という優秀なクレートがあり、直感的に色を扱えます。

Rust
 
// ESP32-C3 Firmware (イメージ)
use smart_leds::{SmartLedsWrite, RGB8};
use ws2812_spi::Ws2812;

#[entry]
fn main() -> ! {
    // ... Wi-Fi & MQTT setup ...

    let mut led_strip = Ws2812::new(spi);
    let mut pixels = [RGB8::default(); 60]; // 60着分のLED

    loop {
        // MQTTで {"index": 5, "r": 255, "g": 0, "b": 0} を受信したら
        if let Some(msg) = mqtt_client.receive() {
            pixels[msg.index] = RGB8::new(msg.r, msg.g, msg.b);
            led_strip.write(pixels.iter().cloned()).unwrap();
        }
    }
}

5. Backend & Database:服をインデックス化する

バックエンドサーバー(Rust/Axum)では、服のメタデータを管理します。

SQL
 
-- clothesテーブル
id | name          | color | tags           | position_index
---|---------------|-------|----------------|----------------
1  | 黒のシャツ    | Black | Work, Date     | 5
2  | デニム        | Blue  | Casual         | 6
3  | バンドTシャツ | Black | Live, Sleep    | 7

ここが「物理grep」の肝です。

検索API /search?q=Date を叩くと、サーバーはタグに「Date」を含む服を抽出します。

そして、該当する position_index (ここでは 1) に対して、MQTTメッセージを投げます。

結果:クローゼットの中で、デートに着ていける服だけがピンク色に発光する。

6. 応用:ただ探すだけじゃつまらない

せっかくフルカラーLEDを入れたので、エンジニアらしい「遊び」を実装しましょう。

  • Googleカレンダー連動:

    朝起きてクローゼットを見ると、今日の予定が「客先訪問」ならスーツの場所が白く、「リモートワーク」ならパーカーの場所が緑に光ってレコメンドしてくれる。

  • 天気予報連動:

    降水確率が高い日は、撥水加工のアウターや、濡れてもいい服だけが青く光る。

  • 断捨離モード:

    「半年間一度も光らなかった(検索されなかった)場所」を赤く点滅させ、廃棄を促す。

  • ゲーミングモード:

    特に用事がないときは、七色に光るウェーブアニメーションを流して、クローゼットをCyberpunkな雰囲気に演出する。

まとめ:片付けられないエンジニアのための解決策

「使ったら元の場所に戻す」。

これができる人には不要なシステムかもしれません。しかし、空いている場所に適当に戻しても、データベースの position_index を更新さえすれば、次は必ず見つけられます。

 

https://amzn.to/4pHDwTv

 Amazonのアソシエイトとして、akinobu-musicは適格販売により収入を得ています

 

【Algorave】DJブースに立つのはプログラマ。コードで音楽を即興演奏する「Live Coding」の世界

暗いクラブのステージ。そこにいるのはヘッドホンをしたDJ……ではなく、PCに向かって猛烈な勢いでタイピングをするプログラマです。

背後のスクリーンに投影されているのは、ビジュアライザーではなく**「ソースコード」**そのもの。

d1 $ sound "bd sd" とタイプして Shift + Enter を叩いた瞬間、重低音のキックとスネアが鳴り響く。

これが、コードで音楽を奏でる**「Live Coding」、そしてそのイベントである「Algorave(Algorithm + Rave)」**の世界です。

今回は、なぜエンジニアがこの「即興プログラミング演奏」に熱狂するのか、その仕組みと魅力に迫ります。

1. 音楽を「関数」として記述する

DAW(作曲ソフト)でポチポチとマウスで音符を置くのと違い、ライブコーディングでは音を**「アルゴリズム」**として定義します。

例えば、Haskellベースの言語『TidalCycles』では、こんな風にリズムを作ります。

-- 1小節に「キック(bd) スネア(sd)」を2回繰り返す
d1 $ sound "bd sd" # gain 1.0

ここからがプログラミングの真骨頂です。

「4回に1回だけ逆再生する」「ユークリッドリズム(等間隔)でビートを刻む」といった複雑な処理も、関数を噛ませるだけで一瞬で変形できます。

-- 8ビートの中で3回キックを鳴らす(ユークリッドリズム)
d1 $ euclid 3 8 $ sound "bd"

ループ処理、条件分岐、乱数生成。

普段業務で使っているロジックが、そのまま「グルーヴ」に変換される快感は、他の楽器では味わえません。

2. "Show Us Your Screens" の哲学

Algoraveには、"Show Us Your Screens"(画面を見せろ) という重要なマニフェストがあります。

一般的なDJや電子音楽のライブでは、演奏者がPCの裏で何をしているか客席からは分かりません(メールをチェックしていてもバレません)。

しかし、Algoraveでは**「書いているコードをプロジェクターで投影すること」**が推奨されます。

  • 「あ、今 cycle 4cycle 8 に書き換えたな。テンポが落ちるぞ…!」

  • コンパイルエラーが出た! どうリカバリーする!?」

観客(その多くもエンジニア)は、音だけでなく**「思考のプロセス」**そのものを楽しみます。バグさえもパフォーマンスの一部になる、極めてオープンなカルチャーです。

3. エンジニアにおすすめの言語・ツール

ライブコーディングの環境は多様です。自分の好きなパラダイムの言語を選べるのも魅力の一つです。

① Sonic Pi(Rubyベース)

  • 特徴: Raspberry Pi財団が教育用に開発。文法がRubyそのものなので、Webエンジニアには非常に親しみやすい。

  • 強み: ドキュメントが充実しており、シンセサイザーの音作りも直感的。

② TidalCycles(Haskellベース)

  • 特徴: 関数型プログラミングの極致。リズムのパターン化、ポリリズムの生成において最強の表現力を持つ。

  • 強み: 少ない記述量で、人間には演奏不可能な複雑なビートを生み出せる。

③ Glicol(Rustベース)

  • 特徴: Rust愛好家のために開発された、比較的新しい言語。ブラウザ上で動作し、パフォーマンスが非常に高い。

  • 強み: Rustのオーディオエンジンとしての高性能さを活かし、低レイテンシーで複雑な音声合成が可能。

まとめ:夜のクラブ活動も「コーディング」で

ライブコーディングは、楽器が弾けなくても、コードが書ければ始められます。

「金曜の夜、本番環境のデプロイが終わったら、次は音のデプロイだ」

もしあなたが、リファクタリングでコードが綺麗になる瞬間に喜びを感じるタイプなら、きっとAlgoraveの才能があります。

【Rust】「エモい」コード進行は計算で作れるか? 音楽理論を型システムで実装して自動作曲してみた

西洋音楽理論(特にポピュラー和声)を**「ステートマシン」とみなし「グラフ探索問題」**として実験してみます。

今回は、堅牢な言語であるRustを使って音楽理論をコードに落とし込み、誰でも一瞬で「エモい(感情を揺さぶる)」コード進行を生成するプログラムを作ってみました。

1. 音楽理論グラフ理論

音楽理論において、コード(和音)は適当に並んでいるわけではありません。あるコードの次に来るべきコードは、一定の「重み」や「ルール」で決まっています。

  • トニック (T): 安定。家の玄関。(例:CメジャーにおけるC)

  • ドミナント (D): 不安定。家に帰りたい緊張感。(例:G)

  • サブドミナント (S): やや不安定。どこへでも行ける。(例:F)

これをプログラマ的に解釈すると、以下のような状態遷移になります。

  • TAnywhere (どこでも行ける)

  • DT (強い解決欲求:ドミナントモーション)

  • SD or T

つまり、このルールセットをプログラムに記述すれば、**「音楽的に破綻しない進行」**を無限に生成できるはずです。

2. Rustの型システムで「音」を定義する

Rustの強力な型システム(Enum)は、12音階の定義に最適です。

このように構造体を作ることで、「Cメジャーコードに存在しない音」が含まれていたらコンパイルエラー(あるいはResult型でのエラーハンドリング)にするなど、**「不協和音をバグとして処理する」**ことが可能になります。

3. 「エモさ」のアルゴリズム:ツーファイブワン

ただランダムに並べるだけでは童謡のような響きになります。ジャズやR&Bのような「エモさ」を出すには、**「テンション(Extension)」「特定の進行」**が必要です。

ここで、ジャズの黄金進行と呼ばれる**「2-5-1 (II-V-I)」**進行を関数化してみます。

このように、「2番目のコードを取って7thの音を足す」→「5番目を...」とロジックを組むだけで、あのカフェで流れているようなお洒落な進行が一瞬で生成されます。

4. 実際に生成してみる

このロジックを応用し、「カノン進行」や「丸サ進行(Just The Two of Us進行)」などの有名進行をデータベース化。

さらに、**「乱数で揺らぎを与える」**ことで、AIのような自動生成を試みます。

  • 入力: Key = C Major, Mood = Sad

  • ロジック: マイナーキーへの借用和音(モーダルインターチェンジ)の確率を上げる。

  • 出力: FM7 -> Em7 -> Am7 -> Gm7 -> C7

出力されたテキストをMIDIファイルに出力するクレート(midlyなど)を使えば、そのままDAW(作曲ソフト)にドラッグ&ドロップして、即座にLo-Fi HipHopのトラックが完成します。

 

【電子工作×Rust】愛犬の健康を可視化する。「IoTトイレ」をEmbedded Rustで自作してみた

「うちの犬、今日どれくらいおしっこしたっけ?」

言葉を話せないペットの健康管理において、排泄物の量や回数は腎臓病などの早期発見につながる重要なバイタルデータです。

しかし、毎回計量カップで測るわけにもいきません。

そこで今回は、**Rust(Embedded Rust)**を使って、乗るだけで体重と排泄量を自動記録し、Grafanaで可視化する「スマート・ペットトイレ」を自作してみました。

あえてC++Arduino)ではなくRustを選んだ理由や、システムアーキテクチャの勘所を解説します。

1. システム構成:オーバーエンジニアリングを楽しもう

ただのトイレにここまでするか?という構成ですが、堅牢性と拡張性を重視しました。

2. なぜ、組み込みでRustなのか?

電子工作といえばC/C++Arduino言語)が定番ですが、近年はRustの組み込みサポート(Embedded WG)が急速に成熟しています。

① 安全性がハードウェア制御を守る

メモリ安全なRustは、ポインタのバグによる謎のクラッシュや、バッファオーバーフローコンパイル時に防いでくれます。「トイレがハングアップしてデータが取れていなかった」という悲劇を未然に防げます。

② 最新のAsync/Await構文 (Embassy)

ここが最大の採用理由です。

ESP32でWi-Fi接続をしてMQTTを投げつつ、センサの値をポーリングする。これを割り込みハンドラや複雑なステートマシンなしで、まるでWebサーバを書くように非同期Rust (async/await) で記述できます。

3. ハードウェア実装:トイレを「ハック」する

仕組みはシンプルです。

市販のペット用トイレトレーの下に、ベニヤ板などの「台座」を作成し、その四隅に**ロードセル(重量計)**を仕込みます。

  1. ゼロ点調整(Tare): 何も載っていない状態を0gとする。

  2. 計測: ワンちゃんが乗った重量(体重)を検知。

  3. 差分検知: ワンちゃんが降りた後、トイレシーツに残った液体の重さ分だけ、重量が増加しています。この**「降りた後の重量 - 乗る前の重量」**が排泄量です。

4. データフローと「ノイズ」との戦い

単純にセンサの値を読むだけではうまくいきません。ワンちゃんはトイレの上で動くため、数値が激しくブレるからです。

ここでRustの強力なイテレータや型システムが役立ちます。

  • 移動平均フィルタ: 生データをVecDeque等でバッファリングし、突発的なノイズを除去。

  • 状態遷移: 「待機中」→「入室検知(急激な重量増)」→「安定(排泄中)」→「退室(重量減)」というステートマシンをenumで定義し、排泄イベントのみを正確に切り出します。

5. 可視化:Grafanaダッシュボード

収集したデータはInfluxDB(時系列DB)に蓄積し、Grafanaで可視化します。

  • 体重グラフ: 日々の体重増減がひと目で分かります。

  • 排泄回数ヒートマップ: 「最近、夜中のトイレが増えたな?」といった傾向を把握。

  • シーツ交換アラート: 累積の排泄量が200gを超えたら、LINEやDiscordに「そろそろシーツ交換だよ」と通知。

技術スタック詳細(参考)

  • Board: M5Stack Stamp C3 (ESP32-C3)

  • Framework: esp-hal (Bare metal) + embassy (Async runtime)

  • Sensor: HX711 driver crate

  • Network: esp-wifi

【永久保存版】「透けない・ヨレない」大人のTシャツ選び。オンス(oz)の正解と、首元を守る洗濯術

--- --- ----

[ユナイテッドアスレ] 5.6オンス ハイクオリティー Tシャツ

https://amzn.to/49nNpQ0

オルディ レジ袋 25号

https://amzn.to/49huHcx

  

 Amazonのアソシエイトとして、akinobu-musicは適格販売により収入を得ています

--- --- ---

たかがTシャツ、されどTシャツ。

シンプルだからこそ、「ペラペラで肌着に見える」「数回洗っただけで首元がダルダルになった」という失敗が目立ちやすいアイテムです。

今回は、見た目の清潔感を左右する「生地の厚さ」の読み解き方と、お気に入りの1枚をダメにしない洗濯のコツを解説します。

1. 失敗しない選び方:「オンス(oz)」を見れば全て分かる

ネット通販やタグでよく見る「〇〇oz(オンス)」という表記。これは生地の重さ(厚み)を表す単位です。これを知っているだけで、ネットで買っても「思ったより薄かった」という失敗がなくなります。

  • 〜4.9 oz(薄手):インナー向け

    肌着や、シャツの下に着る用途です。これ1枚で外に出ると、肌や下着が透けてしまい、少し頼りない印象(肌着感)を与えてしまいます。

  • 5.0〜5.9 oz(スタンダード):万能選手

    一般的なプリントTシャツによく使われる厚さ。夏場に涼しく着られますが、白Tの場合は、光の加減で若干透ける可能性があります。

  • 6.0 oz〜(ヘビーウェイト):1枚着の正解

    「透けたくない」「体のラインを拾いたくない」なら、6オンス以上を選びましょう。ガシッとした質感で耐久性が高く、洗濯を繰り返しても型崩れしにくいのが特徴です。大人の1枚着には、このクラスが推奨されます。

2. 素材で選ぶ:「コットン100%」vs「機能性ブレンド」

  • コットン(綿)100%

    • 特徴: 風合いが良く、洗うたびに肌に馴染む。吸水性が高い。

    • おすすめ: 天然素材の質感を重視する人、ヴィンテージのように育てる楽しみを味わいたい人。

  • ポリエステル混紡(化繊ミックス

    • 特徴: シワになりにくく、乾きが速い。色落ちしにくい。

    • おすすめ: 汗をかくアウトドアシーンや、アイロンがけを面倒に感じる人。「速乾Tシャツ」は部屋干しの強い味方です。

3. 首元(ネック)を「絶対にヨレさせない」洗濯・干し方

お気に入りのTシャツが寿命を迎える最大の理由は、「首元のヨレ」です。

実はこれ、着ている時ではなく、**「洗濯して干す時」**に伸びています。

① 脱ぐとき・洗うとき

  • ネットに入れる: 他の衣類と絡まって引っ張られるのを防ぐため、必ず洗濯ネットに入れましょう。

  • 裏返す: プリントの剥がれや、表面の毛羽立ちを防げます。

② 干すときが勝負(最重要)

濡れて重くなったTシャツをハンガーにかける際、「首元から無理やりハンガーを突っ込む」のは厳禁です。

  1. 裾(すそ)から入れる: ハンガーは必ず裾から通して、首元まで持っていきます。

  2. 二つ折り干し: これが最強です。ハンガーに普通にかけるのではなく、物干し竿に「タオルを干すように二つ折りにする」か、ズボン用ハンガーなどで胴体の部分を挟んで干します。

    (水の重みが首にかからないため、物理的に伸びようがありません)

まとめ:白Tは「消耗品」から「愛用品」へ

「ヘビーウェイト(6oz以上)」を選び、「首に負担をかけずに干す」。

この2点を意識するだけで、Tシャツの寿命は1シーズンから数年へと劇的に伸びます。

次はTシャツを買う際、ぜひタグの「オンス」や「素材」をチェックしてみてください。その1枚が、あなたの夏の制服になるはずです。