基本的な情報

基本スペック

ホームページ https://www.fltk.org/
言語 C++
主要プラットフォーム 各種Unix、BSD、Linux、Windows、macOS
ルーツ 独自
ライセンス LGPL

その他の情報源

主観的なレビュー

導入段階における学習しやすさ

⭐が多いほど学習しやすいことを意味します。

序盤 ⭐⭐⭐⭐⭐
中盤 ⭐⭐⭐⭐☆
それ以降 ⭐⭐⭐⭐☆
  • 序盤: Hello Worldやそれに少し手を加えたような小さなプログラムを書けるようになるまでくらいを指します。
  • 中盤: ライブラリの機能一通り把握して、それらを利用するケースを体現するようなプログラムを書けるくらいになるまでを指します。
  • それ以降: ライブラリを用いて現実の規模と堅牢さを持つプログラムを書けるようになるくらいと、更にライブラリの仕組みや設計の探求に踏み込んでいくまでを指します。

要求されるプログラミングスキルの程度

⭐が多いほど要求の程度が低い、つまり、使い始めるためのハードルが低いことを意味します。

プログラミング言語 ⭐⭐⭐⭐☆
開発環境 ⭐⭐⭐⭐⭐

FLTKを利用するにはクラシックなオブジェクト指向を基礎にしたC++を習得している必要があります1)。 C++は非常にメジャーな言語ではありますが、学習コストはやや高めであることが知られています。 そのため、もしC++をまだ一度も学んだことがないのであれば、FLTKを利用するためのハードルもやや高めになります。 しかし、C++をこれから自分の主要言語の一つとして用いることを決めている場合は、長い目で見るとFLTKを利用するためのハードルはとても低いです。

その理由は、FLTKのAPIが非常にシンプルだからです。 初歩的なC++の知識だけでもとりあえずは目的のものを書けるようになっています。 残念ながら、この「とりあえず」という性質は危険をはらんでいます。 現実的なプログラムを書こうと思ったら、やはり相応のC++習熟度が求められます。

それじゃハードルが低いことにはならないじゃないかというとそうでもなく、C++の学習をサポートするための教材としてFLTKを利用することができます。 C++言語を楽しく学ぶための素材としてはもちろん、優れた現実のソフトウェア(この場合はライブラリ)のデザインを体験することができます。 もちろんこれはFLTKだけのものではなく、どのような優れたソフトウェアを利用する場合にも当てはまることです。 FLTKにおいて特筆すべきなのは、

  • 最初の段階ではとりあえず十分にC++に習熟していることを要求しないこと
  • C++の習熟度が上がっていくに従って現実のプログラムを書けるようになっていくこと(つまりライブラリが現実の使用に耐えうるソフトウェアであること)

この両方を達成していることです。 おもちゃではない現実のライブラリを使いながら楽しく学習を続けられて、最終的には自分で現実のプログラムを生み出せるようになる可能性を与えてくれます。

開発環境に目を向けると、FLTKはメジャーなOSのほとんどで利用できます。 さらに、FLTKの利用形態は伝統的なコンパイル・リンクモデルによるものが基本であり、特殊な開発ツールに依存することはありません2)。 仮にまだプログラミングを初めて間もないなどの理由で、IDEなどの補助に依存したプログラミングのプロセスしか経験がなかったとしても、容易にそのプロセスに取り入れることができます。 したがって、開発環境においてはFLTKを利用するためのハードルは何も存在していないに等しいです。

1)
Rust、Python、Rubyなどのバインディングが公開されているので、必ずしもC++で書かないといけないわけではありません。しかし、オリジナルであるC++のFLTKについての予備知識無しでバインディングだけに頼るのはあまり良い選択ではないでしょう。
2)
少しだけ嘘が混じってます。FLTKにはFLUIDというGUIのデザインを補助するためのグラフィカルなツールが含まれます。しかし、全く使い方の難しいツールではないし、望むなら一切このツール使用しないでプログラミングすることは普通に可能です。
文書の編集
文書の先頭へ