Linuxのデスクトップとサーバーについて扱います。Windows版Gtk+による、ウィンドウアプリケーション開発環境の作り方Gtk+ライブラリを使うと、ボタンとテキスト、簡単な図形などを表示するプログラムならば簡単に書くことができます。実験やモックアップに、ちょっとしたウィンドウアプリケーションを作るのに便利です。なんといってもありがたいのは、標準的なWin32アプリケーションではウィンドウを出すだけで120行のコードが必要であるのに対して、Gtkは20行で済むところです。Gtkで作成した、何もしないウィンドウアプリケーションGtkはクロスプラットフォームであることと、Win32APIより新しいためシンプルかつわかりやすいのが利点ですが、Windows環境でコンパイルするための情報が少ないという欠点を持っています。そこで今回は、わたしなりに試行錯誤して確立した、Windows環境でのGtkアプリケーション開発環境についてまとめています。追記:構築済み環境をgithubにて公開しています。ファイルの取得MinGWのインストール今回はコンパイラにMinGW(gcc)を使用します。MinGWは、コマンドプロンプトから使うコンパイラです。公式ページで「Download」という単語をたどっていけば、そのうちSourceforgeのダウンロードページへ出ます。ページの上のほうあたりに、最新版インストーラへのリンクがあります。インストーラを起動すれば、あとは簡単です。インストール中はインターネットに接続している必要があります。通常、MinGWをインストールしたら、環境変数を設定して使いやすくしておくのが通例です。Windowsボタンを押して「コンピュータ」(または「マイコンピュータ」)を右クリックし、「プロパティ(R)」から「システムの詳細設定」で、下にある「環境変数(N)」をクリック。システム環境変数から「Path」を探して追記します。末尾に、;C:\MinGW\bin\;を書き足します。(何をしているかというと、MinGWのインストール先を環境変数に登録しています。環境変数「Path」に登録されたディレクトリの下にあるファイルは、コマンドプロンプトでパスを省略して呼び出すことができるようになります。"gcc"の3文字だけでコンパイラが呼べるようになります。)確認のために、コマンドプロンプトを開いて、gccと打ってエンターキーで実行してみましょう。filesなどと出力されたら成功です。今回は、コンパイルに必要なファイルが存在しないためgccがエラーを返しますが、つまりはgccを呼ぶことに成功しています。ライブラリのダウンロード公式配布ページはGoogle検索でもすぐ出てくるのですが、全文英語かつダウンロード可能なファイルが多く、どれを落とせばよいのか、一見して悩みます。結論としては、本家のGTK公式サイトが、コンパイル済みですぐ使える全部入りのライブラリをzipで配布しているので、それを選びます。」というリンクの先にあります。入手したzipの使い方については下で説明します。いっても、解凍して配置するだけで、ライブラリフォルダ自体には手を加えることはありません。プロジェクトディレクトリとファイルの配置、コンパイル開発環境を構築するにあたって、環境の作り方にいろいろな選択肢があるのですが、とりあえず一つに絞って解説します。『環境変数のパス指定はプロジェクト内に完結・プロジェクト内にGtkライブラリファイルを内包・パス指定はすべて相対パス。』これはプロジェクトの外に影響を与えることがなく、フォルダを移動してもコンパイル可能な形態です。空のディレクトリを作成して、ファイルを配置するだけです。空のディレクトリですが、C:ドライブの直下に作るのがオススメです。いえ、ホームディレクトリやデスクトップに作っても基本的には問題ありません。(というかそうなるように設定していきます。)ディレクトリの名前も適当に付けます。hellogtkでいいです。Windowsのzipファイルを解凍します。いう名前のディレクトリになると思いますので、これを「gtk」にリネームしておきます。(そのほうが楽だからです。)このgtkフォルダを、hellogtkフォルダの下に入れます。これだけで配置終了です。開発用コマンドプロンプトを呼び出すためのバッチファイル「!cons.bat」コンパイルテスト用に、Gtkウィンドウアプリケーションのソースファイル「hello_gtk.c」を作成して配置します。開発環境バッチファイル「!cons.bat」コンパイルはコマンドプロンプトで行います。Gtkアプリケーションをコンパイルするためには、環境変数を設定する必要があります。MinGWのときのように、環境編集Pathを設定してもよいのですが、今回はバッチファイルを作成し、環境変数を設定済みのコマンドプロンプトを呼び出すこととします。コマンドプロンプトを呼び出すバッチファイルを書くメモ帳を開いて、以下の一行を記入します。cmd.exe以上です。!cons.txtという名前で保存しておいてください。(なお、この名前に理由はありません。)テキストファイルをバッチファイルに変えるといっても、ファイルの拡張子を変えるだけの簡単なお仕事なのですが。実はここが一番の難所です。いうのも、Windows環境は、デフォルトで拡張子を変えられないからです。いうわけで、Windowsの設定を変えます。「フォルダーオプション(O)」を呼び出します。「表示」タブの詳細設定から、「登録されている拡張子は表示しない」のチェックボックスを外して無効にします。上の「フォルダーに適用(L)」ボタンを押して、全フォルダに適応します。「!cons.txt.txt」あたりのファイル名になっており、拡張子.txtがしっかり表示されているはずです。ファイルを右クリックして出てくる「名前の変更(M)」から拡張子を変更します。バッチファイルにするには、ファイル名の末尾が".bat"になっている必要があります。ファイル名を、!cons.batに変えてください。ファイルをダブルクリックして実行してください。コマンドプロンプトが立ち上がれば、ここまでは上手く行っています。Gtkアプリをコンパイルできる環境変数を設定するPATHを指定する必要があります。SETコマンドを使えば、システムの環境変数を上書きする形で、そのコマンドプロンプトだけで有効な環境変数を設定することができます。PATH=gtk\bin\;%PATH%コマンドライン上でそのまま入力して使えます。バッチファイルに書いて使えるということです。バッチファイルを編集するには、右クリックから「編集」を選択します。書き足すと、バッチファイルの中身はこんな状態になっていると思います。(コメントを追記しておきました。PATH=gtk\bin\;%PATH%#コマンドプロンプトを呼び出すcmd.exeバッチファイルをダブルクリックすればコマンドプロンプトが起動します。そのコマンドプロンプト上で、gtk-demoと打って実行し、gtkのウィンドウアプリケーションが起動すれば、バッチファイル作成は成功です。以下の内容のテキストファイルを作成します。0;}ファイル名をhello_gtk.cに変えておいてください。コンパイルの実行コンパイルにはgccとpkg-configを使います。このふたつを結びつけるために、FORコマンドも使用します。Gtkアプリケーションをコンパイルする際には、コンパイラに対してGtkを利用するためのオプションを指定しなければなりません。幸いなことに、Gtkライブラリにはpkg-configというツールが付属しており、適切なパスとオプションをgcc用に出力してくれます。実際の作業は以下の通り。pkg-configの出力するコンパイルオプションを、環境変数に格納します。(折り返していますが、実際は一行のコマンドです。GTKOPTS=%A値が格納されていることを確認します。%GTKOPTS%実際にコンパイルを行います。echoの時と同じく、環境変数が展開されて、gccにpkg-configのオプションを渡すことができます。%GTKOPTS%a.exeというファイルができていたら成功です。コマンドラインから呼び出してみましょう。a.exe上手く行っていれば、画像のような何もしないウィンドウが現れるはずです。(hellogtk.c)Gtkアプリケーションのコンパイルまでに必要な、最低限の設定と手順は以上です。以下は、このあとのGtkアプリケーション開発で、必要になりそうな事項について書いておきます。「makefile」の記述と使用コマンドを手打ちしてコンパイルするのも良いですが、本来はmakefileを作るべきだと思います。規模が大きくなったり、もう少し本格的なGtkアプリケーションの作成に移ると、makefileが必要になってきます。makefileにはコマンド置換機能があるので、オプション指定などもコマンドラインより簡単に書けます。makefileはタブが意味を持つ構文です。行の先頭が空文字であるところは、実際にはタブを挿入する必要がありますので注意してください。あり、必ず拡張子が付いていないことを確認してください。makefileの内容は、下記の通りです。$(obj).exeまた、バッチファイルにも手を加える必要があります。cmd.exeの前に4行を追記して以下のようにします。$*#コマンドプロンプトを呼び出すcmd.exeなぜこの記述を追加する必要があるかというと、MinGWに付属しているmakeは、ファイル名がmingw32-make.exeであり、そのままではmakeと打って使うことができないからです。doskeyコマンドはコマンドプロンプト上で打った内容を実行前に置き換えてくれるので、makeと打てばmingw32-make.exeが起動するようになります。いうわけで、以上の通り、makefileを作って!cons.batに追記をすればOKです。コンパイルと実行が、以下の一行を打つだけで終わります。runと打つだけです。上手く行けば、gtkアプリケーションが起動します。自分でコンパイルしたGTKアプリケーションで、日本語が文字化けする場合、ソースコードの文字コードををUTF-8に変更すると解決する可能性があります。本記事のGTKプログラムおよび開発環境(?)は、UbuntuなどのLinux環境でも問題なく動くはずです。GTKはマルチプラットフォームですし、本記事のmakefileなどはクロスプラットフォームを意識して書いてあるためです。(むしろLinux向けソースを!cons.batでWindows対応させた、と言えるくらい。自分でターミナルを起動してチェンジディレクトリ(cd)することくらいです。MinGWもプロジェクトに入れてしまえば、他のマシンに移動してもコンパイル可能です。総ファイルサイズに反してコピーに時間がかかります。Studioをインストールするよりは早いです。)その場合、!cons.batでGtkと一緒に環境変数PATHの設定をしてしまったほうが良いです。Gtkは最新バージョンのGtk-3.0が登場していますが、配布されているWindows版ライブラリはGtk-2.0です。2.0と3.0には、互換性のない部分もあるそうです。古いライブラリを独自に配布しているページなどもありますが、公式サイトの最新版を使いましょう。%GTKOPTS%で表示されるコンパイルオプションは、わたしの環境では以下のようになります。自分で調べて手打ちしようとすると、気が遠くなります。-lglib-2.0-lintl(注意:読むとわかるのですが、このままコピペして使うことはできません。パスがDドライブを指していたりしますので。)本当にどうでもいいことですが、「!cons.bat」は、初めてこのバッチファイルを見た「30日でできるOS自作入門」から来ていて、ファイル名も、そのまま使っているだけです。Gtkをやっていたのはもうけっこう前のことで、思い出しながら書いたのですが、意外と覚えているものですね。シューズを買いました。メインの靴がアシックスウォーキングで街歩き用なのですが、これまではこれで高尾山などの軽い山も登っていました。今回、靴底があまりに摩耗したこともあってアシックスウォーキングを買い替えたのですが、ついでに消耗が激...100均の液晶保護フィルムを13インチのノートPCに貼ってみましたノートPCの液晶保護フィルムが100円で買えるなんて、良い時代になりました。ダイソーに行ったら、ノートPCで使えそうな液晶保護フィルムがあったため、衝動的に購入。A4サイズと書いてあります。(HTMLでPOST、そしてhidden)formでユーザの入力やファイルを送信する際、IDを付与したり、送信した情報を紐付けるか、などの情報を一緒に送信したい場合があります。その場合、ID情報はブラウザに表示しないのがベストです。ユーザに見せたり、編集してもらう必要はありません。オルタネイティヴは数あれど、小さな実験プロジェクトを始めるときに、簡単に使えるMakeは未だにビルドツールとして有力な選択肢だと思います。MakefileはUNIX環境、というかCLIツール群があることを前提にしているところがあります。(6)fancyboxを導入しようとしてみました。