カテゴリ: VB.NET 更新日: 2025/12/15

VB.NETでStaticメソッドを定義する方法と活用例

VB.NETでStaticメソッドを定義する方法
VB.NETでStaticメソッドを定義する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、VB.NETのメソッドって毎回オブジェクトを作らないと使えないんですか?」

先生

「確かに普通のメソッドはオブジェクトを作ってから使います。でもVB.NETにはStaticメソッドという、オブジェクトを作らなくても使える方法があります。」

生徒

「Staticメソッドってどうやって作るんですか?」

先生

「では、例を交えて説明しますね。」

1. Staticメソッドとは?

1. Staticメソッドとは?
1. Staticメソッドとは?

VB.NETのStaticメソッドは、クラスそのものに紐づくメソッドで、 オブジェクト(インスタンス)を作らなくても呼び出せるのが大きな特徴です。 そのため「この処理は、どのオブジェクトでも同じ動きをする」 「状態を持たずに、決まった結果を返すだけ」といった処理に向いています。 初心者の方は、まずクラス共通の便利機能をまとめるためのメソッドだと考えると理解しやすいでしょう。

通常のメソッドは、クラスからオブジェクトを作成してから呼び出しますが、 Staticメソッドはクラス名をそのまま使って呼び出せます。 そのため、オブジェクト生成の手間がなく、コードも短く読みやすくなります。 「毎回同じ処理をするだけなのに、わざわざオブジェクトを作るのは面倒」 という場面では、Staticメソッドがとても便利です。

例えば、次のような「メッセージを表示するだけ」の処理は、 オブジェクトごとの状態を必要としないため、Staticメソッドに向いています。 プログラミング未経験の方でも、 「クラス名から直接呼んでいる」という点に注目すると理解しやすくなります。


Public Class MessageHelper
    Public Shared Sub ShowMessage()
        Console.WriteLine("Staticメソッドのサンプルです")
    End Sub
End Class

MessageHelper.ShowMessage()

Staticメソッドのサンプルです

この例では、MessageHelperクラスのShowMessageメソッドを、 オブジェクトを作らずに直接呼び出しています。 Staticメソッドは、このように処理の入口がはっきりしていて迷いにくいのも利点です。 まずは「共通で使う処理はStaticにできないか?」という視点を持つことが、 VB.NETのコードを整理する第一歩になります。

2. VB.NETでStaticメソッドを定義する方法

2. VB.NETでStaticメソッドを定義する方法
2. VB.NETでStaticメソッドを定義する方法

Staticメソッドを定義するには、Sharedキーワードを使います。 VB.NETでは「Static」という言い方よりも、Sharedメソッドという表現の方がよく登場します。 つまり、Sharedを付けたメソッドは「クラスに属するメソッド」になり、オブジェクト(インスタンス)を作らなくても呼び出せるようになります。 初心者の方は、まず「クラス名.メソッド名で呼べるのがShared」と覚えると混乱しにくいです。

また、Sharedメソッドは引数を受け取って結果を返す形と相性が良く、計算や変換などの共通処理をまとめるのに向いています。 下の例は、二つの数字を足し算するSharedメソッドです。 呼び出す側はNewでオブジェクトを作らずに、クラス名からそのまま利用できます。


Public Class MathUtility
    Public Shared Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

Dim result As Integer = MathUtility.Add(5, 3)
Console.WriteLine(result) '8が表示される

8

上の例では、MathUtilityクラスのAddメソッドをオブジェクトを作らずに直接呼び出しています。 これがStatic(Shared)メソッドの基本形です。 もし同じ計算をいろいろな場所で使うなら、Sharedメソッドにしておくと呼び出しが統一されて読みやすくなります。 まずは、短い処理をSharedにして「クラス名から呼べる便利さ」を体感してみると理解が深まります。

3. Staticメソッドと通常のメソッドの違い

3. Staticメソッドと通常のメソッドの違い
3. Staticメソッドと通常のメソッドの違い

通常のメソッドはオブジェクトに紐づくため、クラスごとに異なるデータを扱うことができます。しかしStaticメソッドはクラスに属するため、個別のオブジェクト情報は使えません。逆に言えば、クラス共通の処理をまとめるのに向いています。


Public Class Counter
    Private Shared count As Integer = 0

    Public Shared Sub Increment()
        count += 1
        Console.WriteLine("カウント: " & count)
    End Sub
End Class

Counter.Increment()
Counter.Increment()

カウント: 1
カウント: 2

この例では、オブジェクトを作らずにIncrementメソッドを呼んで、共通のカウント値を更新しています。Staticメソッドは状態をクラス単位で管理する場合にも便利です。

4. Staticメソッドを使う場面

4. Staticメソッドを使う場面
4. Staticメソッドを使う場面

Staticメソッドは次のような場面で活用されます:

  • 計算やユーティリティ関数(例:数学計算、文字列操作)
  • 共通の状態や設定を管理するメソッド
  • オブジェクトを作る必要がない一時的な処理

プログラムが大きくなると、無駄にオブジェクトを作らずに済むStaticメソッドは、メモリや処理効率の面でも有利です。

5. 注意点

5. 注意点
5. 注意点

Staticメソッドでは、クラスごとの共通データしか扱えないので、個々のオブジェクトの情報にはアクセスできません。オブジェクトごとに異なる状態を操作したい場合は、通常のインスタンスメソッドを使いましょう。

6. ポイント整理

6. ポイント整理
6. ポイント整理

VB.NETでは、Staticメソッド(Sharedメソッド)を使うことで、 オブジェクトを作成せずに処理を呼び出せるという大きな利点があります。 計算処理や変換処理、共通で使う判定ロジックなど、 「どのオブジェクトでも同じ結果になる処理」はStaticメソッドにまとめると、 コードの見通しが良くなり、全体の構造も整理されます。 初心者の方は、まず「状態を持たない処理かどうか」を判断基準にすると分かりやすいでしょう。

また、Staticメソッドを使うことで、 「どこからでも同じ呼び方で使える」という安心感も得られます。 クラス名から直接呼び出せるため、処理の入口がはっきりし、 後からコードを読み返したときにも理解しやすくなります。 共通処理をあちこちに書いてしまうより、 Staticメソッドとして一か所にまとめる方が、修正や管理も楽になります。


Public Class StringUtility
    Public Shared Function IsEmpty(text As String) As Boolean
        Return String.IsNullOrEmpty(text)
    End Function
End Class

Dim result As Boolean = StringUtility.IsEmpty("")
Console.WriteLine(result)

True

この例では、文字列が空かどうかを判定する処理をStaticメソッドとして定義しています。 このように、毎回同じ判定を行う処理はStaticメソッドにしておくと再利用しやすく、 プログラム全体の品質も向上します。 Staticメソッドと通常のメソッドを使い分ける意識を持つことが、 VB.NETで読みやすく保守しやすいコードを書くための重要なポイントです。

まとめ

まとめ
まとめ

この記事では、VB.NETにおけるStaticメソッド(Sharedメソッド)の基本的な考え方から、定義方法、通常のメソッドとの違い、そして具体的な活用場面までを順番に確認してきました。 Staticメソッドは「オブジェクトを作らずに呼び出せる」という点が最大の特徴であり、クラス共通の処理や計算、ユーティリティ的な機能をまとめる際に非常に役立ちます。 プログラムを書き始めたばかりの頃は、どうしてもすべての処理をインスタンスメソッドで書いてしまいがちですが、 「この処理は本当にオブジェクトごとに必要なのか?」と一度立ち止まって考えることで、Staticメソッドを使うべき場面が見えてきます。

Staticメソッドは、クラスそのものに属するため、個々のオブジェクトの状態には依存しません。 その代わり、どこから呼び出しても同じ振る舞いをする「共通の処理」として機能します。 例えば、数値の計算、文字列の加工、設定値の取得、カウント処理など、 プログラム全体で共通して使う処理はStaticメソッドにしておくと、コードの見通しが良くなります。 無駄なオブジェクト生成を減らせるため、処理の流れもシンプルになり、結果として保守しやすい構成につながります。

一方で、Staticメソッドには注意点もあります。 クラス共通のデータしか扱えないため、オブジェクトごとに異なる値を持たせたい場合には向いていません。 そのため、「共通処理はStaticメソッド」「個別の状態を扱う処理は通常のメソッド」というように、 役割を意識して使い分けることが大切です。 この判断ができるようになると、VB.NETでのクラス設計が一段と分かりやすくなり、 他の人が読んでも理解しやすいコードを書けるようになります。

Staticメソッドの考え方を整理するサンプル


Public Class MessageUtil
    Public Shared Function CreateMessage(name As String) As String
        Return "こんにちは、" & name & "さん"
    End Function
End Class

Dim msg As String = MessageUtil.CreateMessage("太郎")
Console.WriteLine(msg)

こんにちは、太郎さん

このサンプルでは、名前を受け取って挨拶文を作る処理をStaticメソッドとして定義しています。 このような処理は、特定のオブジェクトの状態に依存しないため、Staticメソッドとして切り出すのに適しています。 クラス名から直接呼び出せることで、「これは共通処理だ」という意図もコードから伝わりやすくなります。 小さなサンプルですが、Staticメソッドの考え方を理解するには十分な例と言えるでしょう。

先生と生徒の振り返り会話

生徒

「Staticメソッドって、ただオブジェクトを作らなくていいだけかと思っていましたが、 共通処理をまとめるための考え方なんですね。」

先生

「その通りです。オブジェクトを作らないという点は結果であって、 本質は『クラス全体で共通して使う処理』をどう整理するか、というところにあります。」

生徒

「計算や文字列の処理みたいに、どこから呼んでも同じ結果になるものは、 Staticメソッドにすると分かりやすそうですね。」

先生

「そうですね。逆に、ユーザーごとの状態や画面ごとの情報を扱うなら、 通常のメソッドを使ったほうが自然です。役割で使い分けるのが大切です。」

生徒

「Staticメソッドと普通のメソッドを意識して使い分けるだけで、 プログラムが整理される理由が少し分かってきました。」

先生

「それが理解できれば十分です。最初は小さなユーティリティからで構いません。 Staticメソッドを使う感覚に慣れていきましょう。」

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET WebFormsのGridViewでデータ表示を完全マスター!初心者向けガイド
New2
VB.NET
VB.NETの例外処理とパフォーマンスの関係を初心者向けに完全解説
New3
ASP.NET
ASP.NET WebFormsでデータベースと連携!初心者でもできる保存と表示の基本
New4
VB.NET
VB.NETでStackTraceを利用してエラー箇所を特定する方法を完全解説!初心者向け例外処理入門
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのEnum(列挙型)の使い方を完全解説!初心者にも分かる定義と活用方法
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのIf文の使い方と条件分岐を完全ガイド!初心者でもわかる基本構文と実例
No.3
Java&Spring記事人気No3
VB.NET
VB.NETのBoolean型(True/False)の使い方と条件分岐での活用方法を徹底解説!初心者でも理解できる基本
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.5
Java&Spring記事人気No5
VB.NET
VB.NETの例外処理を完全ガイド!初心者でもわかるSystem.Exceptionの仕組み
No.6
Java&Spring記事人気No6
VB.NET
VB.NETプログラムの実行方法まとめ!Visual Studio・コマンドラインの使い方
No.7
Java&Spring記事人気No7
VB.NET
VB.NETのコンストラクタと初期化処理の書き方を初心者向けに解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETでの変数名の付け方とは?わかりやすくエラーの起きにくい命名規則を紹介