tomoima525's blog

Androidとか技術とかその他気になったことを書いているブログ。世界の秘密はカレーの中にある!サンフランシスコから発信中。

北陸旅行の思ひ出(白馬岳縦走、白川郷)

シルバーウィーク中に北陸旅行したので、記録に残しておきます。

小蓮華-白馬岳縦走

まずは日本百名山であり、北アルプスを代表する山の一つである白馬岳に上ってきました。
白馬岳は一般的には長野県(東側)側の大雪渓と呼ばれる経路から登ることが多いのですが、今回は北陸側に来たので、糸魚川(北麗)方面の蓮華温泉経由で登りました。
北麗から登る場合、蓮華温泉白馬大池~小蓮華~白馬岳というルートになります。

続きを読む

新潟県糸魚川の秘湯・蓮華温泉に入ってきた

連休前半に北陸(新潟・富山)を旅行してきました。その時に立ち寄った新潟県糸魚川にある蓮華温泉が予想以上に良かったので、メモ。

蓮華温泉とは

蓮華温泉北アルプス白馬岳のふもとにある、内湯と複数野天風呂がある温泉です。

wikipediaによると

  • 日本秘湯を守る会加盟の「蓮華温泉ロッジ」だけが営業している一軒宿の秘湯
  • 露天風呂はロッジから山道を5分から15分ほど歩いた場所に散在
  • 6月頃までは残雪により道路も閉鎖されており、徒歩でしか行けない

とのことで、1年のうち限られた期間しか入れない上に移動が容易ではない、まさに秘湯と呼ぶにふさわしいところです。

続きを読む

英語を身につけたいエンジニアはmeetupでイベントを探すと良いかもしれない

先週日曜日に海外のイベント告知サービスであるmeetupからイベント(もくもく会)に参加したのですが、これ英語力つけたいエンジニアにオススメなんじゃね、って思ったので書きます。

f:id:tomoima525:20150824010124p:plain:w400

meetupというサービスについて

日本だと勉強会等のイベント告知サービスはconnpassatnd, dots.などが有名どころかと思います。自分も勉強会を探す時や主催する時は大体これらのどれかのサービスを利用しています。一方海外だとmeetupというサービスがもっとも有名です。サンフランシスコにいた時は、あらゆるイベントがここ経由で開催されていた印象がありました。手前味噌なんですが、USに来たら入れるべきアプリについて書いた以下の記事でも、meetupを入れてます。

tomoima525.hatenablog.com

機能としての差異はconnpassなどとそれほど大差ありません。あえていうなら、SNS機能が結構充実しているところでしょうか。
例えば、参加者をフォローする機能などがあり、イベント後に連絡取りたい場合などに活用できます。 また、参加イベントに対して自由にコメントする機能もあります。ちょっとした質問をする際に気軽に使うことができます。

f:id:tomoima525:20150824005314j:plain:w300

特に英語圏を中心とした海外で利用されているサービスということもあり、日本で開催されるイベントの多くが外国人によって主催されていたり、英語が主となるイベントが多いようです。

f:id:tomoima525:20150824005454p:plain
(自分が参加しているグループ)

meetupからイベントに参加した経緯

meetupの機能にグループ機能というのがあります。グループに参加していると、そのグループで主催するイベントの告知が通知されて確認することができます。
その中でたまたまDev Japanというグループに参加していたのですが、そこでTokyo Developers Meetupなるものが開催されることを知りました。内容としてはいわゆるもくもく会のようなものだったのですが、休日にコーディングに集中できる場所が欲しかったので、参加することにしました。

f:id:tomoima525:20150824005425p:plain (Dev Japanのコミュニティページ)

meetupに参加してみて感じたこと

meetupに参加してみて感じたこととしては、 "これ、日本で英語環境に身をおきたいエンジニアに最高な環境じゃね?" ってことでした。

思った以上にインターナショナル

今回の参加者は15名ほどだったのですが、場所を提供してくださった方と自分以外は全員外国人でした。さすがmeetupといったところです。参加者はフリーランスのエンジニア、転職を見据えてプログラミング勉強中の人、はたまた自分のように作業場所を確保したい人など様々でした。また国としても中国、シンガポール、ブラジル、スコットランドなど色んな国の人がいましたが、もちろん共通語は英語でした。

みんなとにかくしゃべる

とにかく始まった途端、初対面にも関わらずみんなぺちゃくちゃおしゃべりしながら作業していたのが印象的でした。
取り組んでいる作業とは別の仕事の話や、最近スタートアップ界隈であった面白い出来事などなんでもかんでも作業しながら話しまくります。ぼーっとしててもいきなり話しかけられたりします。
自分は最近勉強しているSwiftに取り組んだのですが、色々つまずくたびに隣に座っていたCookpadiOSをやっていたというエンジニアに相談したり、おすすめの教材を教えてもらったりして、だいぶはかどりました。

f:id:tomoima525:20150823160546j:plain:w400
(一枚だけ写真撮ってた。全然伝わらない現場の雰囲気...)

海外or日本にいる外国人の仕事事情なんか垣間見れる

今日本で仕事探しているけどVISAをサポートしてくれる会社がない〜とか
◯◯って日本の会社に入りたんだけど、中途はどうしたら楽に入れるんじゃろか?とか
外国人同士で日本での仕事事情の話を聞けて、これは全然日本人が日本の企業にアプライするのとは違うようで、面白かったです。

まとめ

今回日本では初めてmeetupを使ってイベントに参加したのですが、思った以上にインターナショナルな環境でしたし、もくもくする場でありながらアメリカっぽい雰囲気も味わえました。なので、

  • コーディングもしつつ英会話なんかもしてみたいな
  • 外国人のエンジニアの友達欲しいな
  • 海外でのオポチュニティなんてないかしら

という方はぜひ一度meetupでイベントを探してみてはいかがでしょうか。

AndroidオールスターズでClean Architectureについて発表してきた&参考リンク集

f:id:tomoima525:20150808130602j:plain:w350

先日dots.さんが主催するAndroidオールスターズという勉強会で、"Android Clean Architectureことはじめ"と題して発表してきました。

資料はこちらになります。

www.slideshare.net

また資料でお見せしたサンプルコードは https://github.com/tomoima525/CleanArchitectureSample になります。プリミティブな形でサンプルをお見せしたかったため、ほぼデファクトスタンダートとなっているRetrofitとButter Knife以外のライブラリは利用せずに書いています。
最低限の実装なので色々荒くなってるし、テストガーとか言ってたくせにテストも書けてないので、後ほどもう少しブラッシュアップしてテストも書きます。気になる方はwatchしていただければと思います。

設計とは(良いコードを書きたいっていう)意志であり、フレームワークなんて関係ねぇ

上記はUncle Bobさんの"Architecture is about Intent, not Frameworks"という言葉の意訳です。発表の最後でも話したのですが、結局のところ、設計はこの言葉につきるかと思います。

自分も、Androidの設計について色々調べ始めたきっかけは、1000行を超えるActivityやMVCと銘打ちながらもAndroid Frameworkが絡んでこんがらがってしまったコードをなんとかしたい、と考えたからでした。

今回は"The Clean Architecture"というUncle Bobが提案した設計思想をベースにした設計をご紹介しました。これ以外にも、MVVMやFacebookFluxなど、様々な設計手法があります。一体何がいいのか迷ってしまいますが、これらのうちから一つ選んでまるっと採用する必要はなく、良いとこどりして出来る範囲で、コストに見合う形で、自分のサービスに取り込んで行けばよいのではないかな〜と思います。なので、資料でも、どこから手を付ければよいかの指針を書いています。

またチームで開発している場合、メンバーの意志を合わせていくことも重要になります。新しい手法を試す場合はチーム勉強会を開く、レビューで気をつけるなど、全員が同じ方向を向くように頑張らないと、設計が崩壊してしまいます。やっぱり意志が大事なんですね。

個人であれチームであれ、良い設計を通じて最終的には楽しく(ここ大事)迷わずサービスにフォーカスして作れることが一番だと思う次第であります。

Android Clean Architectureに関するリンク集

自分がAndroid Clean Architectureを学ぶにあたって参考にしたリンクをまとめておきます。もうちょっと学んでみたいと思ったら参考にしてください。

MVP

The Clean Architecture

Android Clean Architecture

最後に:Androidオールスターズについて

その他の方の資料はこちらにまとめがありました。当日の感想ツイートなんかもまとまってます。他の登壇者の方たちの発表はレベル高くてめっちゃ勉強になりましたし、改めてほんと精進しないと、って思いました。 会場を提供いただいたshibuya dots.さんは8月に出来たスペースとのことで、今までの会場にない、家のような落ち着いた雰囲気の場所でした。写真はテンパってて撮り忘れたのですが、Webサイトをみていただくとわかるかと思います。運営の皆様、ありがとうございました!

Android Best Practices のディレクトリ構成を作れるテンプレート作った

Android Studioでプロジェクトを新規で作る時、テンプレートは何を選択していますか?

テンプレートには自動でNavigation Drawerを生成してくれるものや、最近だと広告をつけてくれるものなど色々ありますが、実際のところ、Add No Activityを選択するか、Blank Activityを選択する人が多いのではないのでしょうか。

テンプレートはプロジェクト作る時に必ず通るのですが、正直あまりイケてると思えないので、今回もうちょっとましなテンプレートを作ってみました。

続きを読む

RealmDBでEndlessListView、あとMVPアーキテクチャ

f:id:tomoima525:20150615172653p:plain:w250
自分の過去のツイートをカレンダーでふりかえることができるTwitCalというツイッタークライアントアプリを作っています。このアプリではデータのキャッシュ、ロードにRealmというモバイル向けDBを利用しています。
Realmは高速なので、Listviewで3000件のデータを表示する場合もほとんどディレイはありません。 ただし、格納されているデータが10000件くらいになった場合に、速度の保証はありませんし、Out of Memoryも心配です。そこで、必要な分だけデータをロードし、下までスクロールしたら追加でデータを取得するようなListViewの実装をこころみました。果たしてRealmでこの実装方法が適切なのかどうか不明なので、Qiitaではなくブログに投下します。

続きを読む

アメリカのチップ払い方についてのtips

f:id:tomoima525:20150517145444j:plain:w400

最近開発ネタよりもアメリカ生活ネタばかりになっていますが、懲りずに生活ネタ書きます。
日本人には馴染みの薄いチップですが、色々わかってきたのでガイドブックには載ってない(あるいは曖昧に書いてある)けどありがちなパターン別にまとめてみました。

続きを読む