ナカザンドットネット

それって私の感想ですよね

第36回 長岡IT開発者勉強会 #nds36 に行ってきました

第36回勉強会(2014/03/15) - 長岡 IT開発者 勉強会(NDS)
http://nagaoka.techtalk.jp/no36

今回のNDSは盛り沢山でしたね。2回発表した人が3人いたので輪をかけてボリュームが凄いことに。

というわけで、スライドが公開されているものはスライドも込みでレポしていきます。

メインセッション:Go言語入門

@さんによるGo言語についての入門セッションでした。

Go Playgroundというサイトを知れたのが個人的には一番の収穫でした。コードをその場で実行して試せるのもさることながら、Gistみたいに書いたコードに固有のURLを付けて、他の人に動作可能な状態で見せることができる。すごく便利。Gistにこういう機能付いたら面白いんだけどなあ。

全体を通して、golangへの見方が僕の中でガラッと変わったと思います。モダンなプログラミング言語なので、高級寄りの言語なのだろうと思ってました。が、実際に蓋を開けてみると、確保するbit数が違うintNNなプリミティブ型があるし、スライスなんてもろにポインタを意識してるし、かなり低級寄りでした。

正直ポインタが学生のときに習ったときのふわっとした理解のままで止まっているので、ガッツリとポインタが出てくる言語は使える気が全然しないですが、@hayajoさん的には「ベターCというよりもミニマルC」という印象らしく、実際に仕様もかなり小さいみたいです。

あ、golangのinterfaceの考え方がTypeScriptのinterfaceとかなり近い感じがしたんだけど、この辺なにか言語作った人たちの間でのシンパシーがあったのだろうか。興味深かったです。

サブセッション:いろんな言語たち

いちおう公式からのレギュレーションとしては

1言語につき何人話してOKです!
レガシーでも最新でも、初級から上級まで「言語」をテーマに含めてくれればなんでもOKです。(ただなにもその知識がない人向けにも、さわりだけでも話してもらえると助かります)

とのことでした。

続きを読む

Android Studio 0.4.4でKotlinを使う設定の覚え書き

最近のAndroid Studioでも動くのかどうかよくわからんかったので、調べてみました。

対象読者

Android StudioでHelloWorld作ったりエミュレータデバッグをするくらいならできる人。

Kotlinプラグインを入れる

Preferences(MacならCommand+,)から、設定画面を開きます。

f:id:Nkzn:20140211145725p:plain

Pluginsの画面で、Browse Repositories...を押してウィンドウを開きます。

f:id:Nkzn:20140211145840p:plain

出てきたプラグイン群を右上のテキストボックスで絞り込んで、Kotlin関連のものだけにしましょう。

Kotlinプラグインを右クリックすると出てくるDownload and Installを押してしばらく待てば、Kotlin環境の導入は完了です。PreferencesのOKを押すと再起動を求められるので、再起動しておきましょう。

動かしてみる

JetBrains / kotlin-examples https://github.com/JetBrains/kotlin-examples

公式サンプルである↑の /gradle/android-mixed-java-kotlin-project/Android Studioにインポートしましょう。

たぶん動くと思います。

設定内容が気になる人は、↓のページを見ながらAndroidSample/build.gradleを眺めてみてね。

http://blog.jetbrains.com/kotlin/2013/08/working-with-kotlin-in-android-studio/

まとめ

公式のサンプルコードが古すぎて動かなかったので、修正してPull Request送ったんだけど、余計なコミットを入れすぎて指摘の手間をかけてしまい、JetBrains社のNatalia氏には大変ご迷惑をおかけいたしました(´・ω・`)

Android Studioのレイアウトプレビューが全角の<>を><として認識する問題

Android Studioにちょっと不思議なバグがあったので備忘録として残しておきます。

バージョン

Android Studio (Preview) 0.4.4 (Mac版)

f:id:Nkzn:20140211132818p:plain

現象

レイアウトXMLandroid:textに大なり記号(>)を書くと、プレビューで小なり記号(<)として表示される。

コード

f:id:Nkzn:20140211132655p:plain

プレビュー

f:id:Nkzn:20140211133345p:plain

小なり記号は?

逆もまた然りです。コード内にを書くと、プレビューでになります。

ビルドすると?

アプリを実行すると、普通にコードに書いたままの表示になりますので、ぶっちゃけ気にしなければ問題ない感じです。

プレビュー単体の問題っぽいですね。

半角の場合は?

XMLなので、大なり記号は>、小なり記号は<と書くことになりますが、どちらもプレビュー上で普通に表示されました。

さて、なんだろう、これ。後でバグ報告送っとこう。

Android版Facebookアプリ内で使われているOSSを眺めてて見つけた43のライブラリ

メニュー>概要>ライセンス の中にあるアレですね。

なんか良いUIライブラリ見つからないかなーと思って探し始めたら、案外と色々入ってて心折れそうになった。

どこで使ってんだよそれ感高い奴もかなりありますし、明日からでも使ってみたいJoda-Timeのようなライブラリもありました。コピーレフトで仕方なく書いてあるんだろうなあ的な、内部ライブラリっぽいものは省いてあります。

さあ、頑張ってみていきましょう。

AChartEngine

https://code.google.com/p/achartengine/

グラフとか書ける系のアレ。

Application Crash Reporting for Android

http://acra.ch/

通称ACRA。クラッシュレポートをPlayストアとは別に収集する系のアレ。 某秋田の地ビールとは関係ありません。

ActionBarSherlock

http://actionbarsherlock.com/

元祖・Android 2.xでもActionBarが使えるライブラリ。 そのうちActionBarCompatに書き換わったりするのかなあ。

続きを読む

#MFT2013 で見つけた色んな時計

Maker Faire Tokyo 2013に行ってきました。
気付いたら色んな時計の写真を撮っていたので、この場でご紹介します。

ニキシー管

シュタゲにすぐに結びつけるのは安直かもしれませんが、やはりというかなんというか、時計制作の一番人気はニキシー管でした。

f:id:Nkzn:20131105235249j:plain
f:id:Nkzn:20131105235251j:plain
f:id:Nkzn:20131105235253j:plain
f:id:Nkzn:20131105235254j:plain
f:id:Nkzn:20131105235255j:plain

VFD

昔の車のアクセサリを思い出す感じの蛍光表示管も割と人気でした。

f:id:Nkzn:20131105235455j:plain
f:id:Nkzn:20131105235458j:plain
f:id:Nkzn:20131105235616j:plain

その他の時計たち

なんかカラフルな時計

f:id:Nkzn:20131105235919j:plain

アクリル板に傷つけてニキシー管的に表示してるやつ

f:id:Nkzn:20131106000112j:plain

なぜか常にNTPサーバーと同期しているやつ

f:id:Nkzn:20131106000124j:plain

やっちまった時計①「NAND回路だけで作った時計」

f:id:Nkzn:20131106000508j:plain

学生さん。『教科書に作れるって書いてあったから本当にやってみました』とのこと。
デバッグ用のLEDがいい味出してる。

やっちまった時計②「オシロスコープ時計」

http://oscilloclock.com/ の中の人。
なんていうか色々とおかしい。
電子銃こそオシロスコープを分解して流用しているので自作していないが、基板やソフトはフルスクラッチ。基板は自前でエッチングを行い、ハンダ付けも手作業でやるという恐ろしい手のかけ方。

これが波形とは信じがたい・・・

f:id:Nkzn:20131106000925j:plain
f:id:Nkzn:20131106000922j:plain
f:id:Nkzn:20131106000924j:plain
f:id:Nkzn:20131106000927j:plain

まとめ

みんな時計好きだな!!!!

Scala入学式 #NDS33 で長岡に行ってきました

f:id:Nkzn:20130929101652j:plain

ドーモ、テイトク=サン。ナカザン=デス。

9/28に新潟県長岡市で行われた、第33回長岡IT開発者勉強会に行ってきました。

今回は「Scala入学式」と銘打って、 id:nkgt_chkonk さんプロデュースによるハンズオンイベントでした。
僕も2ヶ月前くらいからちょこちょことScalaをやっていたので、これは参加せにゃならんということで行ってきました。

結論から言うと大満足なイベントでした。今回は、その報告を書こうと思います。

※他の人の記事はこちらから→ http://nekogata.hatenablog.com/entry/2013/09/28/185217

やったこと

内容と感想を並べていきます。

入学試験(事前準備)

資料→ https://gist.github.com/Shinpeim/db00b073f7acd6d5b918

まずは環境作りから。
IntelliJ IDEAとSBTを利用する形の、スケールしやすい形の開発環境を揃えてくれていました。
HelloWorldまでしかやらない分には、実はIntelliJ IDEAだけあればできてしまうので、「なんでわざわざSBT依存の実行環境にすんねん!いちいちrun叩くの面倒やろ!」とは思ったものの、Java文化圏最大のライブラリアーカイブMaven Central Repositoryからデータを引っ張ってこれるというのはかなりの強みなので、まあ覚えておいて損はないのだろうと思いました。
テスト実行とかもコマンドラインからできるので、Jenkinsに載せてCIする場合にもSBTが便利なんでしょうね。

第1部 Better JavaとしてのScala

資料→ https://gist.github.com/Shinpeim/6740436#file-00-md

スーパー写経タイム。
とりあえずclassとかobjectとかtraitとかを自分の手を動かして作りながら、初期化の仕方や構文などを学びました。
printlnで表示する内容がドラクエじみていたというか、テーブルトークRPGじみていた点が分かりやすくて面白かったです。Weaponトレイトとかテンション上がりましたわー。

第2部 もっとScala!

資料→ https://gist.github.com/Shinpeim/6740436#file-01-md

  • 基本的なデータ構造の1つであるリストの扱い方
  • パターンマッチ
  • Option型
  • 関数型としてのScala
    • foreach
    • map(flatMap)
    • filter
  • 実は↑はfor-yieldに書き換えられるよ的な話とか

みたいな感じでモリモリとScalaの便利な仕組みについてお話ししてもらってました。ハンズオンちょっと少なめ。

資料の方には書いてあったけど、リストのimmutableとmutableの違いについては言及されなかった気がする。
immutableなリストをfilterやmapで加工したときに出てくるリストは、元々のリストオブジェクトを変更したわけではなくて、新しいオブジェクトが生成されてる、という認識でよかっただろか。

第3部 ぬるぽガッbotを作ろう

資料→ https://gist.github.com/Shinpeim/6740436#file-02-md

Twitter4Jを使って、タイムライン上に現れた「ぬるぽ」に対して「ガッ」をリプライするプログラムを作る時間。

初期設定をしている間に、作者のヒゲメンが反応してくるという一幕も。

Javaのライブラリを普通にScalaへ取り込んで利用することができるんだよー、といういい例だったと思いました。

最終的にはこんな感じに↓

まとめ

f:id:Nkzn:20130929110743j:plain

新潟県はニー型圏!

静的型付け都市、ニー型!!!!!

圏論都市、ニー型!!!!!

素晴らしいイベントでした。まる。

May the Type be with you...

#新潟ラーメンバトル 2013非公式アプリをPlayストアにリリースしました

f:id:Nkzn:20130926001019p:plain:w240
新潟ラーメンバトル2013非公式アプリ
https://play.google.com/store/apps/details?id=net.nkzn.android.app.ramenbattle

はい、というわけで今年も昨年に引き続き、新潟のラジオ局FM KENTOさんが主催している新潟ラーメンバトルのアプリを作っちゃいました。

昨年はアプリを作るだけで精魂尽き果ててしまったので、今年はちゃんとアプリの見どころを紹介したいと思います。

なにこれ?

なかざんのなかざんによるなかざんのためのアプリです。
ラーメンバトルを120%楽しむための機能を独断と偏見で詰め込みました。

全店舗を1回ずつ回るという最終目標にフォーカスした機能が入っています。

めぼしい機能としては

  • 済スタンプによる達成度管理機能
  • 最寄り店舗検索機能
  • 未挑戦のバトルラーメンからランダムに今日のラーメンをサジェストする機能

なんかが挙げられるでしょうか。

達成度管理

各バトルラーメン紹介の画面では、食べたラーメンに「済」スタンプを付けることができます。

f:id:Nkzn:20130926003818p:plain:h240

そして、スタンプが貯まってくると、メニューで確認したり、

f:id:Nkzn:20130926004053p:plain:h320

達成スタンプ数の画面から確認したりできます。

f:id:Nkzn:20130926003720p:plain:h320

また、↑の画面では食べたバトルラーメンの総額も確認できるため、お財布が危なくなる前に早めに気付くことができるかもしれません。

f:id:Nkzn:20130926004228p:plain:h240

最寄り店舗検索機能

これは画面を見ていただけば一発で分かると思います。

f:id:Nkzn:20130926004536p:plain

GPSを有効にしていると使える機能です。
近い店舗から順に巡って行きたいという最早自分好みのラーメンを出しているかどうかはどうでもよくなっているタイプのストイックな方にオススメの機能ですね。

サジェスト機能

f:id:Nkzn:20130926005409p:plain:h320

現在地から近ければいいやという発想を更に飛躍させてまだ行ってないところならどこでもいいやという、最早コンプリートのことしか頭にない方のために、サジェスト機能も備えております。

まだ「済」スタンプをつけていない店舗の中から、ランダムで1店舗をご紹介しますので、行って下さい。

「アプリに言われたら従うしか無いのでちょっと妙高まで行ってくる」という猛者が現れるのを楽しみにしています。

おまけ:Twitter投稿機能

f:id:Nkzn:20130926003448p:plain

各バトルラーメン紹介の画面右上にあるTwitterアイコンをタップすると、Twitter本家やTwitterアプリを開いて、店舗名をツイートすることができます。

こんな感じ↓

まとめ

仕事で作ったわけではないので一銭にもなりませんが、まあ自分のために作ったアプリなので、基本的には問題なしです。
えっ、iOS版? だれかつくれ。

ところで、



主催サイドアカウントたちの期待感怖ええええええええ!!!!!!!!!!

余談

新潟ラーメンバトル学のオープニングに延々と流れてた、ラーメン食べたくなる曲を探したら見つかった。
どうやらラーメンバトル実行委員長のswampさんの曲だったらしい。