コンピュータのホスト名(デバイス名)を取得する方法を解説します。
これは、ユーザーの識別や、ログ出力時の端末情報の記録などに役立ちます。
前提条件
このレシピを使用するには、@tauri-apps/plugin-os プラグインのインストールが必要です。
npm run tauri add os
Permissions (権限) の設定
src-tauri/capabilities/default.json に以下の権限を追加します。
{
"permissions": [
...,
"os:default",
"os:allow-hostname"
]
}
1. フロントエンドから作成する (TypeScript)
@tauri-apps/plugin-os の hostname() 関数を使用します。
この関数は非同期(Promise)で動作し、解決されるとホスト名の文字列を返します。
※ ブラウザのサンドボックス制限により、通常の Web API だけでは正確なシステムホスト名を取得することは難しいため、このプラグイン機能は非常に有用です。
1. 基本的な使用法(Console 出力)
ホスト名を非同期で取得して表示する基本的な例です。
import { hostname } from '@tauri-apps/plugin-os';
// async 関数内で実行する必要があります
async function logHostname() {
const name = await hostname();
console.log(`Hostname: ${name}`);
}
logHostname();
2. デバッグ情報の収集
アプリケーションの起動時に、OS情報と合わせてホスト名をログに記録するユーティリティ関数の例です。
import { hostname, platform, version, arch } from '@tauri-apps/plugin-os';
async function logSystemInfo() {
const info = {
host: await hostname(),
os: platform(),
version: version(),
arch: arch(),
timestamp: new Date().toISOString(),
};
console.table(info);
}
logSystemInfo();
2. バックエンドから作成する (Rust)
Rust 側でホスト名を取得する場合は、通常 hostname クレートを使用します。
依存関係の追加 (Rust)
src-tauri/Cargo.toml に以下の依存関係を追加します。
[dependencies]
hostname = "0.4"
serde = { version = "1", features = ["derive"] }
Rust 実装
use tauri::command;
#[command]
fn get_backend_hostname() -> Result<String, String> {
hostname::get()
.map(|h| h.to_string_lossy().into_owned())
.map_err(|e| e.to_string())
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![get_backend_hostname])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
フロントエンドからの呼び出し
import { invoke } from '@tauri-apps/api/core';
invoke<string>('get_backend_hostname')
.then(name => console.log('Hostname from Rust:', name))
.catch(console.error);