ある日こんなことを思った
「Swiftのプロジェクトを読んでるけど、API実行をする関数が『fetchHogeHoge』ってなってるな...fetch?」
今後のタスクにも関わるなと思ったので、Geminiに質問をすることにした。
Geminiとの会話
私)
こんにちは。swiftでのメソッド名の傾向について伺いたいです。
APIなどの外部データを取得するメソッドを実装する場合は
・getHogeHoge
・fetchHogeHoge
どちらが多いでしょうか?
Gemini)
こんにちは。
APIなどの外部データを非同期で取得する場合、Swiftでは fetchHogeHoge の方が一般的で、より推奨される傾向にあります。
理由と使い分け
fetch と get には、以下のようなニュアンスの違いと、Swift特有の事情があります。
-
fetchHogeHoge🚀
fetchは、「(時間やコストをかけて)わざわざ取りに行く」というニュアンスが強い動詞です。
適している場面:
ネットワークリクエスト (API呼び出し)
データベースからの読み込み
その他、完了までに時間がかかる可能性のある非同期の操作
API通信はまさにこれに該当するため、fetchUsers() や fetchImage(from: url) といった使い方が非常に一般的です。Appleのフレームワーク(例: Core Dataの NSFetchRequest)でも、この「取得処理」に fetch という用語が使われています。
-
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〜が多いので、ひとつの参考にしたいなと思います。