2013年2月24日日曜日

世界で活躍できる人材になる成長法!

どうも、まるさ@maruuusa83です!

今日は「アジア、世界で通用する人材になるための成長法 ~元ハーバード大学講師による人材育成法~」 というワークショップに参加してきました。
激アツな勉強会で、ヒートアップしまくり熱気むんむんな会場でしたw

アクティブラーニング社 代表取締役の羽根拓也さんナビゲーターのもと、人を惹きつけるとはどういうことなのか、「選ばれる」とはどういうことなのかを考えました。


羽根さんのワークショップは、羽根さんがテーマを提示しグループの中で何度も何度もディスカッションや発表を行う形式でした。
聴くだけではなくて、「考える」ということがしっかりできましたし、ほかの人の考えを知ることもできたのでとてもよい体験でした。


印象に残ったこと
「これからの仕事がなくなる」という話題です。
世界的分業化やテクノロジーの進化によって、これから様々な仕事が消えてゆくだろう、というお話でした。


そんななかでトップを維持するために必要なことや、いかに「選んでもらう」かなどをディスカッション形式しました。

「○○の仕事は20年後まだ存在しているのか?」という問いに恐怖を覚えましたw;


かんじたこと
仕事がテーマでのお話でしたが、それだけでなく「自分自身のアピール」だとか自分の作ったモノのアピールにも応用できるものでした。
また、もともと教育法について研究なさっている方で、教育法のお話やワークショップの形式そのものも非常に勉強になるものでした。

これからの部の後輩育成に役立てられたらなーと思うワークショップでした。


コミットタイム
最後のワークショップが、「感じるだけじゃたいていの人は動かないので、ワークショップの感想とこれから一週間で何かを行うと宣言してください!」というものでしたw

僕は先日mindstormsを手に入れたので、これを使ってひとつロボットを作ってブログ記事を書く約束をしてきました(爆)


というわけで、次の日曜までにしっかり仕上げてうpしようと思います!


今日はこのへんで! ノ
まるさ

2013年2月15日金曜日

ビックデータ解析演習講座を受けました!

どうも、まるさ@maruuusa83です!

もうすぐ3月ですが明けましておめでとうございます!
年が明けてから年度が終わるまでの期間が一番あっという間に過ぎ去ってしまう期間に感じますw

そんなこんなであっという間に高校生ではなくなり、大学生と扱われるようになります・・・。悲しい。


さて、本題ですw
特定非営利活動法人NDA 様が主催している、「ビックデータ解析演習講座」を受講してきました。
2月16日からスタートの全5回の講義で、演習に重きを置いて実際にビックデータを用いて株式の変動予測を立ててみる、という内容でした。

すごく良い内容で楽しかったので、まとめておこうと思います。


そもそもビックデータとは
その名の通り、巨大なデータのことですw(
きちんと構造化されている場合も、まったくされていない場合もあります。

身近なもので言うと、コンビニチェーン全店の購買記録だったり、大量のニュース情報、気象データなどが挙げられます。
最近バイオインフォマティクスとして注目されているゲノム配列のデータもビックデータと呼ばれたりしますね。



そういう巨大な情報を解析して、「今まで見えなかったこと」を見つけていくのがビックデータ解析の目的です。


Twitterが株式市場を予測する
現在のTwitterは、これまでの最高で25,088TPS(Tweet per Seconds)(という単位があることにもおどろきだけれども)を記録するほどの(有意かどうかはさておき)大量の発言が飛び交い、ビックデータが形成されるプラットフォームになっています。

ある研究によると、その発言に含まれる単語の感情を分析して世の中の雰囲気を読み取り、株式市場の予測を約86%の確率で行うことができるそうです。
8割当たれば大金持ちですよね・・・。

実際に僕らもそのような分析ができる、というところを目指して講義に挑みました。


ポジティブな単語、ネガティブな単語
与えられたデータ群(つぶやき)の分析を行う手順として、簡単に以下のような感じになります。

単語の抽出→単語の解析→統計・データの分析→結果出力

「単語の解析」ですが、ここがとても興味深いものでした。

たとえば以下のようなことをするとします。
  1. 「悪い」「減少」「降下」などというワードに"ネガティブ"を与える
  2. 「良い」「増加」「上昇」などといった単語に"ポジティブ"を与える
単純ですが、その情報を持ったうえで統計を取ると、分析するデータ群がどんな"雰囲気"なのかがわかり、株価が上昇/降下のどちらなのか判断することができます。

この解析ですが、
  • 単語のポジティブ・ネガティブについて、0か1を与えるのではなく実数値として与える
  • ポジティブ・ネガティブだけでなく、もっとたくさんの意味を与える
とかやってみるとさらに正確な予想ができると考えられます。
また、「失業率が急上昇」というセンテンスに対して、我々が読めば明らかにネガティブなものですが、先ほどの単純な解析だとコンピュータからは

『「失業率:ネガティブ」「急上昇:ポジティブ」・・・OK,1対1だからどちらでもない記事だね!』

くらいにしか見えないかもしれないので注意が必要です。


キーワード
演習講座というタイトルだけあって、実際に現場で使われている手法や解析ツールを用いて具体的な手法を学ぶことができました。

全部書くわけにもいかないので幾つかキーワードを書いておきます。
  • 極性付評価表現辞書:単語のネガティブ・ポジティブを分類するものです。
  • ベイズの定理:これを使って記事の予測モデルを構築します。
  • ナイーブベイズモデル:ベイズの定理を用いた分類モデルです。

株価予測コンテスト
講座の最終日はそれまでに得た知識を使って株価予測コンテストを行いました。

学習データとして28日分のニュース記事と四本値が提供され、分類モデルを構築。
それからランダムに選択された日から5日前分のニュース記事が提供され、選択された日の指定銘柄の相対リターンのup/downを予測する。

というものです(一部略w)。

んで、結果なのですが、なんと優勝してしまいましたwww(たぶんというか絶対まぐれ)
超豪華賞品とコンテスト前からずっと煽られてたのですが、なんとLEGOのmindstormsをいただくことができました!!


やってみたかったので超うれしかったです><



これまでビックデータと言ったらゲノム解析のイメージが強かったのでイメージが大きくかわる講座でした。
というか、ビックデータでこんなことができるなんて全く思ってなかったです(笑)

ビックデータを使った何かを作ってみたいなーと感じました。
何かアイデアを思いついたら書いてみようと思います!!

今日はこのへんで! ノ
まるさ

2013年1月11日金曜日

蛍光表示管ドライバー その1

どうも、まるさ@maruuusa83です!

あけましておめでとうございます!
沖縄も年が明けてだんだん寒い日が続くようになってきました。(寒いといっても15~18度程度だけどw)


冬休みが明ける直前に蛍光表示管(VFD)とその制御用の部品を買って回路を組んだのでレポートします!


主要部品紹介

ИВ-18 (IV-18)
今回の主役!
(たぶん)旧ソ連製の蛍光表示管です。仕組みとしては真空管の一種(※)です。

フィラメントを加熱しそこから飛び出た電子をグリッドで加速して蛍光体にぶつけ発光させるものです。
青白い光で暗い中だと見やすくてオシャレですw

僕は国内の業者さん(nixie-tube.com)から手に入れたので送料抜きの単価が2900円でしたw
海外の業者からだと 3$/本 程度で買えるなる噂も聞いています。

(※整流や増幅をしないという点から機能としては真空管と異なる)


スイッチング電源キット(KID-1205A使用)
秋月電子さんのスイッチング電源キットです。
http://akizukidenshi.com/catalog/g/gK-05662/

IV-18は定格でDC30VとDC5Vの電源が必要なので複数の電源ラインが走ることになります。
KID-1205Aを使おうと思ったらピン幅が微妙なのでキットを買うことにしましたw
コミコミのICなので非常に使いやすいです。

存在感のある感じにしたい方(僕はそうでしたw)にはおすすめ。
ごっつくてかっこいいです。


TD62083APG(トランジスタアレイ)
トランジスタを8個連ねて収めたトランジスタアレイです。
http://akizukidenshi.com/catalog/g/gI-01516/

マイコンを使ってドライブするのでスイッチングが必要です。かといって普通にトランジスタを使うと大変なことになりますw
耐圧も大きく8回路内蔵で丁度よかったのでこれにしました。

エミッタが共通なので使い方に注意が必要です。プルアップで使っています。


mbed  NXP LPC1768
今回制御に使ったのはいつものようにmbedですw
紹介記事書いたので知らない方はどうぞ)

これ借り物なので早く自分の買いたいです(汗

信号入力が3.3Vなのでまた電源線が増えます(大汗


今回すること
ガジェット作る記事にすると長くなる気がするので、表示するまでを詳しく書いていこうと思います。

今回の課題は以下の二つ。

  • VFDドライブ回路
  • VFD制御プログラム

真空管は一般に高圧を使うのでドライバーを組みます。
また、IV-18はアノードコモンでグリッドによって表示桁を選択するのでダイナミック点灯が前提になっています。


というわけで次回は回路設計をしていきます!

今日はこのへんで! ノ
まるさ

2012年12月31日月曜日

一年の総振り返り


どうも、まるさ@maruuusa83です!

もうすぐ今年も終わるので、写真とともに振り返るまるさの2012年やりますw

一月
この辺りは記録が少なくてアレです。この時はまだ二年生です。
プロコンが終わったばっかりでゆっくりしています。

沖縄そばを食いながら年を越して、なんとなーく過ごしていました。まだこのときはこの年がここまで怒涛になるとはおもっていません。平和です。


二月
期末試験でHOGEHOGEしています。
予定表も真っ白でとても平和そうです。


三月

XHagoに参加しました。たぶん生まれて初めての発表会(?)です。
競技ばっかりで人前に出てしゃべる機会なんてほとんどないのでアレでした。

これって今年だったんだナァ。このころを思い出すと成長したなーと思います。

そして、初めてのアルバイトを経験しました。
沖縄国際映画祭のレッドカーペットの担当をして、芸能人たくさんみれました。すんげーたのしかったです。きつかったけど。


四月
ここから今年度に入ります。年度初めであれこれバタバタしています。

留学生のチューターを引き受け、ノリで伊江島に行きました。
この辺りから少しずつ行動力が付き始めている気がします。丁度ユリの時期で伊江島はユリ祭りでした。

初めて友達だけとの伊江島だったので、レンタサイクルで島を半周しました。翌日筋肉痛で身動き取れませんでした。

留学生の友達と県外人の友達だったので観光案内しました。なんかへぇへぇ言ってもらえて楽しかったです。バスガイドになるのもいいなと思いました(大嘘)。
楽しかったけどチャリンコは二度とやりたくない。車がいいです。まじ。


五月
この辺から忙しくなり始めます。
ITfrogsの説明会もこの月にありました。とても盛り上がった説明会でとても楽しかったです。でも残念ながら写真は持ってないです。

各大会のアイデア出しを行ったのもこの月でした。
パソコン甲子園にしか出場するつもりはなかったのですが、僕らのチーム以外ほぼみんなプロコンで福岡に行くということで寂しかったので、
プロコンにも出場することを企画書提出締切5日前に決めました。バカスwww

出場を決意した翌日には企画書を書き、名前決めの段階でまったく同じ企画(驚くべきことに名前も中身もまったく同じ)で起業した会社があることが判明し、三日前にしてやり直しとかしてました。


六月
ITfrogsの面接があり、研修が始まった月です。だいぶ面接緊張した気がしますが、始まってしまえばなんとか頑張れることを知りましたw

外国人との英語での交流というのも初体験でした。小さいころから親の「英語はやらねば!」という方針で英語をしていたのですが全く身についておらず、非常につらい思いをしましたw;

でも楽しく英語に触れあうことができて、英語をやりたくなるきっかけになりました。実は英語嫌いだったけれど、今ではそんなことないです!ww


七月
パソコン甲子園モバイル部門の締切がありました。結局締切前のデスマをします。すごく怒られました。
高専祭の企画決定だとか期末試験直前とか学校で緊急集会があったりだとか変なイベントが多かったです。

JICAに訪問し、プレゼンテーションな英語に初めて触れました。キャッチボールがない上に、専門用語も多く全く分からなかったです。「アレ、意外と俺イングリッシュ、ベリーウェルなのでは」という謎の自信を思い切りへし折られました。


八月
色んな事しまくった1ヶ月でした。

初週~2週目は試験・閉寮前のアレコレ。

3週目はビジネスアイデアコンテストのブラッシュアップ会やOVCでの合宿。

4週目もブラッシュアップ会が続き、ITfrogsの話し合いや研修、記者会見などがありシリコンバレーへ出発する準備を整えました。

5週目はアメリカにてシリコンバレー研修。何もかもが初めての経験でした。

まだ全く準備の整っていないOVCにてお手伝いをしつつ合宿をさせていただきました。本当に楽しく有意義な3日間だったと思います。詳しくは記事読んでくださいねw(一日目二日目三日目)。

シリコンバレー研修の初体験は数えきれないほどのもので、企業訪問でも"すげぇ"ばっかりでした。

働くことだとか起業についてとかも勿論ですが、あらゆることの"常識"だとか"感覚"の何もかも変化した10日間だったと思います。

多くの企業の様子を見ることができたので本当に良い経験でした。
これについても記事書いたので読んでくださいねw(こちら

結局この月は一日出かける先がなかったのは1日だけでしたw
その日も製作や準備を行っていたので、人生で一番濃厚な1ヶ月でした。当時も充足感ですごく楽しかったし今でも経験してよかった1ヶ月だとおもいます。大変だったけどw


この月はいろんな人に関わって色んな物を得られたと思います。
関わることのできたみなさん、本当にありがとうございました!!!


九月
シリコンバレーから無事帰沖したのも束の間、沖縄大学院大学(OIST)への訪問や生まれて初めての新聞への寄稿の執筆、帰国後報告会のためのプレゼンづくりなどfrogsでの活動のほか、
東京高専のTeamCoccoloの皆さんが沖縄高専にいらっしゃった際に交流も行いました。

寄稿がすごく慣れない感じで、ものすごく時間がかかった上に全然うまくまとまりませんでした。
ああいう作文は何回も訓練してないといけないんかなーとすごく悲しみに満ちた1週間でした。作文力はつけるべき。

初めての名刺を作って配りました。やっぱり名刺があると話のきっかけになりやすくてとても良いです。そろそろ切れそうなので注文しなおさなければ。


十月
パソコン甲子園モバイル部門の最終提出の締切がありました。やっぱりここでもデスマーチをして怒られます。ごめんなさい。

そして提出直後に高専プロコンの本戦がありました。
初めてハードウェアを使った企画を立てて作ってプレゼン、ということをしました。
ロボコンをやめてからはプログラミングばかりだったのですが回路と少し触れあうことができてとてもよかったです。
そして初めての企画発表で大変な思いをしました。でもすっごくいい経験になったと思います。来年はこの経験生かして目指せ最優秀賞!



全国の大会に出て3位になれたのはとても嬉しかったです。満足、とまではいかないですが初めてなのに取れたのは良かったと思います。

ぎりぎりまでデスマでしたが、一緒に戦ったチームのみんなには大感謝です。このチームじゃなきゃできなかったと思います。

あと、博多でラーメンたくさん食ったのはとってもよかった。一年生とも仲良くなれたしよかった。


十一月
今度はパソコン甲子園の本戦があります。
今回はモノの提出期限が決まっていたので、本戦直前はしっかりプレゼン/デモを作りこむことができました。

さらにプロコンと同じチームだったので、その時の経験だとか蓄積をばっちり活かして挑むことができました。

開発には深くかかわってなく、プレゼンもしてないけれど、きちんとプロデュースすることはできたかな、と思っています。これもいい経験になったと思うので、もっと場数を踏んでいいモノ作っていきたいです。

全国優勝という初体験もできたし、久しぶりに競技プログラミングの大会(パソコン甲子園プログラミング部門)に参加することもできたのでとても楽しい大会でした。

大会中、先生と喜多方でラーメン食ったり温泉行ったりしました。
やっぱりいいよね温泉!ラーメン!

ご当地B級グルメの焼きそばカレーを食ったりだとか初めての新幹線だとかそういう部分でも充実できてよかった^^


十二月
そして今月。
ITfrogsの最終発表がありました。慣れない英語プレゼンで思い切り苦戦し、結局ダメダメなプレゼンでした。
でも人前に立つことがとても自然になっている感じに驚きました。英語ストーリーコンテストとかやってた時は死ぬほど緊張して本番はゴチャゴチャになってたけど、それほどの緊張にはならなくなっていてすごく驚きました。

発表する、という機会もたくさん得ることができて、色んなモノを見ることもできて、本当にたくさんの経験と蓄積を得ることができた研修だったと思います。やってよかった。

これからもOB/OG会としての活動もあります。これから先も結果を残し続けられるように頑張っていきます!

でも写真がなかった・・・。




書きながらいろんなことが思い出されましたw
すんげー忙しい一年だったけど、Xhagoを思い出すと別人のようになれたと思いますwww

年越しのアレコレがあるので、この辺にしておこうと思います。

今年も残り少ないですが、みなさんよいお年を!!!



では、今日はこの辺で ノ
まるさ

2012年12月27日木曜日

はじめてのぎょうむ ~くみこみ~

どうも、まるさ@maruuusa83です。

僕はハードウェアな感じなのが好きですが、なかなか学校では触れることができない分野なのでビミョーな感じにしかEnjoyできてませんでした。
冬休みはなんかしてやろーと思ってたら、先生の紹介もあって、12/24から今日まで組み込み開発のアルバイトに参加することができたので簡単に感想をまとめてみます!

業務プログラミング初体験
組み込みだとかそうでないとか以前に、そもそも業務でのプログラミングが初体験でした。
人に読まれることが前提だとか、人に伝えるためのドキュメントだとか、実践してみると意外とできないものだなーと感じます。

それと、英語のドキュメントを使ってのプログラミングも初めてでした。
組み込みネットワークの通信プロトコルの仕様を読んでの実装でした。最初はすごく身構えてがーがー言ってましたが、意外とやってみると楽しかったです。わかんない単語多かったけど。

組み込みネットワーク初体験
組み込みだとかそうでないとか以前に、そもそもネットワークの実装が初体験でした。
物理層のプロトコルを読むところから始めて、トランスポート層からプレゼンテーション層あたりの実装を行いました。(下のレイヤーはプロトコル読んだだけです。)

それと、バス型ネットワークに触れるのも初めてでした。
もともとそのネットワーク構成がすごく不思議で気になっていましたが、ちゃんと仕様まで読めてすんごく楽しかったです。バス型不思議です。すごい。

また、組み込みネットワークということで、耐障害性も考慮されたプロトコルで読んでてとても楽しかったです。

これからやってみたいこと
実際に機器と戯れたりハードウェアならではの困難があったりとか色々楽しかったです。
仕事納めがすぐだったので4日間という短い期間でしたが、とても楽しいお仕事でした。現場の方々もとても優しくて面白くて、お手伝いさせていただいて本当に有難かったです!

これから冬休みの間は何かアプリを作ろうかと考えていたんですけれども、何かしらのハードをもったガジェットを作ってもいいかなーとか思います。まだ構想練ってないです(てへぺろ☆

学校だとWebアプリだとかスマホアプリだとかばっかりなので、もう少し新しい感じの何かをやりたいです。おかげで浮いてる感あるけど。アプリもがんばる。



というわけで
今日はこの辺で! ノ
まるさ

2012年12月25日火曜日

Win8アプリ開発チュートリアルまとめ

どうも、まるさ@maruuusa83です!

大会の副賞でWin8PC(タッチできないけどw)を手に入れ、折角なのでWin8アプリに挑戦することにしました。
というのも、アプリストア見てたらアプリまだ少ないようなので、こんなまるさでも売れるアプリを作れるのではとかいう浅はかな考えで御座いますww

そこで今回MSDNのWin8App開発チュートリアルをやってみました。
というわけで開発で必要そうな大事なところをまとめていきます。
Win8に挑戦する人に中身を紹介しつつ、自分用のリファレンス。という感じで書いていきます。

※開発に必要なことだけ知りたい!という人向けです。じっくり練習するならチュートリアルをおすすめします。

目次
1、開発環境
  ・開発環境について
  ・XAMLについて

2、プロジェクトの作成
  ・プロジェクトの作成
  ・テンプレートの紹介

3、アプリのビルド・起動・終了
  ・アプリの起動法
  ・アプリの終了法

4、ページの追加
  ・プロジェクトの追加の方法
  ・ページ追加の時の注意

5、UI要素の追加
  ・GridレイアウトへのUI要素の追加
    ○タイトルバーを作る
    ○タイトルをつける
    ○ボタンの追加
    ○実行する

6、ページの遷移
  ・ボタンクリックによるページ遷移の方法
    ○章を始める前に
    ○ボタンにイベントハンドラーメソッドを登録する
    ○遷移のための手続きをイベントハンドラーに記述する
  ・スタートページの変更の方法

7、ページレイアウトについて少し詳しく
  ・レイアウトを構成するためのUI要素
  ・実際に書いてみる
    ○Gridの設置
    ○Gridにパーツを追加していく
    ○Gridのさらなる整形
  ・柔軟なレイアウトの構築
    ○ビューのシミュレートの方法
    ○スナップビューに対応させる

8、その他について



1、開発環境
今回の僕の開発環境はWindows8上で動いているMicrosoft Visual Studio Ultimate 2012で開発を行い、開発言語はC#およびXAMLを使っています。

Windows8Appは以下のような多くの言語を簡単に連携させてプログラミングすることができるようです。基本的には処理を記述する言語とUIを記述する言語の組み合わせで書かれるようです。

・JavaScript / HTML
・C# or Visual Basic / XAML
・C++ / XAML
・C++ / DirectX

XAML
XAMLは宣言型言語の一種で、アプリ上で表示されるUI要素をXAMLマークアップで作成できます。
XAMLで別のコードを関連付けてイベントに応答することの設定だとかもここでします。



2、プロジェクトの作成
[ファイル>新規作成>プロジェクト] で図のような新しいプロジェクトのダイアログが立ち上がってきます。
左側のウィンドウで[インストール済み>テンプレート>Visual C#>Windows ストア]の順に展開し、新しいアプリケーションを選択します。
そして赤で囲んだ「名前」のテキストボックスにプロジェクト名を入れて[OK]を押してしまえば完了!

新しいプロジェクト

ここで幾つかテンプレートの紹介をします。

新しいアプリケーション
定義済みのコントロールもレイアウトもないテンプレートです。
最低限必要なコードが含まれてます。

グリッド アプリケーション
Topページ(図上)コンテンツをグリッドに配置して閲覧できるようになってるものです。
コンテンツをタップすると詳細画面(図下)が表示されます。グループ名をタップするとグループ詳細画面も表示できます。
Grid Template

分割アプリケーション
Topページ(図上)にグループが並び、グループをタップするとコンテンツが縦に並ぶページ(図下)を表示するテンプレートです。
RSSリーダに便利かもしれないです。
Split Template



3、アプリのビルド・起動・終了
アプリの起動
プロジェクトは作成するだけで実行可能なアプリケーションになっています。
起動するには、F5キーを押します。F5キーを押すことでデバッグモードでのビルド・展開・起動が行われます。最初にスプラッシュ画面が表示された後、アプリが表示されます。

ビルドだけ行いたいという場合は、[ビルド>ソリューションのビルド]でビルドを行えます。

アプリの終了
アプリを閉じるためのボタンやコマンドはないです。
閉じるためのジェスチャーを行うか、Alt+F4 キーで閉じることができます。

デバッグモードで起動した場合、デバッグモードを終了しなければなりません。
VisualStudioに戻って、[デバッグ>デバッグの停止]でアプリを閉じます。Shift+F5でもよいです。



4、ページの追加
次は、アプリにページを追加する方法について書いていきます。

[プロジェクト>新しい項目の追加]で図のようなダイアログが表示されます。

新しい項目の追加

好きなレイアウトを選択しましょう。右側に出る説明でどんなテンプレートなのか大体想像つくと思いますw
最低限のものが備えられている「基本ページ」が基本です。
選択したら、下にある「名前」の項目で名前を付けて追加をクリック。

そのプロジェクトに初めて追加するレイアウトの場合、
この追加テンプレートは、プロジェクトに含まれていないファイルに・・・ファイルを自動的に追加しますか?」
というダイアログが表示されます。必要なファイルを自動でインクルードしてくれるので、「はい」を選択しておきましょう。

その後、デザイナーが表示されますが、エラーが表示されます。これは新しくインクルードしたファイルがビルドされていないためで、一度ビルドすればエラーは表示されなくなります。

※僕の環境だとVS起動中にPCがスリープからの復帰を経験しているとなぜかVSがハングアップします。
一度VSを立ち上げなおすときちんと読み込むことができます。データ破壊が怖いので、僕はインクルード直前に一度保存してVSを再起動してから行っています。



5、UI要素の追加
ページを追加することができたので、今度はページにUI要素を追加していこうと思います。
だんだん開発っぽくなってきたww

XAMLに直接書き込むのもいいですが、Visual Studioには強力なXAMLのビジュアルデザイナーが搭載されてるので、今回はこれを使ってUIを作っていきます。

この章では、試しにタイトルをつけることと、ボタンの追加を行いました。


GridレイアウトへのUI要素の追加
新しいアプリケーションを立ち上げて、MainPage.xamlにちょっとしたUIを作ってみようと思います。
MainPage.xamlは基本ページなので目に見えるUI要素は最初は何も含まれていません。ただ、全体にGridというUI要素が配置されています。

Gridは行と列で構成されるグリッド領域を作ることができます。これによってレイアウトを作って部品が配置しやすくなります。最もよく使うレイアウトだと思うのでこれを使ってみます。

タイトルバーをつくる
Gridの上と左にグリッドレールと呼ばれる点線が表示されてます。このグリッドレールの上にカーソルを移動するとオレンジの線が表示され、クリックすると行もしくは列を追加することができます。

とりあえずタイトルバーを作ってみましょう。
左側のグリッドレールの上にカーソルを移動して適当な場所に1行追加します。

GridPanel

するとGridの左端に行の幅を示す数字が出るので、そのあたりにカーソルを置きます。ポップアップが出たら下矢印をクリックして「ピクセル」を選択してください。
もう一度ポップアップを出して、左にある数字を140に書き換えると、幅が140ピクセルの行が作られます。これは、XAML上でのHeightプロパティが編集されています。

・タイトルをつける
今度は、画面左端にある「ツールボックス」ウィンドウを開いて、[すべてのXAMLコントロール]の中のTextBlockを先ほど作ったタイトルバーの適当な所にドラッグ&ドロップしてください。


そして、追加したTextBlockを選択した状態でプロパティウィンドウのレイアウトの中のHorizontalAlignment, VerticalAlignment, Marginのプロパティをリセットします。
リセットは、プロパティのボックスの右にある■をクリックするとメニューが出てくるので、リセットをクリックしてください。
リセットしたら、Marginの←の値を50に変更してEnterキーを押しましょう。
これで配置は完了です。

次に、スタイルを設定します。
プロパティの[寄せ集め]の中にあるStyleの右にある□をクリックして[ローカルリソース>PageHeaderTitleStyle]を選択してください。これでレイアウトの設定は完了です。

最後にテキストの内容を設定しましょう。
プロパティの[共通]の中にあるTextプロパティを編集します。■をクリックしてメニューから「新しいリソースに変換」を選択してください。
ダイアログが立ち上がったら、リソースの定義先を[このドキュメント>TextBlock<名前なし>]に変更すると、自分自身をリソースとして持ちます。
もう一度Textプロパティのメニューを開くと、[リソースの編集]が選択可能になっているので選択し、値を「Hello, Windows App!」に変更しましょう。

タイトルの設定

これでやっと、やっとタイトルが付きましたw(汗)

・ボタンの追加
さて、今度はボタンの追加です。TextBlockを追加したように、Buttonを下の広いグリッドの適当な場所にドラック&ドロップしましょー!

プロパティの[レイアウト]で配置していきます。
HorizontalAlignmentをLeft, VerticalAlignmentをTopに指定して、Marginの←と↑を100に設定しましょう。

これで追加は完了です!!(適当)

・実行してみる
F5キーを押して試しにアプリを実行してみてください。きっとタイトルと押しても何も起きないボタンが表示されるだけのしょぼいアプリができていると思います!はい、喜んで!

Hello, Windows App!

このままだと面白くないので、次の項目でボタンにアクションをつけてみます。



6、ページの遷移
さて、ページとUI部品が追加できたので(しろめ)、ページ遷移のやり方を覚えましょー。
今回はボタンにアクションをつける方法も一緒に書いていきます。


ボタンクリックによるページ遷移の方法
ボタンクリックによってページ遷移をするには、まずボタンを設置しなければならないです。
今回は、前の項目で書いたHello, Windows App!のアプリを使って説明していきます。

また、この章を始める前に
アプリの中に、遷移先となる適当な新しいページを追加しておいてください。(方法については「4、ページの追加」の中で説明しています。)
今回は「基本ページ」をBasicPage.xamlとして追加してあります。

・ボタンにイベントハンドラーメソッドを登録する
ボタンをクリックしたときにアクションをしてもらうには、そのボタンにイベントハンドラーになるメソッドを登録しなければなりません。
このメソッドは登録したタイミングで自動的にそのxamlのなかのcsファイルに追加されます。
とりあえずやってみましょう。

まず、イベントを付けたいボタンを選択し、プロパティの下図の稲妻マーク[イベント]ボタンをクリックします。
稲妻マークのイベントボタン
すると、イベントごとにハンドラーを設定するための画面が開くので、その中からClickの項目を探し出します。
見つけたら、「Button_Click」と入力してEnterキーを押します。

すると、コードエディタにジャンプし、自動でButton_Clickメソッドが作成されていると思います。
ボタンがクリックされるとこのメソッドが実行されます。

・遷移のための手続きをイベントハンドラーに記述する
先ほど自動生成されたハンドラーに、以下のようなコードを追加します。


MainPage.xaml.cs
if (this.Frame != null)
{
    this.Frame.Navigate(typeof(BasicPage));
}


赤字ボールドの部分を遷移先に指定したいページのリソース名にすることで設定できます。
新しい項目の追加から追加を行っているページであれば、追加の時に指定したxamlの名前でOKのはずです。VSが補完してくれると思います。

ナビゲーションのサポートが組み込まれたLayoutAwarePageクラスに基づいたページであれば、戻るボタンを追加せずとも自動で戻るボタンが追加されます。超便利です。

「空白のページ」でなければ基本的に追加されていると思います。追加するページは「基本ページ」を使いましょうww


スタートページの変更の方法
ページ遷移をしようと言いつつスタートページの変更の仕方も説明しておきますw ニーズ多い気がしたので解説します。
スタートページというのはアプリを起動して一番最初に表示するページです。

VisualStudioの「ソリューション エクスプローラー」という枠(デフォルトの設定だと画面右上)の「App.xaml」を展開した中にある「App.xaml.cs」をダブルクリックしましょう。コードエディターにソースが表示されます。

ソリューション エクスプローラー

OnLaunchedメソッドの中に、以下のような部分があるので探してください。


App.xaml.cs
if (rootFrame.Content == null)
{
    // ナビゲーション スタックが復元されていない場合、最初のページに移動します。
    // このとき、必要な情報をナビゲーション パラメーターとして渡して、新しいページを
    // 構成します
    if (!rootFrame.Navigate(typeof(MainPage), args.Arguments))
    {
        throw new Exception("Failed to create initial page");
    }
}


赤字とボールドで強調した「MainPage」の部分をスタートページにしたいページのリソース名にすることで設定できます。
新しい項目の追加から追加を行っているページであれば、追加の時に指定したxamlの名前でOKのはずです。VSが補完してくれると思います。


これで画面遷移周りはどうにかなる(はず)!!



7、ページレイアウトについて少し詳しく
「5、UI要素の追加」の中で少し触れましたが、レイアウトの自由度を上げるために組み方をもう少し掘り下げてみましょう。
また、ページレイアウトの様々な方向とビューへの対応についても触れます。

この章では、幾つかUI要素を紹介した後、実際にページを一つ組んでみます。
その後、様々なビューに対応できるように設定していきます。


・レイアウトを構成するためのUI要素
レイアウトを構成するためのUI要素について、幾つか触れていこうと思います。

Grid
5章で使いました。行と列で構成されるグリッド領域の定義が行えます。
基本Gridをベースにレイアウト構築すれば失敗はないような気がしますw
使い方は5章を見てみてください。

StackPanel
一列に子オブジェクトを整列させることができます。水平に並べるか垂直に並べるか指定できます。

これらの要素を使ってゴリゴリとレイアウトを書いてみます。

・実際に書いてみる
6章で遷移先にした基本ページに組んでみます。Microsoftのチュートリアルと同じ画面を作ることにします。
本家チュートリアル

やるんだったら本家がいいと思うけど、とにかく早く作りたいって人は↓をやってみるといいと思います。内容は大体一緒です。


Gridの設置
1、Gridを画面中央に放り込む
2、Gridのプロパティの[レイアウト]を開く
3、Width, Height, HorizontalAlignment, VerticalAlignment, Marginをリセット
4、Marginの←と↓を120に設定
5、左側のグリッドレールを使って行を2つ追加(3行にする)
6、上の行、真ん中の行をピクセルに設定し、幅を50、70に変更する。(下図の通り)(方法は5章参照)

Gridの設定
ちなみに1*というのは「残りのスペースを使いますよ」というのを意味してます。
これでGridの設定はおしまい!

Gridにパーツを追加していく
・GetPhotoボタンの追加
1、ツールボックスから一番上の行にButtonをドラッグ&ドロップ
2、Buttonが選択された状態で、プロパティパネルでHorizontalAlignment、VerticalAlignment、Marginのそれぞれをリセット
3、[共通]の中のContentプロパティを"Get photo"に変更

・写真タイトルの追加
4、ツールボックスから2番目の行にTextBlockをドラック&ドロップ
5、追加したTextBlockが選択された状態で、プロパティパネルでHorizontalAlignment、VerticalAlignment、Marginのそれぞれをリセット
6、[寄せ集め]の中にあるStyleのプロパティを探す。
7、Styleプロパティのメニューの[ローカルリソース>PageSubheaderTextStyle]を選択

・下半分の設計のための準備
8、ツールボックスから下の行にStackPanelをドラッグ&ドロップ
9、StackPanelが選択された状態で、プロパティパネルでWidth、Height、HorizontalAlignment、VerticalAlignment、Marginのそれぞれをリセット
10、プロパティパネルでStackPanelのOrientationプロパティをHorizontalへ変更
11、プロパティパネルの上部にある[名前]の項目をimagePanelに変更しEnter

・Imageパネルを載せるためのBorderの追加
12、StackPanelを選択した状態で、ツールボックスからStackPanelにBorderをドラッグ&ドロップ
13、プロパティパネルの[ブラシ]でBackgrowndとBorderBrushのプロパティを単色ブラシを指定して#FF808080に変更

・追加したBorderにImageを載せる
14、ツールボックスから、BorderにImageをドラック&ドロップ
15、追加したImageの[名前]の項目をdisplayImageに変更
16、[共通]のSourceプロパティのドロップダウンリストから、Logo.pngを選択
17、左端にある[ドキュメント アウトライン]でImageを含むBorderを選択し、プロパティからWidthをリセット

・Imageの情報を載せるためのテキストを追加する
18、先ほど追加したImageの右側の空いている部分に、TextBlockを6つドラック&ドロップ
19、左から1、3、5番目のTextプロパティをそれぞれ"File name:", "Path:", "Date created:"に変更(メニューを開いてリソースの編集をクリック)

ここで、パーツを追加し終わった状態での画面を見てみます。

ここまでの状態

Gridのさらなる整形
・項目をStackPanelによってグループ化
1、ドキュメントアウトラインで、imagePanelの中のTextBlockをすべて選択
2、右クリックから[グループ化>StackPanel]を選択

・グループ化したので、縦にレイアウトを変更
3、先ほど作ったStackPanelのプロパティで[レイアウト>Orientation]をVerticalに変更
4、Marginの←を20に変更

・テキストのレイアウトを変更していく
5、1,3,5番目のTextBlockを選択する
6、プロパティのStyleのメニューを開き、[ローカルリソース>CaptionTextStyle]を選択

7、2,4,6番目のTextBlockを選択する
8、プロパティのStyleのメニューを開き、[ローカルリソース>ItemTextStyle]を選択
9、Marginの←の値を10に設定し、↓の値を30に設定

これでレイアウトができました!

完成したレイアウト

という手順でレイアウトを作っていきます(適当)

・柔軟なレイアウトの構築
Win8アプリはタブレット向けということで、様々な方向や様々なタイプのビューに対応しなければなりません。開発者は大変です。

VisualStudioデザイナーでは、様々なタイプのビューのシミュレートをサポートしています。これで柔軟なレイアウトを構築していきます。

ビューのシミュレートの方法
左端の[デバイス]パネルを開いて右図のようなビューボタンをクリック
これによって、スナップした状態のビューが再現できます。

先ほど作ったレイアウトに実行した結果がこれ

スナップビューのシミュレーション

そのままちょん切れただけで悲惨ですねえ・・・。どうしたらよいのでしょうか。

スナップビューに対応させる
1、スナップビュー表示にした状態のまま、[デバイス]パネルの中の[状態記録の有効化]チェックボックスをONにする
2、contentGridコントロールを選ぶ
3、プロパティの[レイアウト]のMarginの←と↓を20に設定
4、imagePanelを選択
5、プロパティの[レイアウト]のOrientationプロパティをVerticalに設定

これで大丈夫!
実際に実行してスナップビューにしてみます。

修正済みスナップ
ハッ!完璧ネ!
と、このような手順で縦表示だとかにどんどん対応させていきます。
これでレイアウトに関するメモ書きは終わりです!



8.その他について
Microsoftのチュートリアルでは他にも、以下のような話題が挙げられています。

  • 様々なストレージを使っての状態の保存
  • 次回のアプリ起動時にアプリの状態の復元
  • ファイルアクセスとファイルピッカーについて


が、しかし、とりあえずお試しでアプリ作るにはまだ必要のない機能な気がするので(書くのが嫌なだけw)
次回の記事ということにして今回はここまでということにします。

次回は残りの記事の解説、そのあとには紹介したモノを使って実際にアプリを作ってみようかと考えています。

なにか書いてほしい記事があればTwitter(@maruuusa83)とかコメントとかでお知らせくださいw


というわけで
今日はこの辺で ノ
まるさ

2012年12月22日土曜日

近況まとめ

どうも、まるさ@maruuusa83です!

長いこと更新せずにいました;; ごめんなさい。
この更新していない期間、怒涛のイベントラッシュだったので幾つかピックアップして書いていきます!
すごく簡単な紹介ばかりで申し訳ないですがw
強調とかもナシでのぺーっと書いていきます。

高専プロコン
まずは高専プロコン。今回は自由部門に参加しました。

自由部門は、ITを活用した作品を自由に作って発表しようぜというもの。
僕らのチームは節電をテーマにした「かしこん!!」という作品を発表しました。
(かしこん!!については詳しくは別のエントリーで紹介しようと思います)

競技ばかりだったので、初めての開発・企画プレゼン・デモンストレーションでした。
ぎりぎりまでの開発・故障率の高いハードウェアのおかげで大会期間中もパタパタでしたがとても楽しく活動することができましたw

開発を進めることだとか、大会におけるプレゼン・デモンストレーションがどんなものなのか初めて体験して、反省点をたくさん挙げることができたよい大会でした。

結果は第三位にあたる特別賞と、協賛企業特別賞のW受賞でした。
チームとみんなの協力があったからこそ勝ち取れた賞だと思います。本当に良かった!

パソコン甲子園
パソコン甲子園。
今回はプログラミング部門とモバイル部門の二部門に出場しました。

モバイル部門はAndroidアプリを開発してデモ・プレゼンをするという部門で、
プログラミング部門は競技プログラミングと呼ばれるプログラムを使って問題を解いていく部門です。詳しくは「競技とオシロ。」の中で少し触れてるので読んでみるといいかもしれないです。

プログラミング部門に関してはガチ勢としてではなくお試し受験として頑張ってみたらなんとか予選通過することができた!って感じでしたww 
逆にモバイルはワンチャン!ということで前々から取り組んで一生懸命やってきました。ただ、高専プロコンとも並行で進めたのでいろんな方に迷惑がかかったりしましたがww;

本戦1日目ではプログラミング部門。モバイル部門の前日チェックをサボっての参加でしたw
勝たねば!というプレッシャーが比較的少ない中での参加だったので、大いに楽しむことができました。
同校から出場している某ミズゴロウペアを目標に挑んで(まぁ勝てるはずないのですがw)風船を3つ貰って帰ることができました。
久しぶりの競技の大会、ということでとても楽しかったです。

二日目はモバイル部門。
今回プレゼンターは後輩の2年生が行うということで、直前まで練習をやりこみました。
デモンストレーションに関してもどんどん練習を行い、ブースの雰囲気作りも大切にしながら作っていきました。
高専プロコンの反省が大いに生きたと思います。プロコンの時よりも楽しく行うことができました!

結果はなんとグランプリ、優勝。
ぎりぎりまでいろんな人(主にきょーじゅw)に迷惑かけまくったけれど、大きな結果を残すことができて本当に良かったです。結果で恩返しできたかなーと信じてます()

ITfrogs最終成果報告会
最後にITfrogs最終成果報告会がありました。
とても大きな会場での、英語でのプレゼンテーションという初めての体験で、とてもビビりましたw
特に英語というのが;;

作ったサービスのプレゼンテーションそのものはあまりうまくいきませんでしたが、とてもいい体験でした。
あんな会場でプレゼンするのはこれから先二度とないんじゃないか、ってくらいでしたww

frogsもこれで最後のイベント、ということでしたが、この研修が終わってからも目に見える形で成果を残し続けていこうと思います。
今年に負けないくらいたくさんの結果を毎年残せればと思います!



かんたんに書いていきましたが、本当にいろんなことがありました。
この間にお世話になったみなさん、本当にありがとうございました。

今日はこのへんで! ノ
まるさ