データ分析エンジニアのブログ

日常のことからプログラミングや機械学習まで@六本木

AppliCareのエンジニア向けセミナーに行ってきた

昨日、医療系アプリ開発コンテストを主催する
AppliCareという団体のエンジニア向けセミナーに行ってきました。


セミナーの内容はさておき、
AppliCareという団体とそのコンテストについて今日は書きたいと思います。


AppliCareという団体はテクノロジーを用いて医療の課題を解決するという趣旨で
およそ2ヶ月間に及ぶ学生のアプリ開発コンテストを開催しています。
去年から始まったコンテストで、今年も去年と同じく7月〜8月開催予定のようです。


週1回ほどの全体セミナーや病院訪問など、さまざまなイベントが主催されるそうです。
開発はチーム開発で、医学、ビジネス、エンジニア、デザイナーという
各専門領域を持つメンバーがチームを組んで行います。
いろいろな専門分野を持つ学生と繋がれることが本当にいいなと感じました。


f:id:ishitsukajun:20140413214740j:plain
→ロゴはこんな感じです。


単純にアプリを創るというだけでもエンジニアには魅力的なコンテストだと思いますが、
それ以上に広い人脈と視点が得られることが素晴らしいと思いました。
例えば医学生と出会う機会はかなり貴重ですし、
セミナーでもアプリやWebサービスを創るときに
ユニバーサルデザインや色合いにかなり注意を払っているということを聞き、
今までの自分の視点が狭かったなと実感してしまいました。


なので学生の皆さんには、ぜひ参加してみて欲しいコンテストだと思います!

ビッグデータの正体

結構前から話題になっていて、ずっと読みたいなと思っていた本。


研究でそれっぽいことをやるので、まず技術を学ぶより、
外観をざっとつかんだ方が良いと思い購入してみました。


まず一言感想を述べるとやっぱり読んでよかった。
この本では、ビッグデータ思考とも言われる、
ビッグデータに対する考え方について大きな割合が割かれていて
研究などを始めるに当たって、必要な視点が得られたと思う。


また今まで大学で学んでいた標本抽出などの統計の知識が、
これからは不要になる、と書かれていてこれにはかなり衝撃を受けました。笑
じゃあ、いままで自分たちが学んでいたのはなんだったのかと、、、


前述したように、難しい話は書かれておらず、ビッグデータに対する考え方や
これからのビッグデータとの付き合い方について言及している本なので、
専門的な知識を持っていないような人にもオススメできる一冊です。

はてなブログでソースコードを貼り付ける方法

他の人のはてなブログを見ているとソースコードが色付きの四角で
囲まれているのをよく見ますよね。
↓こんな感じで

public function echo1() {
    echo 1;
}

今まではあれどうやるんだろ、と思いつつもスルーしてたのですが
方法を調べてみました。


やることは簡単で大きく分けて2つです。

これだけでソースコードがずっと書きやすくなります。
はてな記法は他にも便利なものがいくつかあったので、
これからも積極的に使っていきたいと思います。

FQLでfacebookのGraphApiを高速化

現在PHPのFacebookSDKを使ってGraphApiを叩く、

みたいなサービスを作っています。

 

そこでイベントのIDからイベントの参加者を取得したい、と思ったのですが

FQLを使わずにFacebookオブジェクトのapiメソッドを使うと

クエリは2個に分けないといけないしで少し重くなってしまいました。

 

どうしようかなと悩んでいたところ、こんな記事を発見!

http://www.813.co.jp/live/view/lid/13

 

このmultiqueryを使えば、一気に複数のクエリを実行できるみたいです。

FQLではjoin句は使えないものの、in句は使えるので

一個目のクエリの結果を二個目のクエリに反映させることも可能です。

僕のサイトだと実行速度が十倍とかのレベルで早くなりました笑

FacebookAPIは前々から重いなーと思っていたので、かなり助かりました。

 

欠点はPOST系の処理はできないようなので

その辺の処理はapiメソッドで対応するしかないところですかね。

vimの設定をしてみる

Linuxなどのサーバーに触っている人なら
日常的にvimを使っていると思いますが、
なかなか初心者には使っている人があまりいないようで
僕の周りではSublimeやDWを使っている人が多いです。
(僕の周りにフロント系の人が多いというのも原因だと思いますが、、)

そういった人にもvimを使ってもらいたいという意味も込めて
今回の設定について記事を書いてみました。

1. vimに色をつける
vimに色を付けるにはvimを立ち上げたときに、
    :syntax on
と打ちこめば、vimが勝手に色付けしてくれます。
(:syntax off で色付けを解除)

2. 行数を表示する
vimには移動コマンド(:行数)で指定した行数に素早く移動できるので、
行数が表示されていると便利です。
また以前使用していたエディタに行数が表示されていて、
vimでも表示したいという人も多いと思います。
こちらもvimが立ち上がったときに、
    :set number
と入力すれば、行数が表示されます。
(:set nonumber で行数を非表示)

3. 設定を保存する
今までの設定では、いったんvimを終了すると設定が消えてしまいます。
これを終了しても持続させるには、
自分のホームにある、.vimrcを編集すればOKです。
    vim ~/.vimrc
(ファイルが存在しない場合は、勝手に作っちゃって大丈夫です)
そこに今まで直接入力していた、
    :syntax on
    :set number
と書き込んで保存すれば終了です。

さらに詳細な設定をしたい!
という方はこちら記事を参考にしてみてください。
http://www.atmarkit.co.jp/ait/articles/1107/21/news115.html

PHPでメンバー変数にオブジェクトを持たせる場合のアクセス権

クラスのメンバー変数に外部のオブジェクトを持たせたい場合、
他のクラスから参照して書き換えられるように、
public変数にしなければならないみたいです。

当たり前のことですが、今日ここで割と時間とられました。

コードの一例...

class FacebookApi {
    public $facebook;

    function __construct(){
        $this->facebook = new Facebook(array(
            'appId' => 'xxxxxxxxxxxxxxxxxx',
            'secret' => 'xxxxxxxxxxxxxxxxxx',
        ));
    }
}

PHPコンストラクタが__construct()を使わないとダメというのも知らず、
function FacebookApi()としていて上手く動作していませんでした。
PHP5からは使えないみたいです。

Framework使わないで書いてみると
なにかといろんな発見があると気づいた一日でした。

幅優先探索で迷路を解いてみた

こんにちは。
今までCheckiOを順調に進めてきたのですが、笑
かなりつまづいた問題があったのでその問題について書きます。

※ ネタバレを含みますのでご注意ください。

まず迷路を解くのにもいろいろな方法があります。
一般的には深さ優先探索幅優先探索が有名ですが、
それ以外にも様々な方法がありました。
参考URL: http://spheresofa.net/blog/?p=1044

CheckiOの中のヒントでも、幅優先探索が一番手軽だよみたいなことを
言っていたので、今回は幅優先探索でやってみることにしました。

アルゴリズムやプログラムについては、そこまで触れずに
自分のハマったところについて書いていきます。

1.  アルゴリズムは理解できたが、どうやって経路を最終的に出すのかわからない

基本的なアルゴリズムはすぐにわかったのですが、
どうやってスタートとゴールの経路を出すのかがあまりピンときませんでした。
ネットに落ちているプログラムを見てみると、
親要素を持たせて、それをたどっていけばいいだけでした。

2.  QueueモジュールがimportErrorになる

これでかなり時間が取られました。
調べてみるとPython2とPython3でQueueモジュールの名前が変わっていました。
これで解決かと思いきや、CheckiOではQueueモジュールは
サポートされていないとのことでした。
最終的にはcollections.dequeを使いました。

これがgithubにコミットした今回のプログラムです。
https://github.com/junishitsuka/python/blob/master/bfs_maze.py

クラスとか使えばもっとスッキリ書けるんだろうなと思いつつ、
Pythonの勉強がそこまでいっていませんでした。

時間があれば深さ優先探索の方もやりたいですね!