2012年8月25日
パソコンでのプログラミングは、パズルを解くような面白さのある。最近はやっているQtライブラリを使って、少し楽しんでみた。
パソコンでは、自分でソフト(プログラム)を作って遊ぶことができる。
テキストエディタやお絵描きツールのようなものを、自分で組み立てられるのだ。
市販されているような複雑なソフトを作るのは、たいへんしんどい作業だが、ちょっとしたプログラムを作ることは、趣味の対象になっている。
プログラムを書く遊びは、自分で何かを生み出す作業なので、とても楽しいと考える人も多いのだ。
あるいは、プログラムの作成は、自分で組み立てて遊ぶパズルゲームと理解してもよいだろう。
プログラムを書いて実行するためには、プログラムを書くためのソフト(「開発ツール」とか「開発環境」という)を使う。
以前は、高価なものが多かったが、今では無料でよいものが手に入る。
趣味でプログラムを書く場合に、おすすめできそうな開発環境をあげてみた。
Qt Creator
今回とりあげる開発環境。C++言語でQtライブラリを使うプログラムを書くのに適している。画面の右側にプログラムを書き、再生ボタンをクリックすると実行できる。動作が軽快で扱いやすい。
Eclipse
Java言語やC/C++言語の開発環境。組み込み用のCPU向けのソフトや、Androidのアプリケーションなど、様々なものを開発できるので、人気がある。
NetBeans
Java言語の開発環境。GUIを簡単に作れる。最近ではC++言語の開発もできる。
Visual Studio 2010 Express
Visual C++言語やC#言語、Visual Basic言語等の開発環境。Windowsでしか使えないが、いろいろな言語で開発ができる。
どの環境でも、プログラム作りを十分楽しめる機能があるので、どれを選んでもよいだろう。
ここでは、Qtライブラリを使うQt Creatorを、UbuntuというLinuxの環境で使ったときのことを紹介する。
ちなみに、開発環境が無料で公開されているのには理由がある。
無料で公開すると、多くの人が使ってくれるので、ビジネスの機会が広がるという発想がある。
開発環境自体が、オープンソースコミュニティーにより開発されていて、開発環境を作ること自体が、世界の人々の趣味になっていることもある。
CPUなどのハードを作っている会社が、そのハードのプログラムを作るための環境を無料公開することで、ハードの売上を増やそうとしていることもある。
無料公開の事情は何であれ、趣味で使うだけなら困ったことは起こらないはずだ。存分に楽しませてもらおう。
手元のUbuntu(12.04)のパソコンで、Qtの開発環境をインストールした。
root権限でコンソールから
apt-get install qt-sdk
と入力するだけで、インターネットから開発環境がダウンロードされ、一気にインストールされた。
この手のフリーソフトは、単にお金がかからないだけでなく、欲しくなったその瞬間に入手とインストールが完了してしまうところがすごい。
インストールが終わると、アプリケーションの一覧に、Qt Creatorが加わるのでさっそく起動する。
起動直後の画面には、こんなふうに、プログラムの例を紹介する文章とリンクが表示されている。
ちなみに、Windowsを使っている場合は、こちらのページ(開発元提供)に、インストールの方法が説明されているので、参考にされたい。
インストールが終わった後は、プログラムの書き方を勉強すればよいわけだが、どうしよう。
プログラムを書くには、少しばかりの知識が必要だ。Qt Creatorを使って、テキストエディタのようなアプリケーションを作って遊ぶには、以下のことは知っておきたい。
プログラミング言語(C++言語)の基本
開発環境(Qt Creator)の使い方
Qtライブラリの基本
趣味なのに勉強?と思うかもしれないけれども、ゲームでも攻略本を買うだろうし、将棋や囲碁は勉強しないと強くなれないようだから、本格的な趣味では、勉強が必要なのである。
QtライブラリはC++言語で使うものなので、まずはC++言語を知っておきたい。
インターネットに初心者向けの説明をしているサイトが少々あるようだが、しっかりした本が一冊あったほうがよいかもしれない。本屋や図書館に行って探してみるとよいだろう。
Visual Studioの環境で使われているVisual C++言語と、Qt Creator等で使われているC++言語は、少しばかり少し違うものなので、本を選ぶときは気をつけたい。
開発環境のQt Creatorの使い方は、ヘルプがついているので読んでいけば分かるだろう。開発元のホームページ(英語)は情報が豊富なので、本に頼らなくてもインターネットだけでなんとかなりそうな気がする。
GUIやロジックを組むときに使う「Qtライブラリ」も、開発元のホームページ(英語)で、ものすごく情報が充実しているので、少しずつ読んでいけば、理解できる幅を広げていけることだろう。
最初は、Qt Creatorに組み込まれている例題プログラムを、少し改造しては実行を繰り返していくと、少しずつ仕組みを理解できることだろう。
上記の開発元の情報は、英語になっている。
Qtを作っているのは、フィンランドのNokiaという会社だ。フィンランドの公用語はフィンランド語とスウェーデン語で、英語を母国語としているわけではない。
それなのに英語で情報を提供しているのは、技術を世界中に広めたいからだ。英語で書くと、多くの人が読んでくれると考えているのだろう。
情報の読み手も、英語を母国語としている人ばかりではない。書く側も、そのことをよく理解しているようで、難しい単語や文法は一切使わず、なるべく簡単に読めるように工夫してある。
だから、私たちも、怖がらずに思い切って読んでみるとよい。
例えば、このページ("How to Learn Qt", Nokia社, 2011年)を例に読んでみよう。
Qtの学び方
要求されるプログラミングの能力
Qtは、C++をもとにしたアプリケーション開発フレームワークだ。
以前から、C++はQtの開発では主要なプログラミング言語だ。
2011年にQt Quickが発表され、Qtではスクリプトによる宣言的なプログラムを、QMLを使って作れるようになった。QMLは誰にでもとても理解しやすく・・・
けっこう、書いてある意味が分かるはずだ。分からないことがあれば、辞書を引いて調べれば、たいていは、すぐに分かる。
英語で書かれた資料から、情報を取り出そうとして行う努力は、英語そのものを勉強するよりも、面白いだろうし、英語の上達も早い気がする。
プログラム作りは、海外の良質な情報に触れられる、面白い趣味なのである。
プログラムは、パズルのような側面を持っている。
すぐれた最新の開発環境は、使い手が頭を痛めて考える作業が、なるべく少なくなるように工夫されている。
例えば、Qtでは、「このボタンが押されたら、サーバーとの通信処理を開始する」というロジックを組み込むには、1行以下のように書くだけでよい。
connect(button2, SIGNAL(clicked()), this, SLOT(clientRun()));
ボタン2がクリックされたら、clientRun()という関数を実行する、ということを、そのまま直接書いているだけだ。
サーバーとの通信処理を行うclientRun()の中身は自分で書く必要があるが、GUIとしてのロジックは、極めて簡単に書けてしまうのだ。
コンパイルした後にできあがる実行ファイルでは、ボタンを描画し、マウスカーソルの位置を追跡し、マウスクリックを識別し、押されたボタンを特定し、ボタン操作に関連付けられた処理を呼び出し・・・、と複雑な処理が行われる。そういった複雑な処理は、Qtライブラリが行うので、私たちがプログラムに書く必要はない。アプリケーションとして行いたい処理を書き、その処理とボタン操作を関連づければ、アプリケーションを完成できるようになっている。
このようなライブラリの仕組みを知ると、複雑なことを、どうやったら単純明解に表現できるのか、ということを学べた気がする。
プログラムの作成は、複雑にからみあった世界を、分かりやすく理解する方法を知る、興味深い趣味なのである。
Qt Creatorの使い方がよく理解できて、思った通りのプログラムを作れるようになったとしても、それで仕事ができたり、職業につけたりするとは考えにくい。
Qtの開発元が、英語で情報を公開しているのは、世界中の人々に技術を伝えるためだ。
プログラムは、簡単に輸出ができるので、開発の作業は、コストが低い国に集中しやすい。
つまり、給料が安い国に集中しやすい。現在は、インド、ベトナム、中国などで活発に開発が行われているそうだ。給料は、月に10万円ももらえないだろう。
日本でこのような技術を身につけても、国内には仕事がない。従って、お金をもうけようと思ってプログラムの作成方法を学ぶことには、あまり意味がない。
ゲームソフトなど、プログラムそのものが作品と呼べるような世界では、別なのかもしれないけれども。
開発環境をインストールしてみよう。その次に「ハローワールド!」と画面に表示を行うだけのプログラムを作るのが、プログラマーの第一歩と言われているらしい。
自分で作ったプログラムを、普段から使うようにしてみよう。例えば、Qt Creatorの例題にあげられているような、単純なテキストエディタであっても、自分で組み立てたものであれば、愛着がわいてくるのかも?
コンピュータでの処理の組立て方と、人間の行動の組立て方を比べてみよう。何か発見があるだろうか?
市販されているコンピュータソフトを作る手間について考えてみよう。一人だけでは作れないとしたら、どうやって協力すればよいのだろうか?
トップページ → なにげなく自由研究(もくじ) → 夜長は楽しくパズルゲーム--Qtのプログラミングで遊ぶ
著者のメールアドレス・Twitterアカウントは、トップページからご覧ください。
製作・著作:杉原 俊雄(すぎはら としお)
(c)2012 Sugihara Toshio. All rights reserved.