0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Swiftのメソッド名のルールについて、疑問に思ったことをGeminiに聞いてみた

Posted at

ある日こんなことを思った

「Swiftのプロジェクトを読んでるけど、API実行をする関数が『fetchHogeHoge』ってなってるな...fetch?」

今後のタスクにも関わるなと思ったので、Geminiに質問をすることにした。

Geminiとの会話

私)
こんにちは。swiftでのメソッド名の傾向について伺いたいです。
APIなどの外部データを取得するメソッドを実装する場合は
・getHogeHoge
・fetchHogeHoge
どちらが多いでしょうか?

Gemini)
こんにちは。

APIなどの外部データを非同期で取得する場合、Swiftでは fetchHogeHoge の方が一般的で、より推奨される傾向にあります。

理由と使い分け
fetchget には、以下のようなニュアンスの違いと、Swift特有の事情があります。

  1. fetchHogeHoge 🚀
    fetch は、「(時間やコストをかけて)わざわざ取りに行く」というニュアンスが強い動詞です。

適している場面:

ネットワークリクエスト (API呼び出し)

データベースからの読み込み

その他、完了までに時間がかかる可能性のある非同期の操作

API通信はまさにこれに該当するため、fetchUsers()fetchImage(from: url) といった使い方が非常に一般的です。Appleのフレームワーク(例: Core Dataの NSFetchRequest)でも、この「取得処理」に fetch という用語が使われています。

  1. getHogeHoge 🤔
    get は、単純に「(そこにあるものを)取得する」という意味合いです。

Swiftで避けられる理由:

SwiftのAPIデザインガイドラインでは、単純な値の取得(ゲッター)は、メソッドではなくプロパティ(例: user.name)として実装することが強く推奨されます。

getHogeHoge() というメソッド名は、古いC言語やJavaスタイルのAPI(getX() / setX())を連想させ、Swiftらしくないと見なされる傾向があります。

また、プロパティの get { ... } ブロックと用語が重複し、紛らわしくなる可能性もあります。

もし get をメソッドとして使う場合は、ローカルで完結する同期的な処理(例: context.getValue(forKey:))など、非常に限定的な場面になることが多いです。

まとめ
APIのように「非同期」で「外部」からデータを取得する処理には、その意図を明確に示す fetch を使うのが主流です。

ちなみに、最近の async/await の普及に伴い、loadData()downloadImage() のように、fetch よりもさらに具体的な動詞が使われるケースも増えています。

これをみて思ったこと

Swiftは

  • 時代の先を進んでる感を出したいのかもしれない
  • 単純な「取得」よりもっと踏み込んだ意味をメソッド名に持たせて欲しい

というのがあったのかな...なんて思いました。

命名ルールって言語の傾向もつかまないといけないのは、難しい。
こういうところもSwiftに慣れるきっかけとしたいなと思いました。

Geminiの回答がすべてではないと思いますが、読んでるプロジェクトものfetch〜が多いので、ひとつの参考にしたいなと思います。

0
0
2

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?