プログラミングこんにちは。いっとくです!都内でWebエンジニアやってまっす!プログラミングってすごく奥深いな〜と思うことがあって、知識や経験が増えるほど、かつて「なにこれ?必要なん?」って思っていたことの重要さや便利さに気づいたりします。そんなプログラミングの勉強を初めて間もない頃に全然理解できなかった便利機能のひとつがPHPの型宣言(タイプヒンティング)!関数やメソッドを定義する際に引数を設定することがあると思うんですけど、型宣言をすることによって別のデータ型の引数が渡された際にエラーを出すことができるようになります。ぶっちゃけると僕はプログラミングを始めてしばらくするまで、この型宣言を使う意味が全くわからなかった。プログラミングを勉強した時に習わなかったし、頭がいい人が作った機能の意図を自分で読み解けるほど優秀でもなかったので。最近ようやくこの型宣言をすることの嬉しさがわかってきました!ということで今回はプログラミングを勉強を始めたばかりで、型宣言をすることのメリットが一体なんなのか全然わからないという人のためになるべく噛み砕いて解説できればと思います!スポンサードリンク僕はなぜ型宣言のメリットを理解できなかったのかまず僕が初めて型宣言の書き方を知った時、このように思ったのです。なんでわざわざ自分でエラーが出るポイントを増やさなきゃならんのだ??そりゃそうです。プログラミングを始めた頃ってエラーが怖いんです。いうのも当時の僕にとってエラーっていうのはゲームでいうと「ミッション失敗」だったんですよ。どこかで間違えたからエラーが出て、そのプログラムを完成させるというミッションに失敗したんだという感覚でした。プログラミングってHTMLとかCSSから足を突っ込むことがほとんどだと思うんですけど、あれってエラー出ないじゃないですか。表示はぶっ壊れるけど。エラーにも慣れていなくて、エラーが出る度に自分の無能さを突きつけられているような気がして怖かったんですよ。型宣言は、その怖いエラーが出るパターンを増やすことなので、一体なにがしたいの?ドMなの?なんて思っちゃっていたわけです。いうわけで、タイプヒンティングの便利さを理解するためには、まずこのエラーがミッション失敗の通告ではなくて病気になりかかっているサインだと気づく必要があります。僕らは怪我をすると痛みを感じますが、この痛みは体が危険に気づくために備わっているサインです。痛みがないと気づかないうちに血が出まくって死んでしまうかもしれません。エラーも同じくプログラムがぶっ壊れそうなサインなのです。怪我と同じで精神的には痛いけど、これがないとプログラムが死んでしまうという重要なサインなので、適度に仲良くしていきましょう。型宣言とはドMのプログラマーが自分の精神を追い詰めた縛りプレイを楽しむものではなく、いままで気づけなかった病気に気づくためのセンサーをつけるということなのです!型宣言(タイプヒンティング)の嬉しいポイントでは型宣言をすることによる嬉しいポイントを簡単な例で見ていきましょう。}}上記のコードのように渡した配列の中身を全て出力するプログラムがあったとします。この関数に文字列を渡してしまった場合、foreachの引数で文字列を扱うことができないので、エラーが起きてしまいます。foreach()というエラーが発生するなので、関数内ではちゃんと配列が渡されたかどうかをチェックする必要があります。}}これでなにが来ても安心ですね。型宣言で引数の型を指定してあげれば、わざわざチェックしなくてもその前にエラーを出して気付くことができます。}}もちろんこんなシンプルな例だと普通はどう使えばいいか気付くし、どっちにしろエラー出るからいいんですが、PHPは割と規則がゆるい言語なので処理によってエラーは出てないくせに、間違ったまま動いてしまうということがあります。それに後から気づいて、よくよく見直したらこの関数に別のデータ型を渡していたからだった!なんてなると、いちいち処理を遡ってチェックしないといけないので、気付くまでに時間がかかってしまいます。実際に現場でプログラムを書いているとチーム開発になることが多いので、他の人が作った関数やメソッドを使うことがあります。すると関数やメソッドが作成者の意図と異なった使われ方をする時があり、それが予期せぬバグを生み出したりします。それが最初から型宣言をしておけば、間違ったままとりあえず動くみたいな状況に陥る前にここが間違ってますよー!と知ることができるようになるわけです。使う側も指定されていれば、あぁここはなんか理由があってこの型を指定してるんだと気付くでしょう。これが型宣言の大きなメリットでしょう!チーム開発において自分が書いたコードの使い方をより具体的に他のプログラマーに伝えることで、バグが発生する確率を減らしていきます。あと、もう一つのメリットは受け取った値チェックを型宣言に任せることもできます!先ほど書いたコードではis_array()で配列かどうかをチェックしていましたが、型を指定することによってこの処理を丸ごと省略することができました。同様に他の型が渡された場合もちゃんとした渡され方をしているかどうか、引数の型を指定するだけでチェックできちゃいます。PHPの型宣言で指定できる方と対応しているバージョンは以下の通り。処理}こうすることで、コード内でis_arrayやis_string、instanceofなどの型チェックを行わなくてもよくなるのでコードをスッキリさせることができます。関数を呼び出す際に値をチェックをするということは当然計算量が増えるため、パフォーマンスに影響を与えるという話も聞いたことがあります。いうことで試しに計測してみましたが、体感できるような差が生まれるとは考えにくいくらいのものでした。できる限り型宣言を使った方が、安全でバグが見つかりやすいコードができるためメリットがあるように思えます。特定ページだけWebサイトの色合いを変えたいけど、画像の編集が面倒だと思う人に送るfilterプロパティの活用【CSS】こんにちは。普段の業務では、PHPを使ってサーバー...記事を読む【PHP】goto構文の使い方と注意点こんにちは。...記事を読む【PHP】エラー制御演算子に正しい使い道はあるのか?こんにちは。現在PHPを使ったWebサイト運用の現場にいるのですが、ちらっとソースコードの中にエラー制御演算子を...記事を読むプログラミングにタイピング速度は必要か?こんにちは。2年以上ブログを書き続けているので、社会人になった時...記事を読む【CSS】nth-childとnth-of-typeの違いを徹底検証してみるこんにちは。都内でWebのエンジニアをやっています。普段はPHPを使っている時間が圧倒的に長いのですが、...記事を読む【CSS】100vwはスクロールバーを含むという罠こんにちは。エンジニアですがCSSがあまり好きではありません。コメントをキャンセルメールアドレスが公開されることはありません。*サイトスポンサーリンク検索このサイトについて1年ちょっとリゾートバイトをして100万円を貯めたのち、セブにてIT留学!現在は都内のWEB制作会社にてエンジニアとして楽しくお仕事中。できる限り面白く書くことをモットーにお香や本のレビュー、プログラミングを中心に記事を書いてます。