**Show HN:** *Bonsplit ― ネイティブmacOSアプリ用のタブと分割機能*

2026/01/25 20:56

**Show HN:** *Bonsplit ― ネイティブmacOSアプリ用のタブと分割機能*

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Bonsplit システムは、

controller
API と設定可能な
BonsplitConfiguration
を介してマルチパネルエディタインターフェースをプログラム的に制御する方法を提供します。
コアAPIメソッドには次のものがあります:

  • createTab(title:, icon:, isDirty:, inPane:)
    – 新しいタブを開きます。
  • splitPane(orientation:)
    – 現在フォーカスされているパネルを水平または垂直に分割します;
    .vertical, withTab:
    を指定すると新しいパネルが作成され、指定されたタブがそこに配置されます。
  • updateTab(tabId, …)
    – タブのダーティ状態、タイトル、アイコンをスムーズなアニメーションで更新します。
  • ナビゲーションヘルパー:
    navigateFocus(direction:)
    はパネル間でフォーカスを移動し、
    focusPane(paneId)
    は指定したパネルに直接フォーカスを当てます。

設定 (

BonsplitConfiguration
) では、分割の有効/無効、タブ閉鎖、クロスポインターロック、空のパネル自動閉鎖、コンテンツビューのライフサイクル、新しいタブの表示位置などの機能を制御します。デフォルト値は次のとおりです:
allowSplits:true
allowCloseTabs:true
allowCloseLastPane:false
autoCloseEmptyPanes:true
contentViewLifecycle:.keepAllAlive
newTabPosition:.current

外観設定 にはタブバーの高さ、最小/最大幅、スペース、最低パネルサイズ、分割ボタンの可視性、アニメーション期間(0.15 s)、およびアニメーションが有効かどうかが含まれます。

プリセット設定

default
singlePane
– 分割無効、
readOnly
– 変更不可)は、一般的なシナリオに対する迅速な開始点を提供します。

このシステムの柔軟なAPIと包括的な設定により、開発者は典型的な IDE の動作を模倣しつつ、一貫したマルチパネルワークフローを提供するカスタムコードエディタや生産性ツールを簡単に構築できます。

本文

機能

  • タブの作成
    アイコンや変更フラグを付けてタブを作成します。対象は特定のペインか、フォーカスされているペインです。

    let tabId = controller.createTab(
        title: "Document.swift",
        icon:   "swift",
        isDirty:false,
        inPane: paneId)
    
  • ペインの分割
    任意のペインを水平または垂直に分割します。新しいペインはデフォルトで空ですので、自由に設定できます。

    // フォーカスされているペインを水平に分割
    let newPaneId = controller.splitPane(
        orientation: .horizontal)
    
    // 新しいペインに既にタブを入れて分割
    controller.splitPane(
        orientation: .vertical,
        withTab: Tab(title:"New", icon:"doc"))
    
  • タブ状態の更新
    タブのプロパティはいつでも変更可能です。変更はスムーズにアニメーションします。

    // ドキュメントを変更済みに設定
    controller.updateTab(tabId, isDirty:true)
    
    // タブ名変更
    controller.updateTab(tabId, title:"NewName.swift")
    
    // アイコン変更
    controller.updateTab(tabId, icon:"doc.text")
    
  • フォーカスの移動
    プログラムでペイン間を方向付きナビゲーションで切り替えます。

    // ペイン間のフォーカス移動
    controller.navigateFocus(direction:.left)
    controller.navigateFocus(direction:.right)
    controller.navigateFocus(direction:.up)
    controller.navigateFocus(direction:.down)
    
    // または特定のペインへフォーカス
    controller.focusPane(paneId)
    

これを読んでください、エージェントの皆さん...

APIリファレンス

Bonsplit の全クラス・メソッド・設定オプションの完全な参照です。

BonsplitController

タブとペインを管理するメインコントローラ。インスタンスを作成し、

BonsplitView
に渡します。

  • タブ操作
  • 分割操作
  • フォーカス管理
  • クエリメソッド

BonsplitDelegate

このプロトコルを実装すると、タブバーイベントのコールバックを受け取れます。全てのメソッドはデフォルト実装があり、任意です。

  • タブコールバック
  • ペインコールバック

BonsplitConfiguration

動作と外観を設定します。初期化時に

BonsplitController
に渡します。

PropertyType説明デフォルト
allowSplits
Bool分割ボタンとドラッグ分割を有効にする
true
allowCloseTabs
Boolタブの閉じるボタンを表示する
true
allowCloseLastPane
Bool最後のペインを閉じることを許可する
false
allowTabReordering
Boolペイン内でタブをドラッグして並び替える
true
allowCrossPaneTabMove
Boolドラッグで別ペインへタブを移動できる
true
autoCloseEmptyPanes
Bool最後のタブが閉じられたら自動的にペインを閉じる
true
contentViewLifecycle
ContentViewLifecycleタブ切替時のコンテンツビュー管理方法
.recreateOnSwitch
newTabPosition
NewTabPosition新タブの挿入位置
.current
let config = BonsplitConfiguration(
    allowSplits:            true,
    allowCloseTabs:         true,
    allowCloseLastPane:     false,
    autoCloseEmptyPanes:   true,
    contentViewLifecycle:  .keepAllAlive,
    newTabPosition:        .current)

let controller = BonsplitController(configuration: config)

コンテンツビューライフサイクル

  • MemoryState
    使用例:
    recreateOnSwitch
    ,
    Low
    ,
    None
    ,
    Simple
    ,
    Content.keepAllAlive
    ,
    Higher
    ,
    Full
    ,
    Complex

新タブ位置

  • ModeBehavior
    • .current
      : 現在フォーカスされているタブの後ろに挿入、なければ末尾。
    • .endAlways
      : 常にタブリストの末尾に挿入。

外観設定

PropertyType説明デフォルト
tabBarHeight
CGFloatタブバーの高さ
33
tabMinWidth
CGFloatタブの最小幅
140
tabMaxWidth
CGFloatタブの最大幅
220
tabSpacing
CGFloatタブ間隔
0
minimumPaneWidth
CGFloatペインの最小幅
100
minimumPaneHeight
CGFloatペインの最小高さ
100
showSplitButtons
Boolタブバーに分割ボタンを表示するか
true
animationDuration
Doubleアニメーション時間(秒)
0.15
enableAnimations
Boolすべてのアニメーションを有効/無効にする
true

プリセット

  • BonsplitConfiguration.default
    : すべての機能が有効な設定。
  • BonsplitConfiguration.singlePane
    : 分割が無効なシングルペインモード。
  • BonsplitConfiguration.readOnly
    : 変更を全て無効にした読み取り専用モード。

同じ日のほかのニュース

一覧に戻る →

2026/01/26 4:03

まず、私に関心を持っていただけるようにしてほしいです。

## Japanese Translation: **改訂要約:** 著者は、ウェブサイト、個人の「Me」セクション、ブログを組み合わせた新しいプラットフォームを立ち上げました。外部リソースへのリンクとファンサポート用のPatreonページが特徴です。今後の計画としては、さらに多くのブログ投稿を追加し、リンク統合を拡大し、場合によっては追加のPatreonティアを作成することがあります。これによりユーザーはキュレーションされたコンテンツへ簡単にアクセスでき、クリエイターには追加収益源が提供されます。 (このバージョンではすべての主要ポイントを保持し、推測された業界全体のトレンド表現を削除しています。)

2026/01/26 9:10

**科学者たちが「あなた」の限界を決める脳波を特定**

## Japanese Translation: > 本研究は、頭頂皮質におけるアルファ振動のリズムが、人々がゴム手を所有していると感じる強さを因果的に形成することを示しています。スウェーデンの研究者66名とフランスの研究者43名が合計106名の被験者から脳波(EEG)を記録し、古典的なゴム手錯覚を体験させました。ロボットアームは実際の手と偽の手の両方にタップを打ち、タップの同期性は最大500 msまで遅延させられました。 > > 被験者はタップが同期しているときに最も強い所有感を報告し、遅延が増すにつれてその感覚が弱まりました。EEGからは、頭頂部のアルファ周波数が被験者の遅延検知能力と相関していることが明らかになりました:高速なアルファ波は小さな時間ギャップに対する敏感性を高め、一方で低速なアルファ波は大きなギャップが存在しても錯覚を強化しました。 > > 頭頂部のアルファ波を人工的に高速化または遅延させる経頭蓋交流電流刺激(tACS)を用いて、研究者たちは因果関係を確認しました——アルファ波を加速すると所有感が増し、逆に減速すると錯覚が弱まり、自分の手と偽手との区別が難しくなりました。 > > これらの結果は *Nature Communications* に掲載され、頭頂部のアルファ活動が身体所有感を構築する上で因果的役割を果たすことを示唆しています。精神疾患(統合失調症や幻肢痛など)の治療に寄与したり、ターゲットとした脳刺激によってよりリアルな義手や仮想現実インターフェースの設計指針となる可能性があります。

2026/01/26 0:34

**タイトル** 「姿勢が悪くなると画面をぼかす macOS アプリ」

## Japanese Translation: Posturrは、MacのカメラとAppleのVisionフレームワークを使用してリアルタイムで姿勢を監視する軽量macOSアプリです。鼻と肩の角度を測定し、全身ランドマークが利用できない場合は顔検出にフォールバックします。前かがみが検知されると、画面が徐々にぼかれます(デフォルトではmacOSのプライベートCoreGraphics APIを使用し、互換モードではNSVisualEffectViewにフォールバック)。良い姿勢が回復するとぼかしは即座に消えます。ぼかしの強度は「Low」から「Very High」に段階的に上昇し、デッドゾーン設定で軽微な前かがみを無視できます。 Posturrは完全にローカルで動作します:動画データはマシンを離れず、オンラインアカウントやクラウドサービスも不要です。MITライセンスのソースコードはコミュニティへの貢献を歓迎しています。メニューバーには小さなアイコンがあり、ステータス表示、監視の有効/無効化、再校正、感度調整、互換モード切替、デッドゾーン設定、またアプリ終了などが可能です。また、外部制御用に`/tmp/posturr-command`というファイルベースのコマンドインターフェイス(`capture`、`blur <0‑64>`、`quit`)も公開しています。 インストールは簡単で、Homebrew(`brew install --cask posturr`)を使用するか、リリースページから署名済みのDMG/ZIPをダウンロードします。ノタリゼーションされており、システム設定でカメラ権限が必要です。最適な結果を得るためには、カメラを目線レベルに位置させ、十分な照明を確保し、画面を向いて座り続け、肩が見えるようにしてください。Posturrはマルチディスプレイ環境にも対応しており、macOS 13+でXcode Command Line Toolsを使用してソースからビルドできます。 すべての処理をデバイス上で完結させ、プライバシー優先設計を提供することで、Posturrは姿勢モニタリングツールがユーザーのプライバシーを侵害せずにエルゴノミック支援を行う方法を示しています。