研究留学アドベントカレンダーの謝辞・まとめ。そして今の滞在の抱負。

これは研究留学アドベントカレンダー最終日のエントリです。企画したアドベントカレンダーが素晴らしい記事で埋まり、いろいろな方に読んでもらえたようでとても嬉しいです。記事を書いていただいた方、読んでいただいた方、本当にありがとうございました。

最初に掲げた「研究留学経験を語るのは少し気恥ずかしいけど、こういうアドベントカレンダーがあれば貴重な情報が少しでもシェアされるのかなと思い企画しました」という目標もある程度達成できたのかと思います。また、すでに記事を書かれていた方も本アドベントカレンダーをきっかけに新たな側面の記事を書いてくれた場合も多く有益な情報が沢山になりました。

アドベントカレンダーの記事を読んだことにより、研究留学に興味持ったり、研究へのモチベーションが高まったりということがあったのであれば大変嬉しいことです(僕は非常に高まりました)。

少し心残りは、アドベントカレンダーの性質上、エントリの数は25が上限となっており、本当は書きたかったのに埋まっていて書けなかったという方がいたことです。こういう機会があれば普段は書かない方も書きやすくなると思うので、ぜひ別の機会ができることを望んでいます。

本当は最後に記事の索引などを付けるべきなのでしょうが、Adventar上の目次がその役割を果たすくらいに素晴らしいタイトルを皆様がつけてくれたので蛇足かと思いました。
https://adventar.org/calendars/2562

最後に改めて皆様に感謝を申し上げたいと思います。本当にありがとうございました。また会いましょう。

              • -

今回の滞在の抱負を書きました。よろしければどうぞ。
https://www.evernote.com/l/AFiFbcP4j5FOq58GFA-zDDk9_zzW7D_VVlg

山の話(首都圏から交通機関で行ける山入門編)

このブログは壁アドベントカレンダー2017の11日目のエントリです。

さて、二日前のエントリにおいて某氏が同名タイトルでやらかしていただき、私が着々と築いてきた山の話というタイトルを見れば安定して山の話が読めるという信頼を見事に崩していただきました。ただ、このような苦しい状況において淡々と地道に真面目な活動を続けることこそ真のイノベーションにつながると信じ、今回はタイトルにあるとおり、山登りに興味があるけど、どこから始めたらいいかわからないとう方のために、首都圏から公共交通機関でいける初心者でも安心の山を紹介したいと思います。


1. 高尾山

ベタベタなのですが、まずは最初に登る山として高尾山をお勧めします!なぜならば、高尾山を登ることにより自分が山登りを楽しめそうかを確認できたり、次にどこに登ろうかという目安が測れるためです。近年高尾山はチュートリアル山と呼ばれております[1]。

[1]

高尾山には頂上に行くために様々なコースがありますが、僕は断然6号路をお勧めします。もっとも人気の1号路や、展望のある稲荷山コースなどがありますが、6号路は自然豊かであり非日常感を手軽に味わうことができます。ただ、足場は舗装されていないため、せめて運動靴で行くことをお勧めします。登る時間は約60分です。

さて、最初に高尾山をお勧めする理由として、最初に登ってみて余裕だった時にそこからさらに奥に足を伸ばせることがあります。高尾山から30分奥に行けば富士山を望める一丁平があり[2]、さらに30分いけば小仏城山の山頂までいけます[3]。

[2]

[3]

さらにお勧めな理由としては、帰りに疲れたら登山電車やリフトで下山できることです。高尾山の山道で買ったお団子やアイスを食べながら、優雅にリフトで降りるのも気持ち良いと思います。

2. 大山

さてさて、高尾山を登った感じ、まだ余裕がある方には丹沢山系である大山をお勧めしたいと思います。大山は、小田急伊勢原駅からバスで20-30分程度でいくことのできる非常に人気のある山です。信仰対象の山であるため、登山口と山頂両方に神社あるパワースポットでもあります。また、バスを降りたところから登山口までを繋ぐ登山電車もあるため、体力に不安のある方は利用することをお勧めします(歩くと30分くらいです)。また、登山道のある下社から山頂までは90分くらいです。[4]


[4]

山頂からの展望はとても良く。晴れていれば江ノ島なども見えるかもしれません。神社もあるのでぜひお参りしていきましょう。また、人気の山であるため山頂には人がとても多く賑わっています[5]。売店もあるので安心ですね。


[5]

なんだかんだで今年は3回も大山に登ってしまった。

3. 陣馬山

こちらは高尾山系の山なのですが、登山口は高尾駅からバスで45分ほどの陣馬高原下から登ることになる山です。コースタイムは100分ほどですが、途中で急登がありなかなか登りごたえがある山に感じるかもしれません。さて、陣馬山といえばなんといっても山頂のオブジェが有名ですね[6]。山頂では名物の山菜そばを食べるのはいかがでしょうか。


[6]

さてさて、本エントリで高尾山と陣馬山を紹介しましたが、この間の山々を縦走するコースは非常に有名で、夏の本格的な登山シーズンに向けてのトレーニングにも利用されてます[7]。20kg越えのコースですが、脱初心者に向けて挑戦してみるのはいかがでしょうか。(ただ。この縦走コースを達成できなくても安全に十分楽しめる夏の高山は沢山あります。それは次の機会に)


[7]

4. 金時山

さて最後に紹介するのは最高の富士山を見ることができる金時山です。静岡県と神奈川県の県境にある山であるため、少し遠いですが、個人的なお勧めは朝にバスタ新宿から出ている小田急の高速バス 箱根戦を使い、登山口のある乙女峠まで行くことです。乙女峠の時点で素晴らしい富士山が待っていてくれるのですが、90分の登山道を行くとさらに圧巻な富士山を観ることができます[8]。山頂に二軒、茶屋があるのでそこで食事をしつつ、なぜ富士山が日本を象徴する山となったかを考えるのもいいかもしれません。


[8]


さて、少しでも山に興味を持っていただけたでしょうか。もし興味が湧いたならば、本エントリは拙い記憶とTwitterのみから書いた記事であるため、万全な登山計画で登山を楽しんでくださいね!それでは、ハッピー登山ライフを!

木曽駒ヶ岳と宝剣岳

何年ぶりかの日記

2013年の早々に始めた登山をゆるゆると続け3年以上が経過した。
不思議なもので当初は限られた友人たちや一人で登っていたのだが、いつの間にか月に2回程度登山の誘いが来たりするので、結構周知されたのかもしれない。何事も継続である。

そんなこんなで今回(2016/18-19)に訪れたのは木曽駒ヶ岳。こちらは2,956mと非常に標高の高い山であるが、ロープウェイが完備されているため、比較的簡単に挑戦することができる。実は昨年の10月に一度挑戦したのだが、そのときはロープウェイ駅を降りた瞬間に気温0度と強風という過酷な環境に見舞われそのままロープウェイ駅に併設してあるホテルに泊まってしまうという経験がある(このホテル自体は素晴らしかった)。翌日に木曽駒ヶ岳に挑戦したが道中や山頂で一切の展望を諦める羽目となった。

今回も新宿駅から飯田行きの高速バス乗り、駒ヶ根インターで下車し、女体入口からしらび平というロープウェイ駅に路線バスにて向かった。木曽駒ヶ岳ロープウェイは日本で最高の標高差と終着駅の高度を誇るロープウェイらしい。ほぼ1000mをたった7分で行くのでなかなかの迫力であった。

はてさて、東京から数時間でようやくロープウェイを降りるところまで来たのだが、そこで待ち構えていたのは千畳敷カールの圧倒的な長めであった。

続く

TouchOSCとoscpackで簡単にインタフェース作成

GRINDER-MANのタグチヒトシさんに教えてもらったのですが,簡単なインタフェースをスマートフォンで作りたいときはTouchOSCを使うといいらしい.

そもそもOSCというのはOpenSound Controlのことで音楽演奏情報ネットワークを通じてリアルタイムに共有するための通信プロトコルで,タグ付きの高精度数値データを通信できる.

TouchOSCはスマートフォンでOSCパケットを送信するためのインタフェースです.タップやXY座標などを送ることができるためなかなかに便利です.しかも,TouchOSC Editorによって,独自レイアウトを作成できる,

TouchOSCはApp Storeで450円で購入できます.
TouchOSC for Androidは無料なのですが,独自レイアウトの追加には対応していません.

TouchOSC: http://hexler.net/software/touchosc
TouchOSC for Android: http://hexler.net/software/touchosc-android

インタラクション分野だと結構開発したシステムを操作できるインタフェースをスマートフォンで作りたいなと思うことがあります.でも実際に作り始めてみると,結構大変で,特に通信部分ではまってしまうことがあります.

そこで,TouchOSCとOSC通信用のc++ライブラリoscpackを連携させることによって,システムにつなげられるインタフェースをつくります.

oscpackはOSCを送受信するためのC++のライブラリです.

oscpack: http://www.rossbencina.com/code/oscpack

oscpack 1.0.2をマックに導入します.

Makefileの24-25行目を以下のように書き換えます.

LIBSONAME = $(LIBNAME)
LIBFILENAME = $(LIBSONAME).1.0.2.dylib

64-68行目を以下のように書き換えます.

$(LIBFILENAME): $(LIBOBJECTS)
	@#GNU/Linux case
#	$(CXX) -shared -Wl,-soname,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc
	@#Mac OS X case
	$(CXX) -dynamiclib -Wl,-install_name,$(LIBSONAME) -o $(LIBFILENAME) $(LIBOBJECTS) -lc

79-80行目をコメントアウトします.

そしてターミナルで以下を実行します.

$ make
$ make install
$ make all

これで,インストールとサンプルのコンパイルが終了です.

次に,TouchOSC Editorで以下のようなレイアウトを作成しました.(所要時間 2-3分!!)


これを,PC側で受け取ります.

サンプルであるOscDumpを以下のように実行します.

$ bin/OscDump 8000

そして,TouchOSCを実行すると.


のように値を受け取れていることがわかります,

実際にOscDumpのソースコードを見てみると,

#include <iostream>

#include "osc/OscReceivedElements.h"
#include "osc/OscPrintReceivedElements.h"

#include "ip/UdpSocket.h"
#include "ip/PacketListener.h"


class OscDumpPacketListener : public PacketListener{
public:
	virtual void ProcessPacket( const char *data, int size, 
			const IpEndpointName& remoteEndpoint )
	{
		std::cout << osc::ReceivedPacket( data, size );
	}
};

int main(int argc, char* argv[])
{
	if( argc >= 2 && strcmp( argv[1], "-h" ) == 0 ){
        std::cout << "usage: OscDump [port]\n";
        return 0;
    }

	int port = 7000;

	if( argc >= 2 )
		port = atoi( argv[1] );

	OscDumpPacketListener listener;
    UdpListeningReceiveSocket s(
            IpEndpointName( IpEndpointName::ANY_ADDRESS, port ),
            &listener );

	std::cout << "listening for input on port " << port << "...\n";
	std::cout << "press ctrl-c to end\n";

	s.RunUntilSigInt();

	std::cout << "finishing.\n";	

    return 0;
}

となっています.
ProcessPacketによって,パケットが到達したときの処理をしているのがわかります.

自分のプログラムで数値を受け取りたい場合は,ProcessPacketをこのように変更すればstringにパケットの内容を受け取れます.

#include <iostream>
#include <sstream>

#include "osc/OscReceivedElements.h"
#include "osc/OscPrintReceivedElements.h"

#include "ip/UdpSocket.h"
#include "ip/PacketListener.h"


class OscDumpPacketListener : public PacketListener{
public:
    virtual void ProcessPacket( const char *data, int size, 
                                const IpEndpointName& remoteEndpoint )
	{
            osc::ReceivedPacket rp(data, size);

            std::ostringstream os;
            os << rp;
            std::string str = os.str();
            std::cout << str;
	}
};

これで自分のプログラムで自由にtouchOSCから情報を得て,インタフェースとして利用できます.

以上です。

Macbook Pro に Apple OpenCLをインストール

久しぶりの記事が、ブログ名と何も関係ですが。

10月24日に開催される、Shibuya.Lisp Hackathon( http://shibuya.lisp-users.org/2010/09/23/shibuyalisp-hackathon-01/ )に参加します。

ハッカソンというこで、OpenClネタにチャレンジしようと思い、普段使いのMacBook ProにAplle OpenCLをインストールしました。

Apple OpenCLSnow Leopard以降のMacでサポートされています。

インストール方法は非常に簡単です。

まずはAppleデベロッパーセンターからXcodeの最新版をダウンロードをします。

http://developer.apple.com/technologies/xcode.html

Unix Dev Supportにチェックしてインストールすれば完了です。

サンプルは、フィックスターズさんの出しているOpenCLコンパイラFOXC (Fixstars OpenCL Cross Compiler)のソースにあるものを使いました。
( FOXCのインストールについてはpodhmoさんの http://d.hatena.ne.jp/podhmo/20101023/1287841397 を参照してください )

http://www.fixstars.com/foxc/download.html

からダウンロードします。

後は、

$ cd path-to-foxc/foxc/share/foxc/sample/hello
$ g++ -o hello hello.cpp -framework opencl
$ ./hello
Hello, World!
$ cd ../dataParallel
$ g++ dataParallel.cpp -framework opencl
$ ./a.out 
   2.00   -3.00   27.00    0.31 
   7.00    0.00   70.00    0.57 
  12.00    3.00  121.00    0.80 
  17.00    6.00  180.00    1.00 

という感じでサンプルを実行できます。

コンパイル時に、 "-framework opencl" を指定するだけです。

CUDAをLinuxに入れたときの苦労はどこに行った言いたくなりました;

以上です。