4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

F77からModern Fortranへ - fitpackとの再会

Last updated at Posted at 2025-12-06

Fortran遍歴:F77からModern Fortranへ、そしてfitpackとの再会

はじめに

初めて触った言語はCでした。しかし、その後すぐにFortranを書くことになり、気づけばFortranとの長い付き合いが始まっていました。

当時の環境は、F77やF90の香りがするコードであふれていました。構造体もクラスもallocatableも存在しない、古き良き(?)時代のコードが周りにあふれていたのです。

Modern Fortranへの目覚め

そんな中、構造体をFortranで利用できることを知りました。さらに、その中の要素をallocatableにしたいと思い立ったのがきっかけで、新しめのFortran規格を意識するようになりました。

当時は、構造体の中でallocatableが使えるというだけで、かなり画期的に感じたものです。これにより、メモリ管理の柔軟性が格段に向上しました。

DIERCKXとの出会い

しばらくして、netlib.org/dierckx/のコードを自前でFortranのクラスでラッピングして活用してみました。その便利さに感動し、「こういうライブラリほしいな」と強く思うようになりました。

オブジェクト指向的な設計でラッピングすることで、古いコードが驚くほど使いやすくなる体験は、Modern Fortranの可能性を実感させてくれました。

fortran-stdlibとの出会い

あるとき、高性能Fortran推進協議会を覗いてみたり、モダンFortran勉強会を覗いてみたりしながら、fortran-stdlibの開発が始まったことを知り、感動したのを覚えています。

「Fortranにも標準ライブラリが!」という感動は今でも忘れられません。

初期のうちはバグ報告なんかもしていましたが、今や規模が大きくなってきて、追いかけるのも一苦労になってきました。

Fortranの新機能への期待

そんな中、いくつかの機能に注目するようになりました。

Coarray

並列計算のための機能であるCoarrayは、超便利だと思います。MPI的な並列化を言語レベルでサポートしているのは、Fortranの大きな強みです。

SubModule

SubModuleって商用ライブラリの開発によくないか?と思っています。インターフェイスと実装を分離できることで、コンパイル時間の短縮や、ライブラリのバイナリ配布が容易になります。

fitpackとの再会

そしてとあるとき、かつて利用していたF77のfitpackがModern Fortranでリファクタリングされている(perazz/fitpack)ことを知り、これまた大興奮しました。

このプロジェクトの素晴らしい点は:

  • ほぼすべてのF77版機能が網羅されている
  • C++のインターフェイスも提供されている
  • 作者がかなり高速化を意識している

特に感心したのは、以下の点です:

パフォーマンスへのこだわり

Fortranを書く人は、皆さんかなり高速化の達人な気がします。このfitpackのリファクタリング版も例外ではありません。

言語をまたぐコードでも、普通にコピーレスなコードを意識しているし、別の或るライブラリでは、スレッドセーフを意識したコードであることが随所に見られるようなものもあります。

利便性の高い記述方法を許容しつつ、こういった細かい配慮もできる点がModern Fortranの真骨頂だと思います。

おわりに

F77時代のレガシーコードから、Modern Fortranの洗練されたライブラリへ。

Fortranコミュニティの進化を見てきた一人として、これからもFortranの発展を楽しみにしています。特に、標準ライブラリの充実や、古い名作ライブラリのモダン化は、Fortranの未来を明るくしてくれると信じています。

参考リンク

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?