カテゴリ: VB.NET 更新日: 2026/04/01

VB.NETでSharedメンバーを完全ガイド!初心者でもわかるオブジェクト指向とクラスの基礎

VB.NETでSharedメンバーを定義する方法
VB.NETでSharedメンバーを定義する方法

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

生徒

「VB.NETのクラスでSharedってよく見るんですけど、どういうときに使うんですか?」

先生

「Sharedは、クラスをつくらなくても使える特別なメンバーを定義するときに使うキーワードです。」

生徒

「クラスをつくらなくても使えるって、どういうことですか?普通はnewでオブジェクトを作りますよね?」

先生

「そうですね。でもSharedを使えば、クラスそのものに属する変数やメソッドを扱えるようになりますよ。今から詳しく説明していきましょう。」

1. Sharedメンバーとは?

1. Sharedメンバーとは?
1. Sharedメンバーとは?

VB.NETのSharedメンバーとは、クラスに属していて、オブジェクトを作らなくても使える特別な機能です。通常、クラスの変数やメソッドを使う場合は、newを使って「インスタンス(実体)」を作ります。しかしSharedを使うと、クラス名だけでアクセスできます。

例えば、家電のリモコンを考えてみましょう。普通の変数やメソッドは「テレビ1台ごとの設定」です。一方Sharedは「全てのテレビに共通の設定」のようなイメージです。どのテレビでも同じ情報を共有して使える、そんな役割がSharedです。

プログラム初心者でも、Sharedを理解することでクラス設計オブジェクト指向の考え方がより分かりやすくなります。特に、複数のオブジェクト間で情報を共有したい場面や、インスタンス化せずに利用したい便利な処理をつくりたいときに役立ちます。

2. Sharedメンバーはどんな場面で使える?

2. Sharedメンバーはどんな場面で使える?
2. Sharedメンバーはどんな場面で使える?

Sharedメンバーは、VB.NETのクラスプログラミングで幅広く使われます。たとえば次のような場面です。

  • アプリ全体で共通の値を管理したいとき(例:カウンター、設定値)
  • 便利なメソッドをまとめた「ユーティリティクラス」を作るとき
  • インスタンスを作らずに計算だけしたいとき
  • 複数のオブジェクトで同じ情報を共有するとき

具体例として、アクセス回数を数える「ページカウンター」を考えてみましょう。もしSharedを使わずに各オブジェクトごとにカウンターを持たせてしまうと、データが増えて管理が難しくなります。しかしSharedならアプリ全体で1つの数を共有できるため、動作がわかりやすくなります。

3. Shared変数の定義方法

3. Shared変数の定義方法
3. Shared変数の定義方法

Shared変数とは、クラス全体で共有される変数のことです。複数のインスタンスを作っても、同じ値を読み書きできます。書き方は簡単で、変数の前にSharedと書くだけです。


Public Class Counter
    Public Shared Count As Integer = 0
End Class

このようにすると、Countはオブジェクトを作らずに次のようにアクセスできます。


Counter.Count += 1
Console.WriteLine(Counter.Count)

4. Sharedメソッドの定義方法

4. Sharedメソッドの定義方法
4. Sharedメソッドの定義方法

Shared変数に続いて、Sharedメソッドもクラスから直接呼び出せる便利な機能です。インスタンスを作らずに、クラス単位で共通の処理をまとめたいときに使います。


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

呼び出し方は次の通りです。


Dim answer = MathUtil.Add(5, 3)
Console.WriteLine(answer)

5. すべてのインスタンスで共有される仕組み

5. すべてのインスタンスで共有される仕組み
5. すべてのインスタンスで共有される仕組み

Sharedメンバーは、クラスそのものに属するため、どのオブジェクトからでも同じ値にアクセスできます。初心者の方は「インスタンス」と「Shared」の違いが少しわかりにくいかもしれません。

インスタンス(オブジェクト)は「家電の1台1台」。Sharedは「全ての家電に共通の説明書」のようなイメージです。説明書は1つあれば充分であり、すべての家電から使用できます。

プログラム初心者でも、こうした例えで理解すると、VB.NETのSharedが持つ「共有のしくみ」がよくわかるようになります。

6. Sharedが便利な実例:アクセス回数を数える

6. Sharedが便利な実例:アクセス回数を数える
6. Sharedが便利な実例:アクセス回数を数える

ここでは、Sharedの便利さがよくわかる短いサンプルを紹介します。


Public Class AccessCounter
    Public Shared TotalAccess As Integer = 0

    Public Sub New()
        TotalAccess += 1
    End Sub
End Class

Module Program
    Sub Main()
        Dim a1 As New AccessCounter()
        Dim a2 As New AccessCounter()
        Dim a3 As New AccessCounter()

        Console.WriteLine(AccessCounter.TotalAccess)
    End Sub
End Module

実行結果


3

インスタンスを3つ作っただけでTotalAccessの値が3になっていることから、Shared変数がクラス全体で共有されていることがわかります。

7. Sharedを使う際の注意点

7. Sharedを使う際の注意点
7. Sharedを使う際の注意点

Sharedは便利な反面、使い方には注意点もあります。複数の場所から値が変更される可能性があるため、意図しない動作が起きることがあります。特に初心者の方は、「Sharedは全体共有」という性質をしっかり理解したうえで使うことが大切です。

例えば、ある画面でSharedの値を変更したのに、別の画面でもその値が変わってしまうことがあります。これは初心者が混乱しやすいポイントなので、Sharedの役割を明確にして設計しましょう。

また、プログラムが大きくなればなるほど、Sharedを乱用すると管理が難しくなります。用途を決めて最小限に使うことが、VB.NETのクラス設計を上達させるポイントです。

まとめ

まとめ
まとめ

本記事では、VB.NETにおけるSharedメンバーの基本から応用までを丁寧に解説してきました。Sharedはクラスに属する特別な仕組みであり、インスタンスを生成しなくても利用できる点が大きな特徴です。この性質を理解することで、オブジェクト指向の考え方がより深く理解できるようになります。 まず、Sharedメンバーはクラス全体で共有されるという重要なポイントがあります。通常のインスタンスメンバーは、それぞれのオブジェクトごとに独立した値を持ちますが、Sharedメンバーはすべてのインスタンスで同じ値を参照します。この違いを正しく理解することが、VB.NETでのクラス設計を行ううえで非常に重要です。 また、Shared変数を利用することで、アプリケーション全体で共通の状態を管理することができます。例えばアクセス回数や設定値など、どこからでも同じ情報にアクセスしたい場合に非常に便利です。このような用途では、インスタンスごとに値を持つよりもSharedで一元管理する方が効率的です。 Sharedメソッドについても重要な役割があります。ユーティリティ的な処理や計算処理など、インスタンスに依存しない処理をまとめる際に活用されます。クラス名から直接呼び出せるため、コードの可読性や再利用性が向上します。特に数学的な計算や文字列操作など、状態を持たない処理には最適です。 一方で、Sharedの利用には注意も必要です。全体で共有されるという特性上、どこからでも値が変更される可能性があります。そのため、意図しないタイミングで値が変わってしまうリスクがあります。大規模なプログラムになるほど、この影響は大きくなるため、設計段階でしっかりと役割を決めておくことが重要です。 また、Sharedを多用しすぎると、クラス間の依存関係が複雑になり、保守性が低下する可能性もあります。そのため、本当に共有すべきデータなのかを考えたうえで使用することが大切です。適切に使えば非常に便利な機能ですが、使いどころを誤るとバグの原因にもなります。 次に、理解を深めるためのサンプルプログラムを確認してみましょう。ここではShared変数とSharedメソッドを組み合わせた例を紹介します。


Public Class SampleManager
    Public Shared TotalCount As Integer = 0

    Public Sub New()
        TotalCount += 1
    End Sub

    Public Shared Function GetMessage() As String
        Return "現在のカウントは " & TotalCount & " です"
    End Function
End Class

Module Program
    Sub Main()
        Dim s1 As New SampleManager()
        Dim s2 As New SampleManager()

        Console.WriteLine(SampleManager.GetMessage())
    End Sub
End Module

上記の例では、インスタンスを生成するたびにShared変数が増加し、その結果をSharedメソッドで取得しています。このように、Sharedを組み合わせることでシンプルかつ分かりやすい設計が可能になります。 実行結果は以下の通りです。


現在のカウントは 2 です

この結果からも、インスタンスが複数存在していても、Shared変数が一つの値として管理されていることが確認できます。VB.NETのクラス設計において、このような共有の仕組みを理解することは非常に重要です。 まとめとして、Sharedメンバーはクラス全体で情報を共有するための強力な機能です。適切に活用することで、コードの効率化や再利用性の向上につながります。一方で、設計を誤るとバグの原因にもなるため、用途を明確にして使うことが重要です。初心者の方は、まずは簡単なカウンターやユーティリティメソッドから試してみると理解が深まります。

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

生徒

Sharedはクラス全体で共有される仕組みでインスタンスを作らなくても使えるのが特徴だと理解できました

先生

その通りですインスタンスごとではなくクラスそのものに属するという考え方が大切です

生徒

複数のオブジェクトで同じ値を使いたいときに便利でカウンターなどに向いていると感じました

先生

よく理解できていますユーティリティメソッドとして使うのも代表的な活用方法です

生徒

ただしどこからでも値が変更されるので使いすぎには注意が必要という点も重要ですね

先生

その意識があれば安心です設計段階で役割を明確にすることが良いプログラムにつながります

生徒

これからはインスタンスと共有の違いを意識してクラス設計を考えていきます

先生

とても良い姿勢です実際にコードを書きながら慣れていきましょう

関連記事:
カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETの変数とは?初心者向けに定義方法とよく使うデータ型を解説
New2
ASP.NET
ASP.NET MVCでモデルを定義してデータを扱う方法を初心者向けに解説
New3
ASP.NET
ASP.NETのマイグレーションを使ったスキーマ管理方法を完全解説!初心者でも安心
New4
ASP.NET
MacでASP.NET開発を始める方法|初心者向けにVisual Studioと.NET SDKを解説
人気記事
No.1
Java&Spring記事人気No1
ASP.NET
ASP.NETとは?初心者向けにできることと特徴をやさしく解説
No.2
Java&Spring記事人気No2
ASP.NET
ASP.NET WebFormsとは?基本概念と仕組みを初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
VB.NET
VB.NETで日付を文字列に変換!ToStringやFormatの使い方を徹底解説
No.4
Java&Spring記事人気No4
VB.NET
VB.NETプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
VB.NET
VB.NETで日付を加算・減算する方法を完全ガイド!AddDaysやAddMonthsの使い方
No.6
Java&Spring記事人気No6
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.7
Java&Spring記事人気No7
VB.NET
VB.NETで日付と時間を比較・計算する方法!CompareとSubtractを完全解説
No.8
Java&Spring記事人気No8
VB.NET
VB.NETのインストール方法まとめ!Visual Studioを使った環境構築手順