Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】sin()関数の使い方

sin関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

sin関数は、指定された数値の正弦(サイン)を計算する関数です。この関数は、数学における三角関数の一つであるサイン(正弦)の値を求めます。

引数としては、計算対象となる角度をラジアン単位で指定します。プログラミングや数学の多くの分野では、角度の単位として度数ではなくラジアンが標準的に用いられます。ラジアンは、円の半径と同じ長さの弧の中心角を1ラジアンとする単位で、例えば180度は約3.14159(π)ラジアンに相当します。もしお手元に度数表記の角度しかない場合は、PHPのdeg2rad()関数を利用してラジアン値に変換してからsin関数に渡すことで、意図した結果を得ることができます。

戻り値は、引数で与えられた角度の正弦値を示す浮動小数点数(float型)です。この正弦値は数学的な性質上、常に-1.0から1.0の範囲内の数値となります。

sin関数は、科学技術計算、物理シミュレーション、グラフ描画、ゲーム開発など、多岐にわたる分野で、周期的な動きや波形を扱う際に非常に重要な役割を果たします。PHPの標準的な拡張機能として提供されているため、特別な設定やライブラリの読み込みなしに、すぐに利用を開始できます。

構文(syntax)

1<?php
2$result = sin(M_PI / 2);
3?>

引数(parameters)

float $num

  • float $num: 角度(ラジアン)を指定する浮動小数点数

戻り値(return)

float

指定された角度(ラジアン)の正弦(サイン)値を浮動小数点数(float)で返します。

サンプルコード

PHPシングルトンでサイン値を取得する

1<?php
2
3/**
4 * MathHelperSingleton クラスは、数学計算ユーティリティへのシングルトンアクセスを提供します。
5 * このパターンにより、クラスのインスタンスがシステム全体で常に一つであることを保証し、
6 * グローバルなアクセスポイントを提供します。
7 *
8 * シングルトンは、リソースマネージャや設定オブジェクトなど、
9 * システム内で一意であるべきオブジェクトに役立ちます。
10 */
11class MathHelperSingleton
12{
13    /**
14     * @var MathHelperSingleton|null シングルトンのインスタンスを保持する静的プロパティ。
15     *                               nullの場合はまだインスタンスが作成されていないことを示します。
16     */
17    private static ?MathHelperSingleton $instance = null;
18
19    /**
20     * コンストラクタをプライベートにすることで、外部からの直接的なインスタンス化を防ぎます。
21     * シングルトンパターンでは、インスタンスは getInstance() メソッドを通じてのみ作成されます。
22     */
23    private function __construct()
24    {
25        // 必要に応じて、ここで初期化処理を行うことができます。
26        // 例: ログの初期化、データベース接続など
27    }
28
29    /**
30     * クローン作成を防ぎます。
31     * これにより、既存のシングルトンインスタンスを複製して、
32     * 複数のインスタンスが作成されるのを防ぎます。
33     */
34    private function __clone()
35    {
36    }
37
38    /**
39     * シングルトンインスタンスへのアクセスを提供します。
40     * このメソッドは、クラスの唯一のインスタンスを返します。
41     * まだインスタンスが存在しない場合は、新しく作成します。
42     *
43     * @return MathHelperSingleton クラスの唯一のインスタンス。
44     */
45    public static function getInstance(): MathHelperSingleton
46    {
47        if (self::$instance === null) {
48            self::$instance = new self();
49        }
50        return self::$instance;
51    }
52
53    /**
54     * 与えられた角度のサイン(正弦)値を計算して返します。
55     * PHPの組み込み関数 `sin()` を使用します。
56     * 引数 `$num` はラジアン単位の角度でなければなりません。
57     *
58     * @param float $num ラジアン単位の角度。
59     * @return float 指定された角度のサイン値。
60     */
61    public function getSine(float $num): float
62    {
63        return sin($num);
64    }
65}
66
67// --- サンプルコードの実行例 ---
68
69// シングルトンインスタンスを取得します。
70// 最初に呼び出されたときにインスタンスが作成されます。
71$mathHelper1 = MathHelperSingleton::getInstance();
72
73// 同じインスタンスを再度取得します。
74// 常に同じインスタンスが返されるため、これは $mathHelper1 と同じオブジェクトを参照します。
75$mathHelper2 = MathHelperSingleton::getInstance();
76
77// 角度90度(π/2ラジアン)のサイン値を計算します。
78// PHPの定数 M_PI は円周率πを表します。
79$angleRad = M_PI / 2;
80$sineValue = $mathHelper1->getSine($angleRad);
81
82echo "角度 " . $angleRad . " ラジアン (90度) のサイン値は: " . $sineValue . "\n"; // 出力: 1
83
84// 別のインスタンス(実際には同じインスタンス)を使って、角度0度(0ラジアン)のサイン値を計算します。
85$angleRad2 = 0.0;
86$sineValue2 = $mathHelper2->getSine($angleRad2);
87
88echo "角度 " . $angleRad2 . " ラジアン (0度) のサイン値は: " . $sineValue2 . "\n"; // 出力: 0
89
90// $mathHelper1 と $mathHelper2 が同じインスタンスであることを確認できます。
91// (例えば var_dump($mathHelper1 === $mathHelper2); は true を出力します)
92
93?>

このPHPサンプルコードは、シングルトンデザインパターンを適用したMathHelperSingletonクラスで、サイン(正弦)値の計算機能を提供する方法を示しています。シングルトンパターンとは、特定のクラスのインスタンスがシステム全体で常に一つだけ存在することを保証し、その唯一のインスタンスへのグローバルなアクセスポイントを提供するデザインパターンです。これにより、リソースマネージャや設定オブジェクトなど、システム内で一意であるべきオブジェクトに役立ちます。

MathHelperSingletonクラスは、コンストラクタとクローンメソッドをprivateに設定することで、外部からの直接的なインスタンス化や複製を防いでいます。クラスの唯一のインスタンスは、public staticgetInstance()メソッドを通じてのみ取得できます。このメソッドは、初回呼び出し時にインスタンスを生成し、以降の呼び出しでは常に同じインスタンスをMathHelperSingleton型として返します。

提供されるgetSine(float $num)メソッドは、PHPの組み込み関数sin()を利用して、引数$numで指定されたラジアン単位の角度のサイン値を計算します。$numは浮動小数点数で、例えばM_PI / 2(90度)や0.0(0度)といった角度を表します。このメソッドは計算結果をfloat型のサイン値として返します。サンプルコードの実行例では、getInstance()を複数回呼び出しても常に同じインスタンスが返され、それを使って異なる角度のサイン値が正しく計算される様子が示されています。

このコードはPHPのsin関数とシングルトンパターンを組み合わせています。sin関数は角度をラジアン単位で受け取るため、度数で計算したい場合はdeg2rad()関数などでラジアンに変換してください。シングルトンパターンは、クラスのインスタンスをシステム内で一つに制限する目的で利用されますが、その性質上、テストが難しくなる場合や、安易な利用はコードの柔軟性を損なう可能性がある点に注意が必要です。グローバルなリソース管理など、本当に単一インスタンスが不可欠な場合に限定して採用することが推奨されます。PHP 8の型宣言は、引数や戻り値の期待される型を明確にし、コードの信頼性を高めています。

PHP sin() 関数で角度のサインを計算する

1<?php
2
3/**
4 * 角度計算に関連するユーティリティ機能を提供するクラス。
5 *
6 * システムエンジニアの皆さん、このクラスは、幾何学的な計算や物理演算が必要な場合に利用できます。
7 * 例えば、Symfonyアプリケーションのサービス層で、特定の計算ロジックをカプセル化するために
8 * このようなユーティリティクラスが作成されることがあります。
9 */
10class AngleCalculator
11{
12    /**
13     * 指定された角度(度数法)のサイン(正弦)を計算します。
14     *
15     * PHPの組み込み関数である `sin` はラジアン単位の角度を引数として受け取ります。
16     * そのため、このメソッドではまず度数法をラジアンに変換してから計算を行います。
17     *
18     * @param float $degrees 角度(度数法)。例: 30.0, 90.0
19     * @return float 指定された角度のサイン値。
20     */
21    public function calculateSine(float $degrees): float
22    {
23        // 度数法をラジアンに変換します。
24        $radians = deg2rad($degrees);
25
26        // sin関数を使用してサイン値を計算します。
27        $sineValue = sin($radians);
28
29        return $sineValue;
30    }
31}
32
33// --- 以下は AngleCalculator クラスの利用例です ---
34
35$calculator = new AngleCalculator();
36
37// 角度30度のサイン値を計算し、表示します。
38$angleInDegrees1 = 30.0;
39$sineResult1 = $calculator->calculateSine($angleInDegrees1);
40echo "{$angleInDegrees1} 度のサイン値: " . $sineResult1 . PHP_EOL;
41
42// 角度90度のサイン値を計算し、表示します。
43$angleInDegrees2 = 90.0;
44$sineResult2 = $calculator->calculateSine($angleInDegrees2);
45echo "{$angleInDegrees2} 度のサイン値: " . $sineResult2 . PHP_EOL;
46
47// 角度180度のサイン値を計算し、表示します。
48$angleInDegrees3 = 180.0;
49$sineResult3 = $calculator->calculateSine($angleInDegrees3);
50echo "{$angleInDegrees3} 度のサイン値: " . $sineResult3 . PHP_EOL;
51
52// 角度270度のサイン値を計算し、表示します。
53$angleInDegrees4 = 270.0;
54$sineResult4 = $calculator->calculateSine($angleInDegrees4);
55echo "{$angleInDegrees4} 度のサイン値: " . $sineResult4 . PHP_EOL;

このPHPコードは、角度計算に関連する機能を提供するAngleCalculatorクラスと、その利用例を示しています。システム開発において、幾何学的な計算や物理演算が必要な場面で、このようなユーティリティクラスが利用されます。特にSymfonyのようなフレームワークを使用する際、計算ロジックを特定のサービスとして切り出す場合に役立ちます。

AngleCalculatorクラス内のcalculateSineメソッドは、指定された角度(度数法)のサイン(正弦)を計算します。引数$degreesには、例えば「30.0」や「90.0」のような度数で表現された角度をfloat型で渡します。PHPの組み込み関数であるsinはラジアン単位の角度を引数として受け取るため、このメソッドではまずdeg2rad関数を使って度数法をラジアンに変換してからsin関数を呼び出しています。最終的に、計算されたサイン値がfloat型で戻り値として返されます。

コードの後半では、AngleCalculatorクラスのインスタンスを作成し、calculateSineメソッドを使って30度、90度、180度、270度のサイン値を順に計算し、その結果を表示しています。これにより、メソッドの具体的な使い方と、各角度に対するサイン値がどのように求められるかを確認できます。

PHPのsin関数は、引数に「ラジアン」単位の角度を期待します。サンプルコードでは、度数法で入力された角度をdeg2rad関数でラジアンに変換してからsin関数を呼び出しており、この単位変換が非常に重要です。変換を忘れると計算結果が期待と異なりますので注意してください。また、浮動小数点数での計算は、ごくわずかな誤差を含む場合があります。サンプルコードのように計算ロジックをクラスにカプセル化すると、単位変換などの共通処理をまとめられ、Symfonyなどのフレームワークでの再利用やテストが容易になります。これにより、アプリケーション全体のコード品質が向上します。

PHP: sin関数とクォーテーションによる変数展開の表示

1<?php
2
3/**
4 * 指定されたラジアン角度のサイン値を計算し、
5 * 結果をダブルクォーテーションとシングルクォーテーションを用いた文字列で表示します。
6 *
7 * この関数は、PHPにおける文字列の扱い、特に変数展開の違いを初心者向けに示します。
8 *
9 * @param float $angleRadians ラジアン単位の角度(例: M_PI / 2 は90度)
10 * @return void
11 */
12function demonstrateSineAndStringQuotes(float $angleRadians): void
13{
14    // sin() 関数は引数としてラジアン単位の角度を取り、そのサイン値を float で返します。
15    // 例: M_PI / 2 (90度) のサイン値は 1.0 です。
16    $sineValue = sin($angleRadians);
17
18    echo "--- sin() 関数の結果と文字列の表示 ---" . PHP_EOL;
19    echo "計算対象の角度 (ラジアン): {$angleRadians}" . PHP_EOL;
20    echo "計算されたサイン値: {$sineValue}" . PHP_EOL . PHP_EOL;
21
22    // ダブルクォーテーション ("...") の文字列:
23    // 文字列内で $変数名 を記述すると、PHPが自動的にその変数の値に展開します(変数展開)。
24    echo "■ ダブルクォーテーションの例 (変数展開あり):" . PHP_EOL;
25    echo "「{$angleRadians}ラジアンのサイン値は {$sineValue} です。」" . PHP_EOL . PHP_EOL;
26
27    // シングルクォーテーション ('...') の文字列:
28    // 文字列内で $変数名 を記述しても、PHPは変数を展開せず、リテラル(そのままのテキスト)として扱います。
29    // 変数の値を含めたい場合は、ドット(.)演算子を使って文字列を結合する必要があります。
30    echo "■ シングルクォーテーションの例 (変数展開なし):" . PHP_EOL;
31    echo '「$angleRadians ラジアンのサイン値は $sineValue です。」' . PHP_EOL;
32    echo '※ このように、シングルクォーテーション内では変数は展開されません。' . PHP_EOL . PHP_EOL;
33
34    echo "■ シングルクォーテーションの例 (ドット結合で変数を組み込む):" . PHP_EOL;
35    echo '「' . $angleRadians . 'ラジアンのサイン値は ' . $sineValue . ' です。」' . PHP_EOL;
36    echo '※ 変数の値を含めるには、ドット(.)演算子で文字列を結合します。' . PHP_EOL;
37}
38
39// サンプルとして、90度(π/2ラジアン)のサイン値を計算し、表示します。
40// M_PI はPHPに組み込まれている円周率の定数です。
41$angleForCalculation = M_PI / 2;
42
43// 関数を呼び出して実行します。
44demonstrateSineAndStringQuotes($angleForCalculation);
45
46// 別の例: 0ラジアンの場合 (サイン値は0)
47// demonstrateSineAndStringQuotes(0.0);

PHPのsin関数は、引数として渡されたラジアン単位の浮動小数点数(角度)のサイン値を計算し、float型で返します。例えば、90度(M_PI / 2ラジアン)のサイン値は1.0です。

このサンプルコードでは、sin関数の利用に加え、PHPにおける文字列の表現方法である「ダブルクォーテーション」と「シングルクォーテーション」の挙動の違いを解説しています。

ダブルクォーテーション(")で囲まれた文字列内では、$変数名と記述すると、その変数の値が自動的に文字列内に展開されます。

一方、シングルクォーテーション(')で囲まれた文字列内では、変数は展開されず、$変数名がそのままの文字列として扱われます。変数の値を含めるには、文字列と変数をドット(.)演算子で結合する必要があります。PHPで文字列を効果的に扱うために、これらの引用符による挙動の違いを理解することは大切です。

sin()関数は、引数として「ラジアン」単位の角度を要求します。度数で計算したい場合は、deg2rad()関数でラジアンに変換してから利用してください。

PHPの文字列リテラルは、囲むクォーテーションの種類で動作が変わります。ダブルクォーテーション(")で囲むと、文字列中の$変数名が自動的にその変数の値に展開されます。これにより、動的な値を文字列に組み込むのが容易になります。

一方、シングルクォーテーション(')で囲んだ場合、$変数名は文字としてそのまま扱われ、変数展開は行われません。シングルクォーテーションの文字列に変数の値を含めたい際は、ドット(.)演算子を用いて文字列と変数を明示的に結合する必要があります。

これらの違いを理解し、変数展開の必要性や意図しない展開の回避、パフォーマンスを考慮して適切に使い分けることが重要です。

PHP sin関数でサイン値を計算する

1<?php
2
3/**
4 * 指定されたラジアン角度のサイン値を計算し、結果を出力する関数。
5 * システムエンジニアを目指す初心者向けに、PHPのsin関数の基本的な使い方を示します。
6 *
7 * @param float $angleInRadians 計算したい角度(ラジアン単位)
8 * @return void
9 */
10function calculateAndDisplaySine(float $angleInRadians): void
11{
12    // sin()関数を使ってサイン値を計算します。
13    // sin()は引数としてfloat型の数値(ラジアン単位の角度)を受け取り、
14    // float型のサイン値を返します。
15    $sineValue = sin($angleInRadians);
16
17    // 計算結果を出力します。
18    // 参考のため、ラジアン角度を度数法に変換して表示します。
19    $angleInDegrees = rad2deg($angleInRadians);
20
21    echo "角度: " . $angleInDegrees . "度 (" . $angleInRadians . "ラジアン)\n";
22    echo "サイン値: " . $sineValue . "\n";
23}
24
25// --- サンプルコードの実行例 ---
26
27// 例1: 90度(π/2ラジアン)のサイン値を計算
28// M_PI はPHPが提供する円周率πの定数です。
29calculateAndDisplaySine(M_PI / 2);
30
31// 例2: 0度(0ラジアン)のサイン値を計算
32calculateAndDisplaySine(0.0);
33
34// 例3: 180度(πラジアン)のサイン値を計算
35calculateAndDisplaySine(M_PI);
36
37// 例4: 30度(π/6ラジアン)のサイン値を計算
38calculateAndDisplaySine(M_PI / 6);
39
40?>

PHPのsin関数は、指定された角度のサイン(正弦)を計算するために利用されます。この関数は、引数として計算したい角度を浮動小数点数(float)で一つ受け取ります。ここで最も重要なのは、引数に渡す角度がラジアン単位であるという点です。例えば、90度を計算したい場合は、PHPの定数M_PI(円周率π)を利用してM_PI / 2として渡します。戻り値は、計算されたサイン値であり、これも浮動小数点数(float)で返されます。サイン値は必ず-1から1の範囲内の数値です。

提供されたサンプルコードでは、calculateAndDisplaySineという関数が定義されており、その中でsin()関数の具体的な使用例が示されています。この関数は、引数として受け取ったラジアン角度をsin()関数に渡し、得られたサイン値を画面に出力します。例として、90度(M_PI / 2ラジアン)、0度(0ラジアン)、180度(M_PIラジアン)、30度(M_PI / 6ラジアン)といった、よく使われる角度でのサイン値の計算結果が示されており、それぞれの角度に対するsin()関数の挙動を直接確認することができます。このように、数学関数を扱う際には、引数の単位を正しく理解することが重要となります。

PHPのsin関数は、角度をラジアン単位で受け取るため、度数法で計算したい場合はdeg2rad()関数で変換するか、PHPの定数M_PIを活用してラジアン値を指定する点に注意が必要です。この引数の単位は初心者が間違いやすいポイントです。関数の戻り値は浮動小数点数(float)であり、計算結果には浮動小数点数特有の微小な誤差が含まれる可能性があるため、厳密な数値比較には配慮してください。引数と戻り値に型ヒントを明記することで、コードの意図が明確になり、堅牢性が向上します。

関連コンテンツ

関連プログラミング言語