第51回情報科学若手の会を運営して参加してきた #wakate2018
表題の通りです。
10/6-8に軽井沢研修所というところで行われた第51回情報科学若手の会というイベントに幹事として参加しました。幹事なので運営もしているという感じですね。
幹事って何をしているの?とか若手の会のお金周りってどうなっているの?みたいな雰囲気だと、今回代表幹事を務めた @kuro_m88 さんが記事にまとめているのでそちらを見ると良さそうです。
幹事としては初めてなんですが、これまで学部3、4年、社会人1年目と3年続けて参加してきたのでこれで4年目4回目の参加という感じです。
セッションについて
上の @kuro_m88 さんの記事にも言及されている通り、情報科学若手の会においては幹事も参加者です。僕はカメラマンの真似事をしたりしながらだったのですが幹事もみんなセッションをずっと聞いていました。 僕情報科学若手の会というと、毎年アカデミックな方面で多方面に深い話題を話してくださる方が多いので、ネイティブアプリ開発一辺倒な僕としては首を縦に振りながら「こういう世界もあるんか…」みたいな感想を抱くことがほとんどという感じで、毎年同じことを言っている気がするのですがいろんな刺激を受けることができたなぁと思っています。
今回のセッションを大まかに分けると
という感じで、その中でも参加者の多数に「僕も私もデータセンターがほしい」と言わせた招待講演のコンテナデータセンターのお話がすごく盛り上がっていた印象があります。自身でデータセンターみたいな大きな設備を作り上げる過程がすごく夢(?)のあるお話でした。
僕個人としては高校生の方が二人発表されていて、結果としてはともかく抱えた課題を解決するためにWebサービスをDjangoで書いてたり、課題研究的な名目でIoTなことをされていてすごくものづくりにトライすることへのハードルが下がっていていいなぁ…と思ってました。高校生の時期からものづくり・プロトタイピングにチャレンジできるってすごく経験値としては貴重なものだと考えているので羨ましい限りでした。
毎年「来年は発表しよう」と意気込んでいるのですが、幹事と化したことで忙しさ++って状態になってしまい、特になにか思いつくこともなく…って感じでしたね。来年はなにか用意できるといいなぁって思う程度にしておきます。
交流イベントについて
今年はやる側ではなくやらせる(?)側になったのですが、今年のお題はnanoblockをチームで組み立ててドゥンする感じのアレでした。本当はnanoblockを組んでいる人は目隠しをする予定だったのですが、僕が目隠しをしたときに何もできなくなってすぐ諦めた経緯があります。本当に無理でしたね…。 テストプレイではnanoblockの説明書を見て指示側が言語化をする画像要約的ななにかと組む側が指示側の発言をなんとなく察していく機械学習的ななにかがあって面白かったのですが、皆さんめちゃくちゃ集中されていて茶々を入れる隙もなくてすごかったです。
ちなみに終盤の悲鳴を上げたチームの「単体テストは完璧なのに結合テストが通らない!!」が今回最大の名言だと思いました。nanoblockは開発プロジェクトなのではないかという一説を投じる素晴らしい言葉ではないでしょうか(?)
なんで若手の会に参加し続けているの?
この会に何を求めているのか、みたいな話なんですが、カンファレンスとか勉強会に参加するモチベーションと似ているような違うような、そんなよくわからない気持ちです。 カンファレンスや勉強会だと自分が専攻している・メインに扱っている分野の知見を深めたり、広めたりするようなモチベーションなのかなぁと僕個人のモチベーションとしてはあるのですが、こと情報科学若手の会においてはターゲットが「情報科学」という広い上にがっさりとしたテーマなので、それこそ本当に前述したようないろんな分野の人が来て、いろんなことを話しているんですよね。その中で「何も知らないことを知る」という無知の知を得て、もしその中で興味が生まれるようなことがあれば自分で深く調べてみたりとか、そういうきっかけになるといいなぁと参加しています。大体この会で発表してくださる人ってその分野のことを楽しそうに話されるのでそういう意味ではすごくいい刺激がもらえるなぁ、と思っています。
あとは僕を最初に若手の会に引き込んだ人が「人生をいい意味で狂わされた」と言っていたのですが、いろんな界隈のいろんなバックエンドの方が(お酒飲んで)ワイワイしているので色んなお話や相談ができてすごい、みたいな感じです。ゲラゲラ笑ってるだけかもしれないしすごく真面目に話し合ってたり、進路相談していたり。まさに今の開催理念に掲げている「ルイーダの酒場」な感じがしていていいなぁと思いました。なので来年も頑張っていくぞい、みたいな気持ちです。
初幹事だったけど
初幹事ということで5月に下見に行ったり、準備としてタスクが増えたり、いろいろイベントは増えたんですが当日はほぼ参加者みたいなノリで楽しめたなぁと思っています。閉会後も残ってた幹事で軽井沢ぶらついてビール飲んだり温泉入ったり霧の軽井沢駅でモカソフト食べたりしてました。 初めてだったのでよくわからないところは割とぽいっとしちゃって、できることだけをやってフォローに回ったりしてたんですが、多少慣れたはずなのでもうちょっと自分がテキパキ動けるようになるといいですね。はい。
今年は技術書典5と開催日がダブってしまった都合で、毎年いらっしゃってくれていた方々が来れなくなってしまったのが心残りでした…。来年はしっかりイベントスケジュールを立てていきたいですね。
おまけ
軽井沢の写真のせるマンになります。担々麺とビールめっちゃうまかった(感想)







写真を自動でアップロードする技術 〜Google Photos API編〜
アブストラクト
2018年のGoogle I/O直前にて公開されたGoogle Photos APIを使って一眼レフカメラで撮った写真をよしなに自動でアップロードするための手法録になります。
高専カンファレンスで大慌てで話していた発表を丁寧に焼き直そうとした感じになっています。
本記事ではGoogle Photos APIについてまとめます。スライド中で触れられている他の要素については別記事にて…。
Google Photos API
Google Photos APIs | Google Developers
我々(主語拡大)は君をずっと待っていた。
これまで名前だけになってしまったPicasa APIを使ってGoogle Photosへの画像アップロード(容量無制限無制限・16MPへの画像縮小制約あり)ができる環境はあったが、Google Photosにオリジナルサイズの画像の投稿が可能になったGoogle Photos APIがついにロンチされました。
トップページから入れるガイドページの概要を見る限りがっさりとした仕様では
- OAuth 2.0による認証
- Library
- ユーザのGoogle Photosアカウントに保存されるメディアについての操作ができるぞ!
- Albums
- ほかユーザと共有するためのアルバムに関する操作ができるぞ!
- Media Items
- Google Photosにおけるメディア(画像、動画)についての操作ができるぞ!
- 写真のアップロード自体はここに含まれる
- Share
- 自アカウントのメディアを他の人に共有するぞ!
と普通にGoogle Photosを使っている上での通り一遍の操作はできそうな印象があります。
というわけで今回は特に僕が達成したい「画像のGoogle Photos上へのアップロード」について記していきましょう。
というわけで本題。
Google Photos APIを使えるようにする。
いつものMaps等のGoogle APIsを使えるようにするプロセスとほぼ一緒ですね。まず、Google Cloud PlatformのコンソールからAPIの有効化を選び、API ライブラリ上でPhotos Library APIを検索すると、お目当てのPhotos Library APIが出てくるので有効化します。

有効化した後に「APIとサービス」のページに移動し、左ペインの認証情報を選んでから新規の認証情報としてOAuthクライアントIDを選択して作ればGoogle Cloud Platformのコンソールでの準備はOKです。僕は今回はAndroid(Android Things)からアップロードを試みていたので、この中でdebug.keystoreのようなkeystoreファイルのSHA1キーやApplication IDを入れたりしています。

Google Photos APIに画像を投稿してみる。
Google Photos API( https://photoslibrary.googleapis.com )における画像投稿は以下のようなシーケンスになっています。
- クライアントからGoogle Photos APIの
POST /v1/uploadsに対して画像をapplication/octet-streamで送信する - Google Photos APIからレスポンスとしてアップロードトークンが返却される
- 返却されたアップロードトークンを含めてGoogle Photos APIの
POST /v1/mediaItems:batchCreateにJSONを送信する - Google Photos APIから送信したJSONにGoogle Photos API内での情報が追加されレスポンスとして返却される = アップロード完了
ひとつずつ追っていきましょう。
1. 画像データの送信
なんてことはなく、/v1/uploads に以下の内容のPOSTリクエストを送るだけです。
<Header> Authorization: Bearer <Token> Content-Type: application/octet-stream X-Goog-Upload-File-Name: <ファイル名> <Body> 画像のバイナリ
POSTが成功すると次のようなレスポンスが特に何かに包まれてるわけでもなく返却されます。この返却されている文字列がアップロードトークンになります。
CAIS6QIApKFirX.....
2. メディアアイテムを登録する
/v1/mediaItems:batchCreate に先程手に入れたアップロードトークンを含めた次のjsonをbodyにしてPOSTリクエストを送ります。
<Header>
Authorization: Bearer <Token>
Content-Type: application/json
<Body>
{“newMediaItems”:[
{
“simpleMediaItem":{
“uploadToken":"CAIS6QIApKFirX....."
}
}
]}
POSTが成功すると送ったjsonのパラメータにメタデータ等が肉付けされる感じで返却されます。この時点でGoogle Photosを確認するとアップロードされた写真が登録されているのが確認できます。

これで写真の投稿は完了です。この辺に関してはカメラで撮った写真とかに全く関係がないので写真によらない要素でも使えそうな気がします。アルバムとかの操作もできるのですが、それはまた別の機会に…。
高専カンファレンス in 東京 2018に参加してきた #kosenconf
久々にブログ更新するよ
高専カンファレンス in 東京 2018に参加してきた
そもそも高専カンファレンスとは一体
高専生が現役・OBOG問わずいっぱい集まってきて自分の好きなことややっていることをえげつない熱量を以てお話するカンファレンスです。
今回はスポンサーにもなっている DMM.com さんの六本木のオフィスをお借りして開催されてました。オサレオフィスって感じでした。
他にもスポンサーとして Cookpad さん、 jig.jp さん、英和システムマネジメントさんとかが名を連ねていました。すごい。
ちなみに開催日自体は先週の日曜なのでもう2週間が経過しているなどしています。ブログを書くまでが高専カンファレンスとは一体何だったのか。
一体何をしてきたの
そそのかされ(?)一般発表枠に応募してみたら選考に通ってしまったので登壇してきました。その時のスライドはこちら。
Google Photos APIとFlashAirを使ってカメラで撮った写真をアップロードする話をしました。いろいろと日常生活が大変すぎた結果1日で話す内容を作り上げたのでまた整理してちゃんとブログの記事なりにまとめる感じでやっていきます。ちなみにAndroidアプリとしてはある程度実装が終わっているのですが、スライド中にもある通りスマホアプリとしてすら起動したくなくて、とするとAndroid Thingsを使ってFlashAirのGPIOと合わせながらよしなにする、みたいなプランを持っているのですがAndroid Thingsにするに当たって「そもそもGoogle OAuthってできるんだっけこれ…?」みたいなのがあり、検証しようにも実際に行動になかなか移せていない感じです。時間確保してぇ…。
あとはなぜか説得感が欲しかったためにSony α7IIとPENTAX K-S2をずっと持っていました。重い。
今更気づいたんですけどSpeakerDeckって4:3のスライドはなんか妙な表示になるんですね…、次からは16:9で作ろう。
途中のスライドで(勝手に)友情出演してもらった @puhitaku の走るルータが一番のターニングポイントでした。keynoteで作ったんだしアニメーションでそのままどこかへ走って行けばよかったかな
ちなみに公式サイトからスケジュールの午前に並んでいる発表タイトルのスクリーンショットはこちら。

周りが真面目すぎる。一体何でこんなラノベみたいなタイトルで通過したのか…。
微妙にお手伝いもしていました。
そんなこんなで前日はほぼ徹夜みたいな雰囲気が入っていたのでんぼーっとスライドを書いていたのですが、 kosen10s のslackに運営に入っていた @puhitaku からDMが飛んできたりしていて
puhitaku「当日スタッフしてくんない?」 ぼく「ええで」 puhitaku「あざす!09:00にきて!」 ぼく「ええで」
みたいな感じだったのですがその二時間後くらいにまた運営に入っていた @pndcat から同じようにDMが飛んできて
pndcat「09:00に来てくれるんだって!?」 ぼく「あい」 pndcat「08:30に変更な!仕事も変更!」 ぼく「…?」
という感じで凄くあっという間に集合時間を繰り上げられました。こわい。
運営さん本当に大変そうだったのでお疲れ様でした。ありがとうございました。以外の言葉がありませんね…。
久々に高専カンファレンスに行って思うこと
エモい話をするわけじゃないですが、高専カンファレンスってやはり高専生が好きなことを熱量をもって話すカンファレンスなんだなぁと。
開催される回、運営に携わる方々で全く雰囲気が変わる会になるなぁって印象があって、LT会とかオフ会みたいな言葉では片付けられないイベントだと勝手に思ってます。
もちろんその中で知ってる人に久々にあったりとかいうオフ会みたいな成分とかがあったりするんですけどね。
また行動範囲内でスケジュールが合う感じで開催されるようであれば是非参加したいなぁと思いました。
二週間遅れなので記憶が薄れてくるなどしており、これ以上伸ばすともう何も思い出せなくなりそうなので乱筆しました。現場からは以上です。
DB付きWeb APIが急に欲しくなったのでGAE/Goで雑に実装する
まずはじめに
この記事は任意のアドベントカレンダーに属するものではありません。
何の話なの
Golangの勉強をはじめましたという話です。具体的にはいつぞやの記事に書いていたもののWeb API側を作った時の話です。
本業はAndroidアプリエンジニアなので、正直に言うとサーバサイドがよくわかってない感じからのスタートなので備忘録的に書いていく感じでやっていきましょう。
GAE/Goを使ってみる
宙に浮いているさくらのVPSがあるのですが、なにぶん時間がないということで今回はGAE/Goを使ってGoogle Cloud SQLと組み合わせることにしました。対して派手なことしないし今回の用途(とりあえずDBを持ったWeb APIの実装がしたい)に限っては必要十分って言う感じです。適当にWAFにはginを、ORマッパーにはgormを選択しています。
Golangのインストール
多分ググったほうが早い。僕はこの辺を見たりしながらインストールしました。
インストール - The Go Programming Language
macユーザならhomebrew一発でやれば良さそうな気がします。
GAE/Goのインストール
多分こちらもググったほうが早い。Google Cloud SDKをインストールしたり、Golang用のAppEngine SDKをダウンロードしてきてPATHを張ったりしました。
とりあえず動くようにしたい!ってモチベーションだったので、このあたりの記事を参考にやっていた記憶があります。
実際に開発する
実際のディレクトリ構成はこんな感じになりました。
sample ├── app │ ├── appInit.go │ ├── controllers │ │ ├── hogeController.go │ │ └── ・・・ │ ├── db.go │ └── models │ ├── hoge.go │ └── ・・・ ├── gae │ ├── app.yaml │ ├── init.go │ ├── static │ │ ├── main.css │ │ ├── main.js │ └── templates │ ├── hoge.tmpl │ └── ・・・ └── main.go
ローカルで極力goapp serveをやりたくない、ローカル環境時はIntelliJやGogland等のIDEのデバッガーを使いたい。みたいなことを感じたため、ローカルでビルドする際とgaeでデプロイする際に別の口を用意してそこからapp/app_init.goにアクセスして初期化を行う感じにしました。
とりあえず先にGAEへのデプロイのためのapp.yamlを書くとこんな感じになると思います。env_variables内の各値はCloud SQLの設定値をそのまま引っ張ってくるだけです。handlersにはGAE上でのstaticディレクトリ参照を書くようにしています。
version: 1 application: sample runtime: go api_version: go1.8 handlers: - url: /static static_dir: static - url: /.* script: _go_app env_variables: CLOUDSQL_CONNECTION_NAME: <CLOUD_SQL_CONNECTION_NAME> CLOUDSQL_USER: <CLOUDSQL_USER> CLOUDSQL_PASSWORD: <CLOUDSQL_PASSWORD>
app/app_init.goは次のような感じになっています。
package app import ( "github.com/gin-gonic/gin" "net/http" "github.com/jinzhu/gorm" "sample/app/controllers" ) var IsGAE = false var db *gorm.DB func Init(gae bool) *gin.Engine { IsGAE = gae InitDB(gae) db = ConnectDB(IsGAE) router := gin.Default() router.GET("/hello", func(c *gin.Context) { c.String(200, "Hello, e10dokup") }) // 静的ファイルの設定 if gae { router.LoadHTMLGlob("./templates/*") } else { router.Static("/static", "./gae/static") router.LoadHTMLGlob("./gae/templates/*") } return router }
init関数の中でついでにdbのマイグレーションもしてしまう感じにしました。DBへの接続はgaeであるかどうかのboolとAppEngine SDK自体が持っているローカルか本番用かの判定を行う関数を使って与えるURIを切り替えているだけです。
package app import ( "fmt" "os" "google.golang.org/appengine" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" "sample/app/models" ) func ConnectDB(gae bool) *gorm.DB { var uri string if gae { connectionName := os.Getenv("CLOUDSQL_CONNECTION_NAME") user := os.Getenv("CLOUDSQL_USER") password := os.Getenv("CLOUDSQL_PASSWORD") if appengine.IsDevAppServer() { uri = "<LOCAL_MYSQL_URI>/<TABLE_NAME>" } else { uri = fmt.Sprintf("%s:%s@cloudsql(%s)/<TABLE_NAME>", user, password, connectionName) } } else { uri = "<LOCAL_MYSQL_URI>/<TABLE_NAME>" } db, err := gorm.Open("mysql", uri) if err != nil { panic(err) } return db } func InitDB(gae bool) { db := ConnectDB(gae) db.AutoMigrate(&sample.Hoge{}) }
これをローカルで立ち上げるためのmain.goか、GAEで立ち上げるためのgae/init.goでInit関数を呼ぶときに引数のboolを分けて呼ぶという感じでした。GAE/Goだとmainパッケージのmain()関数を含むファイルが使えなかったり、init()関数が最初に呼ばれたりと色々勝手が違いますよね。あとgin周りだとGAEではrouter.Run()関数ではなくてhttp.Handle()関数に渡すようにしないと動かなかったりしました。
// main.go package main import ( "sample/app" ) func main() { router := app.Init(false) router.Run(":8888") } // gae/init.go package gae import ( "talknotifier/app" "net/http" ) func init() { router := app.Init(true) http.Handle("/", router) }
ModelとかControllerを扱うエンドポイントを作る
後はModelとControllerを立ててinit()関数内にルーティングを生やしていく感じで実装しました。
// models/hoge.go package models type Hoge struct { ID int `gorm:"NOT NULL;UNIQUE" json:"id"` Name string `gorm:"NOT NULL" binding:"required" json:"name"` } // controllers/hogeController.go package controllers import ( "github.com/gin-gonic/gin" "sample/app/models" "github.com/jinzhu/gorm" ) func GetAll(c *gin.Context, db *gorm.DB) { var hogeArray []models.Hoge db.Select("*").Find(&hogeArray) c.JSON(200, hoges) } // appInit.go - init()内 router.GET("/api/hoge", func(c *gin.Context) { controllers.GetAll(c, db) })
REST APIじゃなくてHTMLテンプレートのような静的ファイルを返したいときはgih.Context.HTMLで返してあげるようにします
router.GET("/", func(c *gin.Context) { c.HTML(http.StatusOK, "index.tmpl", gin.H{}) })
起動・デプロイ
ローカルで動かしたいときには普通に go build してから出力されたファイルを実行するようにしたり、IntelliJ/Goglandの設定をしてデバッガを走らせたりしていました。
GAEで動かしたいときには goapp deploy gae をすればGoogle Cloud SDKのインストール時に設定していたアカウントにGAEのインスタンスが立ち上がって稼働するので、結構お気軽に立てられていいなーって感じでやってました。GAEデプロイ中のインスタンスでログを取ろうとするとよくあるlog.Printf()関数ではなくgoogle.golang.org/appengine/logのlog.Infof()関数とかにappengine.Contextを引数で渡す必要があったりします。うーん…。
まとめ
当時は大慌てで実装したので色んなところに気づかず実装したりしていましたが、いざ振り返って自分のコードを見ると慣れていないにしても結構無茶苦茶なコードを書いてるなぁ…って思いました。あとGAEなんだかんだ便利ですね。とりあえず雑に動くものをデプロイしたいときにぱぱっと使えるのはいいなって思います。ネイティブ開発だと動く実機を用意したりしないと行けないのでコストが嵩む嵩む…。
結構腰を据えてGolang勉強したいなーってこの開発で思えるようになったので @puhitaku と @orisano にもらったプログラミング言語GoとGo言語によるWebアプリケーション開発を使ってちょくちょく勉強しています。お二人まじでありがとう。
ノリと勢いで買ってよかったものベスト10 2017
まずこの記事について
この記事は #kosen10s Advent Calendar の24日目の記事です。
<- 前日の記事(@sonet_sou) 翌日の記事(最後なんだけど何故か埋まっていない)->
今年もいっぱい散財した
メリークリスマス、メリー散財。今年もいろんなものを皆さん買いましたね?僕もいろんなものを買いました。 みんなに「物買い過ぎでは…?」って言われるんだけど多分飲み会とかのお金がこっちに回ってきてるだけな気がしています。でも来年はもうちょっと節約したい気もしますね!
そんなわけで今年何買ったかを覚えていないと来年また散財マンになってしまいそうなのでここはガジェオタっぽく買ってよかったものランキングでもしてみようとかいうモチベーションです
ちなみに誕生日等でいろんなものをkosen10sの人であったりから頂きました。だいたい以下の感じ
- PENTAXのリモコンシャッター
- 三脚
- 技術書(Golangの本だったりモバイルアプリ開発エキスパート養成読本だったり)
- クリンスイの浄水器
- ロジクール M570t
- カレーメシ
- ダーツのフライト
- ラブライブ!サンシャイン!!のOPのCD
- HDMIケーブル
- CoCグリッパー
- サーモスのタンブラー
送ってくれた方々本当にありがとうございました :bow: :bow:
そんな感じで始めていきましょう!
10. 君の名は。BDスペシャルエディション(Amazon限定版)
言わずと知れた去年公開の名作映画ですね。僕も劇場で何回も見ました。 予約開始で速攻で予約して、届いて即一回見ました。やっぱり良いですよね。最高。先週の日曜早起きに失敗して新海誠展行けなかったのが本当に悔やまれる。 ちなみにUHDBD版だと縮刷版の台本がついてくるのですが、お値段とUHDBDを見れる環境がいつまでたっても整わなさそうなので見送りました。悔しい。
9. ジャンクPC + GeForce GT 1030 + WD Green 240GB
同期が秋葉原に8月当時出回っていたThinkCentre M73 Tinyを見に行っていた横でしれっと購入。MouseProがi5-4430と8GB RAMが乗っかった状態で13000円で売られていたので割安では…?って思って買って、その場でSSDとSteamで持っていた古めのゲームを動かしたくてグラボを買いました。
ちなみに今でも一応動いています。結構Windowsがあると便利なんですよね…
まぁ安いなーとは思っていたんですがちゃんと裏があって、通電時間が長くなったときに再起動をするとBIOS POSTが走らず再起動を繰り返す多分電源周りの病気持ちでした。うーん、まぁ起動はするし…って気持ちです
この間仕入れたMouseProのジャンク、復活させたはいいが起動時にプスンプスン再起動繰り返すの大方電源かマザボの電源部分が問題なのでとりあえず格安microATXケースとATX電源を買う説が出てきた
— どくぴー (@e10dokup) 2017年8月31日
8. 新宿御苑の年間パスポート
新宿御苑、いいです。
いや何がいいって自然に囲まれてひたすら芝の上でゴロゴロしてもいいし、カメラを担いで写真を撮りに行ってもいいし、PCとモバイル回線を持っていって作業をしてもいいしと、とにかく僕にとっては非常にリラックスできるスペースだと思います。夏とか秋口とかは @puhitaku とかとカメラを持っていって写真を撮っていたり、一人でPCを持っていってコーディングや何かしらの書き物をしたりしてました。何故か僕は結構捗ってめっちゃ良かったです。

ちなみに通常入場200円、年パス2000円です。僕はもう10回は軽く通っている記憶があるので元を取ってしまった感がすごい。流石に冬は寒いので行けてないですけど…。
7. LINE WAVE(先行体験版)
日本で最初に買えるスマートスピーカーだと言うことで飛びつきました。当時15000円(LINIE MUSIC 6ヶ月分バンドル)結構今でも便利に使っていて、明日の天気を聞いたりアラームを掛けたりラジオ的に音楽を垂れ流してもらったりしてます。案外喋って動かすインターフェースって使わないんじゃないのかなーって思ってたのですがあると結構使ってますし案外便利なんですよね。使ってみないとわからない感じというか…。
個人的にはその後に出た正式版がキャンペーン価格とは言え12000円でLINE MUSIC 12ヶ月分バンドルなのが悲しいですね…。
LINE WAVE + Clovaだとオレオレカスタマイズが出来ないなぁって言うのがあって、最近半額になっていたGoogle Home Miniを買ってきました。GoogleアシスタントSDKの日本語対応もあったので何かおうちハック的なことをやろうかなーなんて考えています。
6. 単焦点レンズ(PENTAX DA50mmF1.8)
僕はPENTAX K-S2を使っているのですが、PENTAXで手頃な単焦点というとこの50mm/F1.8か35mm/F2.4な感じがあります(どちらも15000円前後)。個人的には風景とかを明るいレンズで撮ってみたかったので50mm/F1.8にしてみました。上の御苑の写真とかはこのレンズを使って撮ってみたものだったりします。ただふと寄りたいなーって思うと50mmじゃちょっと不自由なのでうーん、35mmが良かったかなーって思わなくもない感じだったりします。こんなことをやってるから沼にハマる。
5. PlayStation 4 + HORI Racing Wheel Apex + グランツーリスモSPORT
PS4自体はじゃんぱらで16000円できれいなものが売られてたので衝動買いでした。そのきっかけで「やっぱグランツーリスモSPORTしたいじゃん」となり、せっかくだからハンドルコントローラーも一緒に買おうってなったので一緒に購入しました。これまでレースゲームは普通のパッドでやっていたのですが、やっぱりハンコンを使うと別の楽しさがありますね。GT SPORTも「GTらしくない」と酷評され気味ですが最近ついにオフラインモードに昔のGTっぽいモードが実装されたのでまた熱が再燃しています。というかGT SPORTは写真を撮るのがくっそ楽しいですね、こんな写真が撮れたりします。4Kサイズでレンダリングも可能で、しかも撮ったデータはUSBメモリにエクスポートできるのできれいに撮れるとPCの壁紙にしたりとかして楽しい。


ちなみにハンコンは上のジャンクPCに繋いでEuro Track Simulator 2をマルチプレイでやったりしています、こっちもかなり楽しいのでおすすめです。
4. Sony Xperia XZs(au SOV35)
以前使っていたau isai Vividがよく壊れて3台目になっていたのとXperia XZsの発売日と更新月が重なっていたり、キャッシュバックキャンペーンがいい感じに重なって適用できたりと何かとタイミングが良くて買い替えました。なにげに初めてのXperia。
そもそもisai Vividがよく壊れたりでかなり怪しかったのもあって、とても快適です。Snapdragon 808からSnapdragon 821になったものRAMが4GBになったのも十分大きい気がします。なんとなくバッテリーの持ち具合が良くない気がするけど普段の使い方だとよく充電器につながりっぱなしなので別に気にはならないレベル。
ちなみに今年は他にiPhone 6s(同期に譲ってもらった)、Moto G5 Plus(検証機)、NuANS Neo(Windows 10 Mobileの方、公式に終了したのでいよいよ使いみちが…)を買ったりしています。
3. Sony PHA-1A + Sony XBA-N1
カメラの沼にハマりかけてると思ったら今度はオーディオ沼です。
PHA-1Aが何故かじゃんぱらできれいなものが13000円くらいで売ってたので衝動買いでした。中古屋ウォッチング、時々こういうのが出てくるので本当に良くない。
実はXBA-N1は昨日届いたので実質セルフクリスマスプレゼントです。溜まりに溜まっていた楽天ポイントをぶっこみました。
XBA-N1の前はJVC HA-FXT100を使っていましたが乗り換えてみて個人的にすごい好みの音が出るようになった気がします。HA-FXT100より中音域が厚くなった感じがあってすごい好きな感じです。完全に主観なのでレビューというよりプラシーボという説もあるのですが多分こういうのって本人が満足できればそれが一番なんだろうなって思わなくもないです。
同期には「どうせ二ヶ月後くらいにXBA-N3を買うやつ」って言われたんですが流石にそんなつもりはないしこれ以上オーディオ沼に足を取られたくないのでこれで僕は満足です。そういうことにさせてくださいマジで。
2. iMac 5K Retina
今年最大のお買い物です。仕事用じゃないです。
実はApple Storeからの購入ではなくビックカメラのアップグレードプログラムでの購入です。ビックロの店舗で購入したのですが店員さんに「明日の配送でよろしいですか?」と聞かれたときに何故か満面の笑みで「いや、ここから自分で持って帰ります!」と言ってしまいクソデカい台形の箱を抱えて新宿のビックロから家に1時間かけて帰る謎の体験をしました。
「なんでiMac買ったの?」っていう話になるのですが使っていたMacBook Pro 13インチ(Early 2015)が二年を迎えるのですが案外元気に動いているのでリプレースするにはもったいない感じで、コスパ的にiMacを手に入れればいい感じになるのではないかというところです。買ったのCore i5-7500搭載モデルで、それに自前で8GBメモリを増設して16GBで運用しているのですがやはりUシリーズではないデスクトップ版Kaby Lakeのパワーはすごくて、ものすごい速さでAndroidプロジェクトのビルドをしてくれます。最高。
流石にお仕事でiMac…となると会議とかでPCを持ち運びたいのでそこはMacBook ProとかのノートPCのほうが良さそうですよね。難しいところです。ただ本当にiMac 5K Retinaはすごいので購入直後には下のツイートみたいな気持ちになります。
とりあえず今言えることは「iMac 5K Retina最高」ということです、Mac使うみんな買おう
— どくぴー (@e10dokup) 2017年10月2日
1. Nintendo Switch
なんか本当にありきたりなんですが、Nintendo Switchは今年本当に買ってよかったなって思います。僕は予約購入勢です。
長い時間遊んでいるタイトルがこれまたマリオカート8DX・スプラトゥーン2・スーパーマリオオデッセイとありきたりなタイトルですが、久々に楽しんでゲームしたなっていう薄っぺらい感想が出るくらいには現在進行形で楽しんでいます。スプラトゥーン2はスマホ連携でボイスチャットしながらサーモン・ランとかできるのでくっそ楽しいですよね。
おすそ分けプレイをやりたくて何処かで友達とボンバーマンをやったり、飲み会の席でぷよぷよテトリスをやったりしたのですが、携帯ゲーム機じゃありえなかった「外でみんなでプレイする」ことを成し遂げているのが本当に新体験で良かったです。一人プレイでもいつでもどこでもプレイできる仕組みあるおかげでゼルダの伝説とかでみんなが時間を大量に溶かしていたりするので、PS4やXbox Oneなんかにはないオンリーワンの体験を提供しているのはさすが任天堂って感じです。はい。
ちなみにスプラトゥーンはクソ雑魚です。時々上手い人のプレイ動画を見たりすると何が起きているのかわからない感じになります。
大散財を並べた後に思うこと
普通にベスト10がスッと埋まるあたりどんだけ物欲があったんだ…ってなりました。上京1年目だったので色々物が揃ってなかったのもあるなーって感じで一年かけてやっといろんなものを揃えていい感じに家の中が充実してきたなーって思ってます。流石に来年はこんな大散財を控えるつもりです。
案外ポジティブなのが「買ったものはだいたい使い続けていられてる」って言うところなのかなと。安物買いの銭失いで買ってすぐ壊れちゃった、みたいなものはあったのですが、なんだかんだ買ったものを一度も使わなかったとか、すぐ使わなくなっちゃったみたいなケースが実はないので衝動買いと言いながら意外と個人的ニーズがあるものを買っていたという説がある。
来年はもっと計画的に衝動買いをしていきます。みんなも軽率にお買い物をしていきましょう。
MAに抱く感情 #MA_2017
まずはじめに
この記事は MashupAwards Advent Calendar 2017 22日目の記事です。
Mashup Awards 2017が終わっちゃいました
今年も無事というかなんというか、年一度の長ーい楽しみと言っても過言ではないMashup Awardsが終わってしまいました。
僕が何を作って散っていったかは下の記事を見てもらえるとわかりやすいです。
えっ、このネタこっちでやるんじゃなかったんかいって言われるとそれもあったんですが、MashupAwards Advent Calendarならやっぱり自分とMAの話したいなーっていうそんな思いがありましてですね…。
MAに4回くらい参加して思うこと
初めて参加したのはMashup Awards 9の頃だった記憶があります。今となってはよくボッチでMAに何かしらを投げているのですが、MA9-10の頃はちゃんとチームを組んでいたなぁとしみじみながら思っております。今はボッチで何かしらすることが多いですね。よくわからないままサーバサイドをやってみたりしています。多分MAでちょっとだけ勉強したGAE/Goの話は別の記事に書くと思います。
9から今回の2017まで含めると4回連続で何かしらの作品を投げてきたり、負けて悲しいのでスタッフの真似事をしていたりするのですが、2nd stageに訪れてみると毎年「次は・次も参加者としてこの場所に来たい!」って思わせてくれる不思議な魅力があるんですよね。何なんだろう。
個人的にはMAについて今年思ったことはなんだろう…って思ったらこんなツイートをしていました。
Mashup Awards、初めて参加した頃から色々いい意味で変わったなぁと思うしこれからも何かを作ってとりあえず動かして自慢したい人たちがいる限り続いてほしいなぁと思ってます(必死に作品を作りながら) #MA_2017
— どくぴー (@e10dokup) 2017年11月13日
ちょっとお酒の入った頭で考えると、本当に参加者がみんな自分の自慢したい作品を作って持ってきて、自分の作品に自信を持っていながらも他の人の作品を「やべぇ!」「すげぇ!」「おもしれぇ!」と素直に褒めることができる環境が出来上がっているんですよね。MA自体に寄せられてくる作品の技術ベクトルの向き先が増えすぎているっているのもあるんですが、ワンアイデアからいろんな手段・技術で誰かが何かしらの実装をしてきていて「その発想はなかった」「技術の無駄遣い」みたいな感じでみんながお互いを作品からいい意味で認識し合うって言うのは本当にMAオンリーの空気感だなって思います。
あと、僕が思うMAのいいところは「目的の手段化」すら許される、ってところなのかなって思っています。目的の手段化から生まれた作品が勝ち上がれるってわけじゃないんですが、「いやー、あのAPI使ってみたくて…」とか「あの機材めっちゃ良さそう、使ってみたい!」みたいなモチベーションがアイデアによって形になる、みたいな作品がたくさんあるのが普通のコンテストとかではまあありえない光景だよなーって毎年思わされています。自分も今年はやったことないことやってみたいって思いでものを作りましたし、知らないものに触れる、勉強できる、実際に形にするっていうプロセスを歩めるのは個人にとってもすごい成長環境だよなと思います。
ただ個人的に毎年直したいなーって思うところはあって、ギリギリにならないと稼働できないっていうすごい問題があるんですよね、毎年「忙しい…」とか言いながらギリギリまで手を付けられない、みたいな状況になっているのですがもっといいもの、ちゃんとしたものを作ろうと思うと計画建てるというか、もっと早く目覚める必要があるなーって思います。毎年思ってるのに実行できないのが非常に悲しい。この時期だとMAが終わって開発に対する意欲がハイになっている上に大晦日ハッカソンなるものもあるので何かを作り出そうとするのですが道半ばで何処かに消えてしまう作品をなんとかして作り上げるのが今の僕の課題です。
あ、今年も大晦日ハッカソンがあるので皆さん大晦日の前に大掃除して全力で開発しましょう。僕はこの土日で大掃除をします。
とりあえず来年も
Mashup Awardsは色々変化を迎える(一般社団法人化とか…)ような気がしますが作り手の熱い思いがあればMashup Awardsはどんどん面白く、ハイレベルになっていくんだろうななんて思っています。来年も全力でやっていきましょう!
ガルパン劇場版のお陰でコンテンツ消費環境に興味が出てしまった話
まずはじめに
この記事は ガールズ&パンツァー Advent Calendar 2017 19日目の記事です。
最終章第一話が始まりましたね
いやー、ガールズ&パンツァー 最終話 第一話がついに公開されましたね!一週間以上前の話ですけれども! 皆さんはもう見られましたか!?僕はいろいろ忙しかった事もあってこの間の日曜日にシネマシティに行って観てきました! じゃあレビューでもするのかとでもなるのですが、そんなネタバレなどという無粋なことは言いません。ただ一言
と言い残すのみです。
じゃあ何の話をするのか
コンテンツ消費の環境についてのお話をしようかと思います。
ガルパンにハマるまで
ガルパン、ガルパン劇場版に出会うまでは、正直なところ「コンテンツは消費さえできればそれでいい」なんて思っていました。音質や画質よりもコンテンツそのものが良ければどうでもいいと。なので映画をわざわざ映画館で見る、なんてせずに後からストリーミングサービスでタブレットやパソコンに安いイヤホンを繋いでみればいいじゃない、みたいな消費をしていたわけです。
そんな感じでコンテンツを消費していた大学時代、同期が東京に行ってくるついでにあのシネマシティでガルパン劇場版を観て帰ってきました。どうにもドハマリしたようで「いいぞ」という言葉を残してきました。当時ガルパンを知らなかったので、そこまで言うなら劇場版を見に行こうと話を聞いていたら「絶対にシネマシティで極上爆音上映を観ろ」と言ってきます。極上爆音という言葉はひたすらヤバそうなのですが一体何が違うのかわからないなぁって思いながらその一週間後に東京に行く予定があったので、そこまでに予習としてAmazonプライムビデオでTV版とOVAアンツィオ戦を観て本編サントラを買うなどしていました。本編サントラを買うあたり若干もうコンテンツ自体にハマりかけていますね。
そんなこんなで迎えた劇場版を見に行く日。もうすでに観た人は「ガルパンはいいぞ」としか言い残さない文化が出来上がっているので「ネタバレをしないように最大限考えた上で出てくる言葉なんだろうなぁ」くらいにしか思っていませんでした。なのでこんなツイートもしてしまう。
同期も気づけば「ガルパンはいいぞ」としか言えなくなってしまった。だが私には強い意志がある。この意志を持ってすればガルパン劇場版とやらを完璧なる語彙力によってレポートすることなど容易。あの同期も貧相な語彙力から救い出してみせよう pic.twitter.com/PalSSpKGx9
— どくぴー (@e10dokup) 2015年12月26日
そして観てきた後の僕がこれです。
— どくぴー (@e10dokup) 2015年12月26日
風潮に乗っかったつもりは毛頭なかったのですが、色々と体験が素晴らしすぎたのか、ツイートどころかシネマシティの建物を出てため息のように出た言葉すら「よかった…」でした。素晴らしい環境での素晴らしい体験は脳を揺さぶり溶かすということを身をもって知った瞬間でした。
ハマってから
その後も一回では飽き足らず、他の映画館でもガルパンを観たい!などと言い出し何度もガルパンを鑑賞する一年になりました。すべてを数えてみると
という感じに。あまりにも観すぎて次に来るセリフがわかるあたりはガルパンおじさんなら皆経験があるのではないでしょうか。
この中でもやはり素晴らしかったなと思うのはレオパルド化したシネマシティと塚口サンサン劇場でした。当時関西圏の学生だった僕には塚口であの脳が揺さぶられる体験ができるって言う事実に打ち震えたものです。
コンテンツ消費に思うこと
まず映像作品、特に映画を見る際の意識が変わりました、やはり新鮮さという意味でも体験の品質という意味でも映画館のスクリーンで見るという体験は家のディスプレイで見るものとは違うものがあります。家のディスプレイで友達とワイワイ見るのも素晴らしいんですが、好きなコンテンツで映画館に行ける環境があるならばぜひとも映画館でみたい!って思えるようになりました。なので気になった映画は映画館に行く余裕があれば観に行っています。『君の名は。』とか『響け!ユーフォニアム』とか。事前情報がまったくなかったのですが『ダンケルク』も面白かったです。
そんなことをしていると映像作品ではないコンテンツ消費にも気を使いたくなってきました。真っ先に思いつくのは音楽ですね。これまで「イヤホン良くわからないんだよなー、いいやつとか何が違うの?」という考えで、2000円程度のイヤホンを使っていたのですが社会人になって自由に使えるお金が発生したこともあり、プラシーボでもなんでもいいからいい環境でコンテンツを消費したくなってイヤホンを突然10000円くらいするJVCのものに買い替えたりしだしたり、安物ですがポータブルアンプを買ったりしました。そして今ではポータブルアンプがSony PHA-1Aに変わっていたりしています。「何が変わった?」と聞かれると説明しにくいのですが僕としては幸せな気分なので大丈夫でしょう(一応ちゃんと感想を述べると中低音の粒がくっきり聞こえるようになったのでベースとかドラムの音が聞き分けやすくなったりしたと思っている)。まだオーディオ沼の入り口に片足も突っ込んでいないのですがいつ足を取られるかわかったもんじゃないので己を強く持ちたいところです。
ここまで行くと次はゲームやBDの映像をきれいに観たい!ってなるのでしょうけど今の家だと流石に狭くなっちゃうのでしばらくはおあずけなのかなーって気がしています。今だと4KでHDR対応なディスプレイとそれが扱えるプレイヤーが当たるのでしょうね。一体いくらお金がかかるのやら…
最後に
とりとめのない感じになってしまいましたが、僕はガルパン劇場版を観たことで「コンテンツの消費のための環境に対して金をかけることは全然損にならないし気持ちいい」と思うようになってしまいました。周りの友人たちがコンテンツ消費のためにお金を注ぎ込んだりしているのを見てたりしていたのもあってかなり背中を押されまくっている感じがあります。これからも懐具合と相談しながらガルパンにかぎらず、様々なコンテンツを満足できる環境で消費したいなと思います。