Fortranのコーディングスタイル:現代的で読みやすいコードを書くために

デジタルとコンピューター

Fortranは、1950年代に誕生した歴史あるプログラミング言語ですが、現在でも科学技術計算の分野で広く使われています。しかし、古い時代の書き方のままでは、可読性が低く、バグを引き起こしやすいコードになってしまうことがあります。

そこで、本記事では「現代的なFortranのコーディングスタイル」を紹介し、読みやすくバグの少ないコードを書くためのポイントを解説します。


Fortranの基本構造

Fortranの主プログラムは、program ... end program で囲まれます。
また、Fortranは大文字・小文字を区別しませんが、統一感を持たせるために小文字で記述することを推奨します。

例えば、次のプログラムを見てみましょう。

program ai
  ! コメント行(! から始まる)
  ! 暗黙の型宣言を無効化
  implicit none

  ! 変数の宣言
  real :: watashi, kareshi, love

  ! 変数へ値を代入
  watashi = 2.5
  kareshi = 0.4

  ! 計算
  love = watashi * kareshi

  ! 結果の出力
  print *, love

end program ai

💡 実行結果

   1.00000000

🎯 このプログラムのポイント

  1. program … end program で囲む
  2. 小文字で統一PROGRAM AI ではなく program ai
  3. コメント(!)を活用
  4. implicit none を必ず記述
  5. 変数の宣言を明確にする
  6. コードのブロックごとに空行を入れて可読性を高める

暗黙の型宣言を無効にする(implicit none)

Fortranの古い慣習では、変数の型を明示的に宣言しなくても、変数名の先頭のアルファベットで型が決まるルールがありました(例:i, j, k, l, m, n で始まる変数は整数、それ以外は実数)。

しかし、この暗黙の型指定はバグの原因になります。例えば、次のコードでは間違った結果が出る可能性があります。

(問題のあるコード)

program ai_wrong
  watashi = 2.5
  kareshi = 0.4
  love = watashi * kareshi
  print *, love
end program ai_wrong

エラーなく実行できるが、結果は 0 になる可能性がある!
なぜなら、kareshik で始まるため、暗黙的に整数(integer)として扱われ 0.40 に丸められてしまうからです。

(正しいコード)

program ai_correct
  implicit none
  real :: watashi, kareshi, love

  watashi = 2.5
  kareshi = 0.4
  love = watashi * kareshi

  print *, love
end program ai_correct

implicit none を書くことで、すべての変数を明示的に宣言する必要があるため、バグを防げる!


変数の宣言と型の統一

推奨される書き方

  • すべての変数はプログラムの冒頭で宣言する
  • implicit none を使う
  • 適切なデータ型を指定する
  • :: を使い、統一感のある宣言をする

(例:変数の宣言)

program variable_example
  implicit none
  integer :: age, count
  real :: height, weight
  logical :: is_happy
  character(len=20) :: name

  ! 変数の代入
  age = 25
  height = 175.5
  is_happy = .true.
  name = "Taro Yamada"

  print *, "Age:", age
  print *, "Height:", height
  print *, "Happy?", is_happy
  print *, "Name:", name

end program variable_example

📝 ポイント

  • integerreallogicalcharacter など、適切な型を指定する
  • character(len=20) :: name のように、文字列の長さを明示的に指定する

インデントとコメントのルール

読みやすいコードを書くために、適切なインデントとコメントを心がけましょう。

(悪い例)

program bad_example
implicit none
integer x
x=10
if (x>5) then
print*,"x is greater than 5"
endif
end program bad_example

問題点

  • implicit none の前に空行がない
  • インデントがない
  • if 文の endif が揃っていない

(良い例)

program good_example
  implicit none

  integer :: x
  x = 10

  if (x > 5) then
    print *, "x is greater than 5"
  end if

end program good_example

改善点

  • 適切なインデント
  • 空行を入れて見やすくする
  • if 文の end if を揃える

出力の書式を統一する

Fortranでは print * を使うと簡単に出力できますが、書式を指定するとより見やすい表示になります。

(書式なしの例)

print *, "Result:", 3.14159

出力:

 Result:   3.14159012

(書式を指定する例)

print '(A, F6.2)', "Result:", 3.14159

出力:

Result:  3.14

F6.2 は「小数点以下2桁の浮動小数点数」を表すフォーマット


まとめ

✅ 推奨されるFortranコーディングスタイル

良いスタイル理由
小文字を使用読みやすく統一感がある
コメントを適切に記述コードの意図を明確にできる
implicit none を書く変数の型を明示し、バグを防ぐ
インデントを揃える可読性が向上する
変数の型を適切に宣言意図しない型の誤認識を防ぐ
書式付きの出力を使う見やすい結果を表示できる

Fortranは今でも科学技術計算の分野で活躍する言語です。きれいで読みやすいコードを書く習慣をつけて、効率的なプログラミングを目指しましょう! 🚀

コメント