LoginSignup
1
0

More than 5 years have passed since last update.

プログラム内で Mac のホスト名を取得

Posted at

はじめに

  • プログラム上で Mac 自身のホスト名を取得する必要があったので、ちょっと調べてみました
    • 同一のローカルネットワーク上からアクセスするための名前を取得したかったため
    • 実行する Mac が変わる可能性があるので、ホスト名を直書きしたくない

使うもの

試した環境

  • macOS Mojave 10.14.2
  • Xcode 10.1
  • Swift 4.2

ホスト名の取得方法

  • 以下のようなコードで取得できます
if let hostName = Host.current().name {
    print(hostName)
}
  • 実行結果例(システム環境設定の共有から設定したコンピュータ名によって、結果は異なります)
my-business-mac.local

課題

  • 上記のコードで、一見問題ないように見えます
  • が、 Apple のドキュメント上ではこう書かれています

One of the hostnames of the receiver. Can be either a simple hostname, such as "sales", or a fully qualified domain name, such as "sales.anycorp.com".

  • つまり、複数あるうちのどの形式で返されるかわからないということです
  • 試しに、こんなコードを書いてみました
for hostName in Host.current().names {
    print(hostName)
}
  • 実行結果例
my-business-mac.local
MY-BUSINESS-MAC.local
localhost
  • 場合によっては localhost が返されてしまう可能性があるということかもしれません
    • 私の用途としては、ネットワーク上からアクセスできる名前が欲しかったので localhost が返されると厳しいです
  • 常に一番上の形式を返してくれればいいのですが、確実な保証はなさそうです

最後に

  • ホスト名を取得したい場面はいろいろありそうですが、少なくとも Host クラスでは指定した取得はできなさそうです
  • 他の API で上手く取得できる、などがあれば情報を頂けるとうれしいです
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0