音楽とお酒とものづくりと

営業マンが元webエンジニアの経験を生かしてあれやこれやするやつ

macにanyenvを導入してみた

anyenvとは?

perlrubypythonなどのバージョンを管理するplenvやrbenv、pyenvなどを一括で管理してくれます。これらを別々に管理していた場合、それぞれのパスの設定を行う必要があり.bash_profileが煩雑になります。それがanyenvで一元化して管理しているとanyenvへのパスだけ通してやればよいっぽいです。どうせ複数のenvで管理することになるなら、anyenvを使って一元化管理しようということで。情報の一元化はいろんな手間軽減につながりますからね。

既にインストールしていたenv系のアンインストール

すでにhomebrewを使ってインストールしているものがありました。これとanyenvでインストールしたものとが複数存在すると後々ややこしそう(実際この前ややこしかった)なので、アンインストールしておきます。なおbrewでインストールしたenvではほとんど管理しているものがなかったので、移植作業等は一切行わず、そのまま削除しました。既に結構システムのenvで色々管理している場合には注意が必要かも。

$ brew uninstall plenv
$ brew uninstall perl-build

同時に.plenvなどの設定ファイルも削除しておきました。

anyenvのインストール

いよいよanyenvの導入です。
githubからcloneしてきます。

$  git clone https://github.com/riywo/anyenv ~/.anyenv

.bash_profileに以下のパス設定を追加

$ echo ‘export PATH=“$HOME/.anyenv/bin:$PATH”’ >> ~/.bash_profile
$ echo ‘eval “$(anyenv init -)”’ >> .bash_profile

これでanyenvのインストールが完了しました。

各種インストール

plenvのインストール

$ anyenv install plenv

perlのインストール

plenv install 5.23.0

そもそもenvって何してくれんねん

システムにインストールされているperl等だと、アップデートした際に全てのプロダクトに影響が起こりえます(バージョンアップしたら動かんくなった!他のモジュールとの互換性がなくなった!など)。この時、プロダクトごとに使用するバージョンを固定し管理することで、こういった問題を防いでくれます。
研究で作っていたプロダクトは長期運用のつもりはなかった(こんなん言うたら教授に怒られそう)ので、特に気にせず使っていましたが、実際の開発現場では当たり前に使われています。調べれば似たような記事やもっと詳しい記事がたくさんありますが、備忘録のため、まとめておきます。

話を戻しましょう。
例えば、基本的にはこのバージョンを使いたい!というものは

$ plenv global 5.23.0

とするとOK。

逆にこのディレクトリ以下では5.21.0が使いたい!という時には、そのディレクトリで

$ plenv local 5.21.0

とすればOK。

ruby+sinatraで作成したwebアプリへの外部からのアクセス方法

久しぶりの更新ですね(ちゃんと生きてます
今回はweb初心者がrubyの起動に関するところで勉強したことをひとつ.

はじめに

webアプリをサーバで動かし,そこに他のマシンからアクセスできるようにするためには,自分でイチからサーバ構築する必要があるのかと思っていました.
しかし,WEBrickを使えばそんな必要はなさげです.

webrickとは

Weblioより引用www.weblio.jp

はい,わざわざ自分で構築する必要がなくなります.
どうやら最近のバージョンでは,rubyインストール時にくっついてきてくれるようです.

当然,実際に運用するためにはきちんと構築する必要がありそうですが,今回みたいに実験的にちょこちょこっと使いたい,みたいな用途に対しては非常に便利ですね.

アプリの起動

では,実際に起動してみます.

ruby filename.rb

これでwebアプリを起動することができます.
しかし,このままではlocalhostからのアクセスしか受け付けません.
そこで,実行環境とホストのIPアドレス,ポート番号を指定してやります.

ruby filename.rb -e production -o IPAddress -p port

eで実行環境を選択することができます
developmentは開発環境として,productionは本番環境として起動してくれます.

oでホストのIPアドレスを,pでポート番号を指定することができます.
今回はrubyプログラムを実行するマシンのIPアドレスを固定し,そのアドレスを指定しました.

これで無事に動いてくれます.
次に他のマシンからサーバに対してのアクセスを試みます.

他のマシンからのアクセス

IPアドレス:ポート番号/filename

ブラウザから,指定したIPアドレスとポート番号を入力し,表示させたいページを指定すればOK
localhostの場合だと,localhost:4567/indexという具合ですね.

これで他のマシンからもアクセスが可能になります.

参考

参考にさせていただいた記事はこちらhamuhamuengineer.blogspot.jp

大学生限定の無料カフェに行ってきた!

久々の更新です.
今回は知るカフェというカフェに行ってきたので,それについて.

知るカフェとは?

shirucafe.com

大学生限定のカフェで,
・ドリンク無料
Wi-Fi使用可
・コンセントあり
・持ち込みOK
・ミーティング利用可
とまあなかなかに最強なカフェです.

企業がスポンサーについており,そのおかげでタダでコーヒーとかが飲める仕組みだそう.
そうして学生を集め,企業側はインターン募集や就職(?)相談会的なものなど,様々なイベントを開催している様子.
もちろん全学年対象のイベントも多くあり,話を聞いてみると,どのイベントもかなり人気らしく,いつも募集定員いっぱいになるくらいの人が来ているそうです.


ちなみに今回は同志社前店に行ってきました.
f:id:takaaki_z:20151014214043j:plain

使い方


はじめに一度だけ,会員登録を行います.
それ以降は学生証の提示のみでOKのようです.


一瞬,同志社前店は同志社生限定かと思いましたが,登録フォームには自分の所属大学を選択する欄があったので,大学生ならどこの大学でも大丈夫っぽいです.
#もちろん,大学の選択肢の欄にウチの大学は載っていませんでしたが.

使ってみて


かなり,いい感じです.
まだオープンしてすぐということで店内もキレイですし,何よりWi-Fiとコンセントとフリードリンクのコンボが最強です.Wi-Fiがすこし重いのだけはネックですが,作業空間としてはかなりイケてると思いました.


ドリンクは今回,ホットコーヒーを頼みました.
よくある喫茶店で出てくるカップみたいなものを想像していたのですが,それの2倍くらいは入るであろうマグカップで出てきて,さすがにびっくりしました.


空きコマなどの時間つぶしで来る学生も多いようですが,一人で作業をしに来ている学生も多く,比較的静かな環境でした.
また店員さんの愛想も良く,非常に満足度の高いカフェでした.


とまあなかなかに最強なカフェでしたが,研究室の環境はもっと最強なので,ボクにとっては,わざわざココに来て作業する必要はないかなあという感じ.
逆に,もし自分が研究室配属される前だったら,入り浸っていたと思います.


しかし,大学からの帰り道に寄っていける場所にあるので,気分を変えて作業をしたい時など,ちょくちょく行こうと思います.

立命館大学前店が!

できるそうです.これはもっと早くにできていて欲しかったですね.shirucafe.com

京都開催のエンジニア×デザイナー×プランナーMeet upイベントに参加してきた!

先日,京都で行われたエンジニア×デザイナー×プランナーのMeet upイベントに参加してきました.

最近Twitterでいろんな方とつながることが多いのですが,今回のイベントも,Twitterでフォローしていただいた方のご紹介で参加させていただくことになりました.

主催

主催はデルタクロス京都さんdeltacross.net

f:id:takaaki_z:20150814210353j:plain
関西の学生を対象に,東京企業のリモートインターンシップ支援を行なっている学生団体さんです.
他にも日々,様々なイベントが開催されているようです.

行ってみて思ったこと

参加者それぞれが,自分のフィールドでしっかりアウトプットを出しているのがすごい,と思いました.
しかも2,3回生の段階で.


ボクがそれくらいの頃といえば,せいぜい演習授業で作ったソフトウェアがアウトプットに一番近いモノでした.
あの頃はとりあえずサークルして,バイトして,飲んで遊んで,という感じですっちゃかめっちゃかでしたからね・・・
でも一応授業もきちんとでてましたし,実験や演習も真面目にやってましたが,それ以上,はなかったです.
なので単純に,すごいな,と思いました.


そういう意味では,大学院へ進学したのは大きかったと思います.
ものづくりの面白さや難しさなどいろいろなことを学べました.
特に,日々の研究活動やデザイン学専攻の学生と一緒に行うインデザプロジェクトなどでエンジニアとしての考えが大きく変わったのはデカイです.
まあまだこれをいうのは少し早い気もしますが,この研究室を選んでよかったなあと思いました.


なんかイベントの話から脱線してしまいましたね.


そんなこんなで,たくさんの方とお話しさせていただきました.
参加されていたのは京府医大学院,立命同志社の方や,これまであまり絡んだことのない清華大やHAL大阪の方など.
特にデザイナーの方が多く参加していたようです.

f:id:takaaki_z:20150814210323j:plain


割と最後まで残っていたのですが,最後まで一緒に喋っていた運営のお二人とは,今度お酒でも飲みながらいろいろ喋ってみたいなあと思いました.是非飲みに行きませんか?笑

せっかく京都でこういったつながりを作ることができたので,これっきりにならないよう,大事にしていきたいと思います.


最後に,全体の写真を一枚.
f:id:takaaki_z:20150814210343j:plain



あ,あと,こういうときにポートフォリオがあるとすごい便利ですね.
エンジニアの場合はGitHubとかがそれに近いと思いますが,割とプロダクトっぽいアウトプットが多いので,学会発表が終わってから一回まとめてみようかなあ・・・

yahoo×朝日放送×京都工芸繊維大学共催の1dayアイデアソンに参加してきた

こんばんは.
国際発表のための論文を提出しホッとしていたのもつかの間,発表が1ヶ月前に迫ってきており非常に焦っています.
焦ってはいるんですが,先日,1dayアイデアソンに参加してきました.

イデアソンとは

特定のテーマについてグループ単位でアイデアを出し合い、それをまとめていく形式のイベント。アイデア(Idea)とマラソン(Marathon) を合わせた造語で、2000年代に米国で使われ始めたと言われている。特定のテーマに興味と知識を持ったITエンジニアやデザイナーらが集まってグループごとにソフトウェアを開発・改良し、その完成度を競うイベント「ハッカソン」(Hackathon:ハッキングの Hackと Marathon を合わせた造語)の事前ミーティングとして開催される場合が多い。(コトバンクより引用)

イベント当日

今回のテーマは「京都×観光」
サブテーマとして人やモノ,場所というワードが挙げられていました.
f:id:takaaki_z:20150731232358j:plain

今回の参加者は情報工学やデザイン経営などの学生が多かったようです.



一緒に活動するチームのビルディングは,当日の様々なワーク後に行われました.
何回かのブレストの後,参加者全員がそれぞれテーマに沿った何かしらのアイデアをスケッチにまとめ,
そのアイデアに共感した人たちが一緒のグループとしてアイデアのブラッシュアップを行う,といった流れでした.



ボクは京都の小路や路地といった,大通りでない通りには魅力的なお店がいっぱいあると思ってます.
例えば,富小路麩屋町,六角などの通りを歩いていると,こんなイイお店あったんや!と京都人でさえも思うくらい”隠れスポット”があります.


今回はこの考えに共感してくれた人たちと一緒にアイデアのブラッシュアップを行いました.



3時間というホンマに限られた時間の中でのワークという事で,かなり大変でした.
が,結果としてKIT賞(yahoo賞,ABC賞,KIT賞の3つが用意されていた)をいただく事ができました.
f:id:takaaki_z:20150731232440j:plain

チームメンバの皆様,ホントにありがとうございました!


感想

今回,ハッカソンとかアイデアソン系に初めて参加したのですが,非常に楽しかったです.
普段の研究や,デザインの学生と一緒に組んでいるものづくりプロジェクトなどでも同じようにアイデアを詰めていくのですが,いかんせん制限時間が短い.その時間の中でどうやって発表できるレベルにまで仕上げていくか,そういった主にファシリテートの部分で知見が得られたと思います.
で,アイデアがでてくると実際に作りたくなりますね!
今回のやつはスマホのネイティブアプリとして実装するのがベストでしょうが,自分の弱みの克服を目的としてwebアプリとして作ってみようかなと思います.

xcode7 + Swift2によるCoreDataを用いたデータベース利用の際にハマったこと

今回,CoreDataによるデータベースの利用にあたって,以下のサイトが非常に参考になりました.
http://qiita.com/watanave/items/4da9f4bc97247f780af8
基本的には上記のとおり進めていくと問題ありませんでした.


ただし,最後の最後にエラーが出てしまいました.
エラー内容は以下のとおり

CoreData: warning: Unable to load class named ‘(プロジェクト名).(モデルクラス名)’ for entity ‘(モデルクラス名)’. Class not found, using default NSManagedObject instead.


調べてみると,以下のように似たようなエラーの解決策をまとめた日本語の記事がいくつかありましたが,これでは解決しませんでした.
http://qiita.com/hanoopy/items/765d29f83a99eef6b49b


そこでもう少し調べてみると以下の記事に回答が載っていました.
http://telliott.io/node/1305/


解決方法は以下のとおりです(英語ですが,リンク先に画像が載っています).

Navigator Areaより,(プロジェクト名).xcdatamodeldファイルをクリックし,
CONFIGURATIONSのDefaultを選択.
すると定義したエンティティモデルが表示されます.
そのエンティティモデルのClassの部分を(モデルクラス名)に変更するとエラーがなくなりました.


先ほどの日本語記事での解決方法で設定を変更してしまったからか,
Classが.(プロジェクト名)(モデルクラス名)
となっていたため,うまく読み込むことができなかったようです.
デフォルトでは.(モデルクラス名)となってしまい,エラーが出ているよう.


リンク先の英語記事によるとxcode7がまだベータ版であることにより起こっているっぽいです(ホンマかどうかは知らない).


あと,一番最初に紹介しました記事のままだとswift2ではいくつかの文法エラーが出てしまいます.(asによる型変換やif let構文など)
まだoptional型などの扱いに関して理解しきれていないので,もう少し勉強し,またここに理解した分を載せられればと思います.

超交流会2015に参加してきた

京都大学で行われた超交流会2015www.johogaku.net
に参加してきました!

10:00の朝一番からガッツリいってきた!

オープニングトーク

毎年行われているこのイベント,去年までは参加費がかかっていたそう.
でも今年からは学生は無料になったとか.
あと参加者は学生ばっかりなんかなーと思ってたけど,社会人の方が多いみたい.
採用活動で来ている企業の方や,トークセッションを聞きに来ている方,プロジェクトのメンバーを探しに来ている方など目的はさまざまだったようです.

#こんなことならスピーチしたりブース出したりで,自身のプロジェクトの宣伝とかしたらよかった.一番の後悔.

トークセッション

何個か聞いてきたんですが,ARやVRに関するトークセッションが一番面白かったです.
今,たくさんのVR系ガジェットが出てきていますが,それらがビジネスとして世の中に入り込んでくる時代はいつくるのか.VRのサービスにブレイクスルーをもたらすものは何か.
といった内容で聞きごたえがありました(途中からしか聞いてないのですが笑).
あとウェアラブルガジェットのMoffのデモも見れました.こういったIoTに関する話も面白かったです.

ブース

また個人や企業の方がブースを開き,それぞれの目的のための活動をしておられました.
たくさんの戦利品をゲットしましたが,その中でも特によかったのがiTunesカードと書道家の方によるインスピレーション文字.
あとビールやらソフトドリンクやら食べ物が飲み食べ放題なのもよかったですね.なんという大盤振る舞い.
いろんな方との出会いもあり,参加してよかったなと思います(こういうイベントに参加すると,名刺用意しなあかんなあとつくづく思う).

インターンの募集に来ている企業が結構たくさんいたので,M1も連れていくべきやったかなあ・・・