おれが小さいときはなんでも自分で作ったもんだ

「おれが小さいときはなんでも自分で作ったもんだ」 そう父親に小さい頃よくいわれた気がします。 スキー(竹スキー?)とか、竹馬とか遊び道具系のことだと思うんですが、いろいろつくって遊んでいたそうです。 たしかになんでも器用につくり、そして直す世代の気もします。

ものは壊れない限り使い続けるというのを信条としているようで、うちの実家のインターネットは ISDN です。。 なんと ISDN 専用電話という世にも珍しいものを購入しているためこれが壊れるまでは ISDN でいくことになりでしょう。。 orz

そんなこんなで、ここまで頑固ではないにせよ、たしかにぼくも壊れているものをみたら直そうとしてみたりする気持ちは人よりはあるかもしれません。 また、無いものはつくる、ということはできるかぎりします。

「おれが小さいときはなんでも自分で作ったもんだ」

小学生だったぼくも、ジャンルは違えど遊ぶゲームがなければ自分でつくったし、ツールがなければ自分でかきました。 今の子たちみると、父親がぼくをみて言ったように「ものがあふれているな」と思ってしまったりします。

資源がない国で、ものをつくる興味を失ったらおしまいだとおもうんですよね。 もちろん、形のあるもの、ないものいろいろあると思うのですが、何かを生み出す力というのは小さい頃からの積み重ねで培われる気もします。

さてぼくはちょっと前にかきました。

画像ぴこっとおしたら、その URL にとんでくとか、こういう Vista とか Google ガジェット芸能人とかの公式ブログで配布したらおもしろいのかな~と思いついてつくりました。 まぁこれは勝手に作っているもので(おまけに UNIX 用だ)、配布なんかできませんが、しょこたんみたいな更新が多いブログではなかなかいいかもです。 :-)

ないものはつくる。 そして完成したしょこたんブログガジェット。

syokotan02

その数日後の出来事でした。

syokotan01

[tegaki]ひ~~[/tegaki]

エキサイト、しょこたんといつも一緒!「しょこたんAIR」の配布開始 | パソコン | マイコミジャーナル

エキサイトは、タレント中川翔子のブログ「しょこたんブログ」と連動したAdobe AIRガジェット「しょこたんAIR」の無償配布を開始した。ガジェットは、コミュニティサイト「しょこらんど」からダウンロード可能。

・・・オフィシャルにはかないません。 ごめんなさい。。 orz (←おち

Linux で GUI アプリケーションをつくる

自分で使っている OS でちょいアプリをつくれると何かと便利です。 この手のは多くはコマンドラインですむことが多いので、シェルとかスクリプト系の言語でぱらっとかいて終われますが(このへんの環境がそろっているのが UNIX のいいところ)、たまに GUI も使いたいときがあります。 たまのことなので、あんまり学習コストをかけたくないので、知ってるものをくみあわせて、、ってことで mono + C# + GTK でためしにやってみました。

mono というのは、Microsoft の .NET Freamwork のオープンソース実装です。

Mono (ソフトウェア) – Wikipedia

Monoは、ノベルの主導で開発されている、Ecma標準に準じた.NET Framework互換の環境を実現するためのオープンソースソフトウェア群、 またそのプロジェクト名である。共通言語基盤 (CLI) の実装やC#コンパイラなどが含まれる。Monoはマルチプラットフォームであり、LinuxFreeBSDUNIXMac OS XSolarisWindowsで動作する。

これをつかうと Linux 上で C# でアプリがかけます。 おまけに、Linux で標準的に使われている画面描画ライブラリの GTK とバインディングできるためきれいに、違和感なくウインドウが出せます。

Java でもいいんですけどね、、ちょっと Linux で JRE 設定するのフォントとか面倒なのでさけぎみです。

mono は JIT も持っているので、ネイティブコードでうごいてくれるみたいで、なかなかさくさく動きますね。  Linux で有名な、F-Spot という画像管理ソフトも mono でできているみたいです。

mono には Mono Develop という統合開発環境があります。 ためしにこれをいれてみました。

mono01

まるで Visual Studio ですが(VS のプロジェクトも読めます)、ベースは Sharp Develop のようです。 カーソルの動きが違ったり、キーアサインが違ったりしますが違和感はあまりなく操作できます。 (1.0 ではまだデバッグはできないようです。現在 2.0 アルファ中)

よーわからんかったですが、ソリューション作成しようとしたら面白いものを発見。

mono03

おー、Glide ともバインディングできるらしい。 Glide で XML で画面とイベント定義してそれを C# とバインディングして GTK アプリがつくれるようです。

[tegaki]やってやるぜ[/tegaki]

Mono Develop 自体にも UI デザイナーついているのですが、Glide の場合は Glide インターフェースデザイナを使います。 まうすでぺたぺたコントロールはりつけて、XML を作成。

mono02

ここで、コントロールの名前とか、イベント名とかを定義します。

で、できたら C# でコーディング。 VB.NET とかもいけそうです。 🙂

GTK 系を using して、たとえばメンバに さっき Glide でつくったコントロールを定義します。

using System;
using System.Xml;
using Gtk;
using Glade;
using Yedda;
 
public class GladeApp
{
    
    [Widget] Gtk.TextView textview1;

こんな感じ。 でもって、コンストラクタとかで Glide の XML を読み込みます。 GTK のお約束は、IDE がかいてくれます。

public GladeApp (string[] args) 
{
    Application.Init ();
    Glade.XML gxml = new Glade.XML (null, "gui.glade", "window1", null);
    gxml.Autoconnect (this);
    Application.Run ();
}

Autoconnect(this) が妙で、これで Glide のコントロール・イベントと C# をバンディングしてくれます。 ここで名前食い違うと間違うとぬるりするので注意のこと。 🙂

イベントハンドラは以下のように。

private void OnButton1Click(object sender, EventArgs e)
{
    TextBuffer buffer = textview1.Buffer;
    buffer.Text = "TEST!!";
}

各 GTK コントロールの操作の仕方は「のり」もしくはマニュアルで。。(笑) ちなみに、ためしていませんが System.Windows.Forms も動くようです。

で、実行。

mono04

お~うごいた~。

みえないとおもいますが、twitter にログインして XML もってきて表示しています。 よくみるとスクロールペインとかもちゃんど動いていますね。 また、C# の twitter ライブラリがそのまま動きました。

.NET のクラスライブラリの使い勝手がそのまま Linux でもつかえるので、.NET 知っている人には便利ですね~。 GTK も簡単に呼べるので、画面も GNOME 的なアプリが簡単につくれます。

あまり時間が無くておおくはさわっていませんが、何か不具合あっても知恵と勇気でのりきれるレベルの完成度と感じました。 UNIX でちょい GUI アプリつくりたいときには良いかもしれません。 🙂

裏からいろいろなものが

経験的に PC 部品で壊れやすいのは、光学ドライブと電源。 どちらも物理的に動くものが入っているので、そのうち壊れるみたいですね。 てなわけで、メイン PC の DVD ドライブがどーも調子が悪いので交換しました。 🙂

現在のメインマシーン。 Ubuntu で動作しております。 基本的に、ブログ書きと Windows アプリ作成以外はこれで行っております。

黒キューブなのにドライブが白でだっさい(笑)

img_0692

エアダスターきれててちょっとショック。。 いい機会なのでお掃除もかねるであります。

img_0693

ファンのほこりはとりましょう。 で新ドライブ換装!

img_0696

うむ。 かっこいい。 満足じゃ。 🙂

SP3 適応済みの Windows XP も入手。 DSP 版でたばっかり?、タイムリー。

img_0698

さて、実はメイン PC はいつもは机の下にいるのですが、ドライブつけるためにがさごそ机の下にもぐったら、裏からいろいろなものがでてきました。。

img_0699

昔の携帯とか、mini sd のアダプタとか、、ヘッドフォーンのふくろとか、すすきの祭りのチケットとか。。 なくした爪切りがでてきました!!

3ヶ月に一回は潜ってみようと思った本日でした。 😉