活動の様子

型を意識する

型を意識する

初めまして、NUTMEGの五十嵐です。 プログラミング2年目にして、はじめて触った静的型付けについてお話しします。

動的型付けと静的型付け

まず、プログラミング言語は大きく「動的型付け言語」と「静的型付け言語」の2つに分かれます。この違いは、変数や関数の引数、返り値に対して型が自動的に判定されるか自ら宣言するかにあります。

動的型付け

  • プログラムを実行時に型の変換が行われ型が決定される。
  • インタプリタ言語とも言われる。

型宣言が必要ないためコードがシンプルで書きやすいです。 私が今までに触ってきたRuby, Python, JavaScriptがこれにあたります。

// JavaScript 型付けなし
const add = (x, y) => {
 return x + y;
};
console.log(add(1,2)); //3

静的型付け

  • 型付けが実行前に行われる。
  • コンパイラ言語とも言われる。

予め明示的に型を定義することで、その変数が扱うデータを制限できます。 プログラムの実行前に型検査(演算とデータの型が適合しているかを確かめる型の検査)が行われます。 私が触り始めたTypeScriptがこれにあたります。

// TypeScript 引数、返り値、関数自体にそれぞれ型付け
const add: (baseValue: number, increment: number) => number = (
 x: number,
 y: number
): number => {
 return x + y;
};
console.log(add(1,2)); //3

触ってみて

動的型付け

動的型付けを触っている時は、型を意識することはほとんどありませんでした。エラーが出てから気にすることが多く仕方なく付けるイメージでした。(実行するまでエラーに気づかないし、分かりにくい) 暗黙的に型が変換されて、意図しない挙動が起きることもあります。 一方で、簡単で書きやすく言語ごとの理解は早かったと思います。

静的型付け

今まで意識していなかった分大変でした。その分動的型付けにはない利点を感じられました。

  • 実行前にエラーに気づける
  • 代入される値に制限をかけエラーを未然に防ぐ ex) 整数値〇、負の数✖、小数点を扱う、数値の配列、特定の文字列のみ 変数に合わせて、厳密に型を制限できます。
  • 関数の意図が作成者以外にも分かりやすい点もメリットです。 引数、戻り値、関数等に型宣言されていることで、利用イメージが容易になります。

最後に

型を意識し直すのは大変ですが、コードの安全性や意図を共有できるのは大きなメリットに感じました。適材適所で使い分けられるようにマスターしていきたいです!