高専カンファレンス in 岐阜でQtの発表してきました

高専カンファレンス in 岐阜」(岐阜ソフトピアジャパン)で、発表をしてきました。
実は高専とは縁もゆかりもないのですが、お誘いをいただきましたので参加させていただきました。

今日感じた一番は「高専生のパワーはすごい」卒業生も含めてね。
(もー相変わらずくすぶってる自分が歯がゆい)

Qtの面白さを少しでも感じてもらえればと思って発表を用意して行ったのですが、そんなのどうでも良くなるくらい面白い話がたくさん聞けました。
懇親会では発表にはなかったさらに濃い話もたくさんでもう感動!
特に「つうなさん(@t_una)」の人工衛星の話はすごかった。
あとわふーの中の人とお話できてとても勉強になりました。


細かいプログラムは、公式のwiki「高専カンファレンス in 岐阜」で。
当日の「Twitterの様子をまとめ」もあります。
USTは他の地域のも含めて「kosenconf」に録画があります。あわせてご覧ください。


いちおう今回の発表に使った資料はこちらです。
初ライブコーディングでどきどきでした。
でも、一番見てほしかったところを表現するにはやっぱりライブで見てもらうのが良いと思ったので挑戦しました。
(次回はもっとフォントサイズ大きくしてやりたいと・・・。)



続きにライブコーディングのコードを掲載します。
Twitterのパブリックタイムラインのアイコン画像をタイル上に並べるサンプルです。
たったこれだけのコードでXMLをパースして情報を取得できるってすごいですよね。
本当はアニメーションとかもっと見せたかったけど、そこまでライブでやる自信はなかったのでやめました。
Qt for Androidが失敗したのは痛かった、あれをぜひ見せたかった。

import QtQuick 1.0

Rectangle {
    width: 360
    height: 360

    // ウインドウからはみ出たらスクロールさせる
    Flickable{
        anchors.fill: parent
        contentWidth: _grid.width
        contentHeight: _grid.height
        // タイル状に配置する為のエレメント
        Grid{
            id: _grid
            columns: 4
            spacing: 4
            // 繰り返し配置する
            Repeater{
                model: _model
                // 繰り返しのレイアウト
                delegate: Rectangle{
                    width: 120
                    height: 120
                    clip: true
                    // アイコン画像
                    Image{
                        anchors.fill: parent
                        source: _icon
                    }
                    // 名前を表示
                    Text{
                        anchors.bottom: parent.bottom
                        text: "@" + _name
                        color: "#ffffff"
                        style: Text.Outline
                        font.pointSize: 24
                    }
                }
            }
        }
    }

    // TwitterのAPIアクセス
    XmlListModel{
        id: _model
        source: "http://api.twitter.com/1/statuses/public_timeline.xml?count=40"
        query: "/statuses/status"
        XmlRole { name: "_icon"; query: "user/profile_image_url/string()";}
        XmlRole { name: "_name"; query: "user/name/string()";}
    }
}