はじめに

https://kichijojipm.connpass.com/event/382650/

私の部下であるmozumasuがTerminal Night #2に登壇するとのことで、メルカリオフィスに初行ってきた。ターミナルオタクによる、濃厚なイベントだったので、まとめていきたいと思う。(間違えてるところがあればリプください)

モテるターミナル WezTermの機能に迫る

  • WezTermの特徴と設定
    • WezTermは言語Luaを採用し、if分岐などのロジックによる柔軟なカスタマイズが可能
    • ホットリロード機能により、設定変更が即時反映される
    • キーバインドにモードを持たせ、用途ごとに操作体系を切り替えられる
    • ペイン分割やウィンドウ管理機能が充実し、tmuxに近い操作感を提供
  • カスタマイズ事例とコミュニティ文化
    • タブ幅・文字サイズ・色・閉じるボタンなど細部までカスタマイズ可能
    • プロセスごとの色分けや条件付き見た目変更も設定できる
    • 設定事例は「Show your wezterms #628」やGitHub Discussionsで共有されており、人気設定は「いいね」順で参照可能
    • OSSキャッチアップとして、GitHubコード検索やDeepL翻訳の活用が良い
  • 主な機能と活用例
    • ペイン分割はキーバインドで自在に操作可能。独自モードでサイズ変更も可能
    • コピーモードやサーチモードなど、Vimライクな操作性を実現
    • コマンドパレットでレイアウトやコマンドを即座に呼び出せる
    • CLI連携により、AI生成テキストのペイン送信やセッション保存など自動化が可能
  • ドキュメント活用とトラブルシュート
    • 公式ドキュメントの「WezTerm」セクションから体系的に学習可能
    • GetHelpセクションでデバッグオーバーレイやログ表示が容易
    • 困った場合はAIやコミュニティの知見を活用することが推奨
  •  Nix活用
    • Nixを導入することで、環境を汚さずキラキラなビジュアルに変更可能
  • ターミナル自慢しようぜ!

SSH秘密鍵をSecure Enclaveに格納するSecretiveのススメ

  • matsuuさん
  • SSH鍵管理のリスクと対策
    • SSH秘密鍵は通常ローカル端末の.sshディレクトリに保存される
    • パスフレーズ設定やパスワードマネージャー連携でも根本的なリスク低減には限界がある
    • ファイル奪取やメモリ窃取攻撃、ボルト漏洩、端末侵害など多様なリスクが存在
    • ソフトウェア的な鍵はコピーが容易で、漏洩の検知が困難
  • ハードウェア認証による複製不可能な運用
    • Secrettive、FIDOデバイス、TPM、スマートカード等のハードウェア認証デバイスを活用し、秘密鍵を物理デバイス内に格納することで複製・漏洩リスクを大幅に低減
    • 端末侵害を前提とした多層防御設計が求められる
  • 実践的アドバイス
    • SSH秘密鍵には必ずパスフレーズを設定し、パスワードマネージャー連携時もボルト管理を徹底
    • ハードウェア認証デバイス導入による複製不可能な鍵管理を推奨
    • ソフトウェア的管理だけに依存しない多層防御を心掛ける
  • SecretiveによるSSH鍵管理
    • SecretiveはApple製品に搭載された独立コプロセッサで、秘密鍵や指紋情報など機密データを安全に管理
    • 外部からアクセスできない専用領域で高いセキュリティを実現
    • SSHやgit、VSCode等から安全に鍵利用可能
    • SSHエージェントフォワーディングにも対応し、多段接続が可能
    • GitHubやhomebrewから容易に導入でき、UIも直感的
  • FIDOデバイスによるSSH鍵管理と運用実例
    • FIDOデバイスはセキュリティキー(USB/NFC)、スマートカード、スマートフォン等を含む認証用物理デバイス
    • オープンSSH 8.2以降でecdsa-sk、ed25519-skの鍵種に対応。SKはFIDOデバイス連携を示す識別子
  • 鍵ハンドルと物理デバイス連携
    • FIDOデバイス固有のマスターキーとランダム生成データで「鍵ハンドル」を生成
    • 鍵ハンドル単体では認証不可、物理デバイスが必須
    • 鍵ハンドルとセキュリティキー両方が揃わないとSSH接続は成立しない
  • 実践的アドバイス
    • SecretiveやFIDOセキュリティキー導入を推奨
    • 物理デバイスの選定と管理、オープンSSHバージョン確認を事前に行うことが重要

VSCode中心だった自分がターミナル沼に入門した話

  • Genki Sanoさん
  • なぜターミナルに手を出したか
    • VSCode中心の環境から、あえてカスタマイズ性の高いターミナル環境の構築に挑戦
    • mozumasuリスペクト
  • 試行錯誤したこと
    • 最初はディレクトリツリーが見れないなどの壁にぶつかる
    • NeovimやLazyVimなどを導入して解決。
    • 「よしなにやってくれるもの」を使いつつ、AI(Claudeなど)に壁打ちしながら環境を継ぎ足して構築
    • 環境構築(沼)は時間が溶けるが「楽しい」。これを機にdotfilesも作成・公開
  • 1ヶ月で仕事がどう変わったか(導入効果)
    • 最初はショートカット等に慣れる時間が必要だったが、1〜2週間で適応
    • 操作が軽くなった: キーボード操作で完結でき、ディレクトリ移動がしやすくなった
    • 環境が軽くなった: 重いIDEを開く機会が減り、サクサク動くように
    • 仕事の進め方の変化: Claude Codeの活用が進み、コンテキストスイッチの多いマネージャー業務が楽になった
  • 続けていくための工夫
    • 挫折しないためには、最初から完璧な環境を「作る」のではなく、使いながら「育てていく」マインドが重要

脱・コピペ!変数展開とコマンド展開でターミナル作業をスマートにする方法

  • masasuzさん
  • コマンドのコピペや手入力によるミスを減らすため、展開機能を積極的に活用することを推奨
  • ブレース展開
    • 複数パターンのコマンドやファイル名を一括生成し、作業効率とミス防止を実現
  • 変数展開
    • 値の再利用や動的書き換え、パターン削除、デフォルト値設定、エラーメッセージ出力など多彩な応用が可能
  • コマンド展開
    • $()でコマンドの実行結果を変数や文字列として利用。セキュリティグループIDやIPアドレスの取得など、一行で処理を完結できる
  • プロセス置換
    • コマンド出力をファイルとして扱い、バックアップやビルドタグ生成などに応用
  • VSコードターミナルの利用により、ローカル作業の完結性と手軽さを享受。他ターミナルと比較しても利便性が高い
  • シェル操作の限界を感じた場合は、パールなどのプログラミング言語との役割分担を推奨
  • まとめ
    • 展開機能の活用でコマンドライン作業の効率化・ミス防止・自動化が可能。「楽したい」「ミスを減らしたい」人にこそおすすめ

GitHubのPRをレビューするTUIを作った

  • kawarimiさん
  • GitHub PRのdiffをTUIで確認できるツールはすでにいくつか存在した
  • diffnavやdifitを触っており、PRをパッと指定したらそのコミットごとの差分を見たかった
  • GitHubのPRを見ることを前提にすればいいなと思い、gh cliの拡張機能としてgh-prismを作った
  • 主要機能
    • マルチパネル構成(PR概要・コミット一覧・ファイル一覧などをキーボードで切替)
    • PR概要パネル(ズーム・画像表示対応)
    • コミット一覧パネル(コミット選択でファイル一覧連動)
    • ファイル詳細表示(行番号・折り返し等カスタマイズ)
    • コメント・リアクション機能(ターミナルからコメント・承認・リジェクト可能)
    • チェンジサジェスション対応(編集提案を直接送信)
    • コメント送信漏れ防止(警告モーダル表示)
    • マージ機能(PRのマージまで一貫して対応)
  • コミットごとのレビューにより、チェック済み記録や柔軟な運用が可能。
  • レビューの抜け漏れ防止と効率化を実現

Ghosttyの凄さを 技術的に深ぼってく

  • kuuさん
  • Ghosttyは、高速・ネイティブ・多機能なターミナルエミュレーターとしてGitHubで公開。2024年12月にv1リリース
  • プラットフォーム対応:Windowsを除く各プラットフォームでネイティブ実装。特にMac OSへの注力が顕著
  • レンダリング技術
    • マックOSではMetal(メタルオブセンラーズ)とコアテキストAPIを併用
    • mtl libraryやshadersを駆使し、背景やグリフ(文字画像)のレンダリングを効率化
  • マルチスレッド構成
    • メインスレッド(アプリ全体管理)
    • IOスレッド(キーボード入力等の独立処理)
    • レンダースレッド(画面表示専用、120fpsで高速描画)
  • テキスト表示高速化
    • 入力発生時にテキストを細かく分割し、コアテキストAPIでグリフ列へ変換
    • グリフ列から画像生成(CPU)、まとめてGPUでレンダリング(スプライト的手法)
    • 計上処理のキャッシュ再利用でパフォーマンスを最適化
  • 絵文字・国旗等の特殊処理
    • 国旗(JP, JM等)は複数文字をまとめて判定・変換
    • 手の色や家族構成など、条件分岐が複雑で高度な先読み処理が必要
  • ゲームアーキテクチャとの類似性
    • スプライト的レンダリングやCPU/GPU分担など、ゲーム開発の最適化手法を積極的に導入
  • まとめ
    • ゲーム並みのレンダリング最適化とマルチスレッド構成により、ターミナルエミュレーターとして圧倒的なパフォーマンスを実現

推しツールは強制布教しよう

  • ogadoraくん
  •  Nixは「宣言的で再現可能な信頼性のあるパッケージマネージャー」
    • システムやソフトウェアの構成を「宣言的」に記述できるため、同じ環境を何度でも正確に再現できるのが大きな特徴
    • 信頼性が高く、現場でのトラブル回避や安定運用に役立つ
  • 設定管理・ロールバックの簡単さ
    • Nixは設定の管理とロールバックが非常に簡単
    • 設定を変更しても、コマンド一つで元に戻せる
    • 設定履歴がID管理されている
  • 環境を汚さずコマンド実行可能
    • パスが通っていない状態でも一時的にコマンドをインストールして実行できる
  • 複数パッケージの同時利用
    • 複数パッケージを同時に使いたい場合は、flake.nixを設定することで実現可能
  • Nixはいいぞ!!

まとめ

自分はYouTubeでターミナルを紹介しているが、今回のイベントはターミナル大好きエンジニアによる最高の会だったように感じた。自分はGhosttyとtmux兼NeoVimmerだが、それぞれのツールの良さや熱意がエグかった。

個人的に勉強になったのはmatsuuさんの鍵周りの管理方法で、面白かったのが、kawarimiさんによる、ターミナルでLTとバチバチの音楽で披露していたので、DJか!?と突っ込んでしまった。自分も機会があれば、次回LTしたいと思う。の前にNix触ってみるかな。

運営のみなさんありがとうございました!mozumasuお疲れ!

 

カテゴリー: 勉強会/交流会

adachi.ryo

1989年生まれのFindy/SRE サブマネージャー。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用、チームマネジメントを担当している。 個人事業主では数社サーバー保守とベンチャー企業のインフラコンサルティングを行うほか、TechBullを創業し、未経験者向けにSREのコーチングやコミュニティ運営、LT大会の開催、 会員管理システム「Members」の開発をリードしている。さらに、エンジニア向けYouTubeメディア「TECH WORLD」ではSRE関連の動画に出演し、過去には脆弱性スキャナ「Vuls」のOSS活動にも貢献。ガジェット系エンジニアYouTuberとしても発信。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください