2012年3月29日木曜日
メンテしやすいコードを書くために4つの習慣を始めてみた。
2012年3月9日金曜日
たった4行のコードでできる Rでデータマイニング データの可視化
前回から時間が開いてしまいましたが、前回の続きでみなさんと一緒にデータマイニングをやっていきたいと思います。
前回の記事はこちら
この記事ではデータマイニングに関する特別な知識は要りません。必要なものはパソコンとインターネット接続環境だけです。
今回の記事は、データの可視化に焦点をあてたいと思います。
とにかく、手を動かしてやっていきましょう。
まず、Rを起動します。
次に、irisのデータをロードしましょう。
主成分分析をかけます。(今はどんなものか分からなくても大丈夫です)
主成分分析の結果をプロットします。
最後にラベルをつけます。
これで主成分分析による可視化が成功しました。
setosa, versicolor, virginicaで分布に特徴が出ていることが分かりますね。
では、今回の記事で取り扱った主成分分析について説明したいと思います。
今回取り扱ったデータセットであるirisの中身を見てみると
1つのレコード(行)は
Sepal.Length, Sepal.Width, Petal.Length, Petal.Width
の4つのデータ軸(列)と、
このデータの種類が何であるかの
Species
の属性を持っていることが分かりますね。
このデータをグラフで可視化しようとしたとき、普通にやろうとするとできません。
なぜなら、グラフ(散布図)で画像にすると、x軸、y軸の2つの軸でしかデータを表せず、
このデータは4つの軸で構成されているので、2つの軸しか表せないグラフ(散布図)には収まりきらないのです。
(5つめの軸であるSpeciesはラベルなので、データを表す軸にはなりません)
そこで、威力を発揮するのが主成分分析です。
主成分分析を簡単に説明すると、本来のデータの特性をできるだけ失うことがないように次元削減(軸を減らす)するための手法です。
つまり、できるだけ情報を失わずに4軸から2軸にすることが可能ということです。
少し分かりづらいでしょうか?
くだけた言い方をすると、データの中に存在する一番良い2軸を選んでくれるものです。
(実際には2軸だけではなく、何軸にすることもできます)
今回のirisのデータですと、4軸から2軸に減らしたにも関わらず、元々の情報の97.7%を表現できています。
データが1/2になっているのに、ほぼ100%再現できているってすごいですよね。
今回は主成分分析を取り上げました。
少し難しかったでしょうか。
しかし、やり方は非常に簡単です。コードはたった4行です。
興味を持っていただけたら、他のいろいろなデータに試してみてください。
次回は判別分析について触れたいと思います。
記事を読んでいただきありがとうございました。
2012年2月24日金曜日
知ればモテる!! 世界で使われているSNSトップ10
NO3 Twitter |
2012年2月19日日曜日
新アプリ「やめます宣言」をリリースします!
2012年1月29日日曜日
Facebookページを完成させるまでに注意した7つの事
techGarageの松岡です。
いま流行のFacebookページ。もはや、Facebookページを持っていない企業なんてあるの?という勢いで作られていますね。
私もFacebookページを作った1人であります。
その時に、はまった事を書いていきます。
1、SSL通信
これをクリアしていなければFacebookユーザーからのアクセスを得る事は出来ないでしょう。
アカウント→セキュリティのページに”セキュア接続”という項目があります。
この項目はデフォルトではONになっています。ページがhttps通信が準備できていない場合、iFrame内がNot Foundになってしまいます。
2、クロスブラウザ(写真でレイアウトすると楽々)
Facebookは様々なブラウザからアクセスされます。つまり、クロスブラウザ対応する必用があるという事です。
これを単純に対応するのであれば画像を中心にレイアウトすると良いでしょう。
クロスブラウザ対応コストを下げる為にほとんどを画像で静的に仕上げているページが多々あります。
インタラクティブにするのであれば素直に対応しましょう。
3、スクロールバーを消す
iFrameの520px幅を生かしきり、スクロールの中にスクロールがあるというユーザビリティを改善するためには必須となります。
4、写真を軽量化
私はランキングページを作っていました。画像の数が少し多めになってしまいます。やはり顔写真は画質が良い物をと利用していたのですが、iFrameということで若干ロードスピードがおそいのです。
従って、画像はなるべく軽量化させましょう。Facebookページによらず画像のサイズを少しでも小さくするのはwebページを作る上での鉄則の1つです。
5、アクセス制限に気をつける
Facebookに関連したアプリではかならずAPIを使う事になります。
Graph APIを用いてデータを取得する事はご存知かと思います。1秒に1回以上のペースでアクセスすると制限されてしまうので、気をつけましょう。
6、パーミッションを正しく解放する
また、offline_accessというパーミションをあける事によってアクセストークンの有効期限がなくなるので再取得の必要がなくなります。
7、取得できるコメント、いいね、取得出来るコメント、いいね。
フィードを取得してみましょう。そうするとイイネのカウント数とデータ数が合わなかったりします。取得できるコメント、イイネにはばらつきがあるため正しい数を取得する為にはそれぞれにアクセスする必要があります。
当たり前の話ですが、ログを取っておくべきです。
コードを改変した時にパフォーマンスを測る事が出来ますし、不具合が起きているときに早急に原因を突き止める事が出来ます。
以上、1度Facebookページを作ってはまった事でした。
Facebookページ作成について、ご質問があればぜひコメント下さい。
iPhoneアプリ開発ワークショップを成功させるための3つの秘訣
techGarageTokyoの眠れる獅子、ヤマケンこと山本健太です(現在Amazonを便利に使えるツール系iPhoneアプリを鋭意開発中ですので2月上旬にリリースのお知らせができればと思っています)。
さて、わがtechGarageでは学生にとってテストシーズンまっただなかである1月のこの時期に、「一日でiPhoneアプリをつくるワークショップ」というイベントを全3回でやっていました。
今回は大学1-2年生に限定して参加者を募集したのですが、期末テストの時期にも関わらず、多くのひとにご応募いただいて、毎回満員御礼の企画になりました(参加者のかた、ありがとうございました!)。
さすがのiPhoneパワーです。
※イベントの詳細はこちら http://www.facebook.com/events/199417260147754/
さっそく本題ですが、全3回のイベントを通してやっておいてよかったと個人的に思っていることを3つ書いてみたいと思います。
1. 運営メンバーは当日つくるアプリを事前に自分でも実装してみる
まず準備についてです。これは重要です。おそらくこういった企画をする場合、講義内容をだいたい(みんな | 担当のひとで)考えたうえで、当日は誰か一人が講義をするというかたちをとることが多いと思います。もちろんそれが効率もよく、このやり方でもどこかの段階で誰かが講義の前には見本を実装してみるのは普通やります。ですが、講師だけが実装するというのはバッドノウハウです。運営メンバーは基本的に自分でも講師役のひとのコードを見て自分でも実装しておきましょう。なぜなら、当日、事前に開発環境が整っていないひとがいたり、講義に追いつけない初心者のひとがいたりするからです(時にはコピペなどでコードを切り貼りすることもあるかと思います)。ここで運営メンバーが困っているひとのコードの断片をぱっと見て、それが何をしようとしているか分からず「ごめん、ちょっとプロジェクター34行目を写してくれない?」と講師に要求するのはいまいちです。もちろん必要に応じて頼めばいいのですが(ですが大人数でのワークショップになるとそれは不可能でしょう)、円滑な進行のためにも必要最小限にしたいところです。
2. 当日は1vs.1で教える体制をつくる
つぎに当日の体制についてです。これは参加者のレベルなどによって違うかもしれません。ですが、入門的な講座の場合、できるかぎり一人の受講生に対しては一人の運営メンバーがつけるようにしたいところです。講師が注意しきれない細かな文法などを、そばにいる運営メンバーがコーディングの様子を見ながら補佐するのが理想的です。そうすることで全体の進行から遅れてしまう参加者も減ると思います。
3. フィードバックをもらえるようにする
最後にイベントを運営される際にはぜひおすすめしたい参加者からのフィードバックについてです。今回、僕たちはGoogleのアンケートフォームを利用しました。満足度、不満な点、次に受けてみたい講義など、任意の質問をすることができます。また、回答も手軽にできるので参加者のかたの負担にもなりにくく頼みやすいです。参加者同士には開示されないように設定することもできるため、本音の回答ももらいやすいのではないでしょうか。そこで得られたフィードバックはとっても参考になります。これは本当です。きっと運営メンバーが思いつかない貴重な指摘ももらえることでしょう。普通のイベントでもアンケートを取っていない場合も散見されますが、あまりにもったいないです。
※参考: アンケートフォームを作成する | Google ドキュメント http://www.appsupport.jp/docs/ques-new/
0. 興味を持ってもらえるようなイベント企画にする
大切なことを忘れていました。大前提としてFacebookのフィードなどに募集が流れてきて興味をもてる勉強会の内容にしなければなりません。今回はターゲットが大学1-2年生でしたので、例えば「3時間で学ぶHadoopハイパフォーマンスチューニング」という企画はまずいでしょう(そんなこと教えられませんしね)。大学生向けの場合、iPhoneかAndroidがベストな気がします。というのは、興味を持ってもらいやすいというのはもちろん、Webと比べても限定された範囲で教えることができるので講師もやりやすいということがあります。
■ その他Tips
ちなみに3回の参加者は、情報系の学部であったり、アルバイトの業務であったりで、JavaやPHPなどの他のプログラミング言語の経験があるひとも多かったです。つまり、「プログラミングはやったことあるけど、iPhoneの開発もしてみたいな」というひとに興味をもってもらえたようです。もちろん初心者歓迎でしたので、プログラミング未経験のかたもいらっしゃいましたが、それにしてもまったく手も付けられないような状況におちいってしまうひとはいませんでした。こういう勉強会に参加する大学生は本当に優秀なひとばかりです。もしかすると今回は開発環境を用意してもらうことを一応の条件にしていたことも影響しているかもしれません(Macの貸出も行っていましたが)。あと、ここ数年は特にMacBookAirの隆盛は著しく、大学生のMacユーザーもかなり増えているので、AndroidとiPhone、どちらをテーマにしても大丈夫だと実感しました。
■ 今回のイベントの条件
・参加者: 10人くらい
・運営メンバー: 5人~7人くらい
・場所: 表参道
・Mac貸し出しあり
・机椅子プロジェクターあり
※ちなみに今回のイベントはすべてFacebookグループ駆動開発ともいうべき進行をしていました。つまり、非公開グループを開設して、そこに参加者を招待して、参考になるソースコードを載せる用途に使うのです。これで最低限、コピペで追いつくことができます(これは"全体感"をつかむためにも有効な方法だと思います)。もう勉強会イベントはFacebookイベントで招待→Facebookグループで運営→そのままFacebook上で交流という流れは定番になりつつありますね。
■ 参考になるエントリ
企画 - Google Developer Relations Japan https://sites.google.com/site/devreljp/Home/hackathon-in-a-box/hackathon-guide/planning
★今回のイベントはtechGarageの認知度向上と興味をもってもらったひとにはメンバーになってもらいたいという目的がありました。ここの成果はまた追って、お知らせできればと思います。
文責:@ymkjp
techGarage Tokyo http://ja-jp.facebook.com/pages/TechGarage-Tokyo/303189036376398
↑techGarageの活動がいいねーと思ったかたは「いいね!」お願いします!
2012年1月26日木曜日
【techGarage福岡本格始動!】第一回勉強会レポート
いよいよtechGarage福岡が本格始動します!
福岡での初勉強会の為に、techGarage東京の松岡君が講師として来てくれました!
この福岡と東京の”つながり”が生まれたこともこの勉強会の大きな意義だと思います。
ラボに戻ると、パソコンを開き勉強会の復習を開始するメンバー。
早くこのレベルについて追いつきたいと感じました。(ちょっと引いてました。)
初めまして。techGarageTokyoの松岡です。
techGarage iPhoneアプリ開発ワークショップでも講師を務めさせて頂いております。
今回、作ったのはFacebookのフィードのクライアント。九州の方々はプログラミング経験者の方が多かったので、変数や関数に引っかかる事もなくスムーズに進む事が出来ました。
こんな勉強会が東京では頻繁に開催されていて、開発者は次々と新しい技術や知識をつけています。この事を伝える事が出来たなら今回の勉強会の意義、次の勉強会でするべき事は明確になったと思います。
そして、本番は懇親会とその後です!
懇親会では打ち解け、福岡のネタで盛り上がりました。
驚いたのが、懇親会が終わった後にラボに戻ると皆がプログラミングし始めた事。触発されて、僕も負けじと残っている作業を進めます...
会話をするなかでベースの技術力を感じました。東京ラボも負けてられません。
お互いに良い刺激を与え合える存在になっていけると確信しました!