2019年9月8日日曜日

TDD+モブプログラミング会に参加してきた(5回目)

今日はTDD+モブプログラミングでワイワイする会 その28に参加してきました。

記録によると約1年前に初めて行き、今回で通算5回行っていることになってます。



社内でも宣伝して、いろんな人を誘って参加しています。
大学の同期だったり、会社の同期だったり。
僕は誰かと一緒に良いものを分かち合いたいという欲求があるみたいです。

今回は「社外の勉強会に参加するのはハードルが高い」というので、@yu12co_mと一緒に行きました。
台風接近という最高の天気ではありましたが、時間の都合で1モブです。

ClojureでFizzBuzz


4名でFizzBuzzを実装しました。もちろんテスト駆動開発で。
選ばれた言語はClojure + Clojure.testなんですが、全員初めて使うというのと関数型というので難易度高めでした。

途中、Core.Matchという模範解答を見つけてしまったので薄目で見ながら実装してました。ただ、使うにはdependencyを書く必要があったのですが、うまく導入できず使いませんでした。まあそんなことせずにforとかifとか使えば手続きっぽく書けそう。

感想としては、
  • Matcherにareが使えてパラメタライズドなテストが書きやすい
  • 出力テストはwith-out-stdみたいなキャプチャがあってやりやすい
  • 関数型チックな書き方がまだしっくりきていない
  • モブじゃなかったら心が折れてた
という感じです。
やはり新しい言語をやるにはモブプログラミングが楽しいですね。

写真は今回使ったプロジェクターです。いろいろ試行錯誤しました。

天井吊なので逆さにしないと使えないというアレ


2019年6月8日土曜日

Android Studioでオフライン時にビルド失敗した

新幹線でAndroidアプリをビルドしたら次のエラーが出た。


Unknown host 'dl.google.com: nodename nor servname provided, or not known'. You may need to adjust the proxy settings in Gradle.
Enable Gradle 'offline mode' and sync project
Learn about configuring HTTP proxies in Gradle


言われている通りGradleをoffline modeにするか。
`Enable Gradle 'offline mode' and sync project`を押してしばらく待つ。
そして再ビルド。

No cached version of io.realm:realm-annotations-processor:5.11.0 available for offline mode.
Disable Gradle 'offline mode' and sync project

え〜。

すると秀策さん(@shumach217)からリプがきた。




というわけで調べてみた。
stack overflowにはこういう記事がある。

The Offline mode does not allow you to completely work offline. Its actually a GOOD cache mode. Whenever you add new dependencies, You HAVE to gradle sync the project, ATLEAST ONCE. Android studio has to download(then cache) the dependencies for the app to work. Once you sync the gradle files, then you can switch to offline mode, and you can work.
オフラインモードで完全に作業することはできません。モジュールを追加した場合、少なくとも1回は依存関係解決のためにgradle syncする必要があります。Android studioはモジュールの依存関係解決のためにダウンロードする必要があり、ダウンロードしたらキャッシュされます。一度Syncしたら、オフラインモードでも動くでしょう。

なるほど。
でも、モジュールを追加したらSyncしたんだけどな。
ビルド時に依存関係を解決しているのかな?

そんなわけで、1度ネットワークに繋いでビルドしました。
その後はオフラインでもオンラインでも動いています。


2019年4月7日日曜日

Flutter入門でiOSとAndroidにアプリをビルドした

Flutterに入門することにしました。

Flutter(フラッター)は、Googleによって開発されたフリーかつオープンソースモバイルアプリケーションフレームワークである。FlutterはAndroidiOS向けのアプリケーションの開発に利用されている。Fuchsiaではアプリケーションの開発は主にFlutterを利用して行われている[4]
2018年12月4日、ロンドンで開催されたFlutter Live '18にて、初の正式版となるFlutter 1.0のリリースが発表された[5]

iOSアプリにするためにはXcodeが必須なので開発機はMacがいいと思います。

セットアップ


Flutterの公式がよくできてるのでスムーズに行くと思います。とはいえ英語なので、Flutterの日本語本もあります。僕は本を使いました。

技術書典にも本が頒布されていますので、Amazonやhontoなどで購入してみるのも手です。



Flutter情報のキャッチアップ


flutter公式Twitterがあります。2週間ごとに更新があるようです。

東京ではFlutter Meetupという勉強会もあります。Twitterもあります。

Flutterの学習


monoさんという方がいくつか方法を示しています。

僕は本 -> 公式チュートリアル -> Udacity、という順番で計画しています。
その後は自分の好きなものを作るようにしようかと。

所感・つまづき


iOSのビルドに慣れなかったので小一時間ひっかかりました。

本にはFeedParserを使えとありましたが、もうないようです。
その代わりにWebFeed使えるようです。
ソースコードにも変更があるので一部載せます。

  void getItem() async {
    Response res = await get(item.link);
    print(item.link);
    dom.Document doc = dom.Document.html(res.body);
    dom.Element hbody = doc.querySelector('.tpcNews_summary');
    dom.Element htitle = doc.querySelector('.tpcNews_title');
    dom.Element newslink = doc.querySelector('.tpcNews_detailLink a');

Yahoo!側のHTMLに変更があるので、合わせてあげるとうまく行きます。

ソースコードは括弧が多いのが気になります。IDEでも気になります。頑張れば減らせるかもしれませんが。

個人開発や小規模な開発ならFlutterが良さそうだと思います。
次期OSのメイン言語になりそうなので今後も期待できそうです。

2019年3月12日火曜日

モビングを言語化する -「モブプログラミング・ベストプラクティス」を読んで


重要なことを先に書くと


モブがやりたい・広めたいなら「モブプログラミング・ベストプラクティス」を読もう。


きっかけ


モブプログラミングを初めてやったのは2018年の5月ごろだったらしい。その時の記憶はもうあまりないけど、けん玉を一生懸命やっている記事だけは残っていました。

あれからもう3回、TDDyyX(カイ)に行ってモブプロとTDDの筋トレを行っています。

あまりに楽しいので、社内で有志を集めてモブプロ会を行ってみました(たぶん今後ブログにポストします)。社内の研修でも参加者をそそのかして行ったこともあります。

ただ、残念ながら僕は仕事でモブプロができていません。モブプロで解決できる問題は溜まっているはずですが、実際にやるにはカタのインストールに時間がかかるし、そのコストをペイできるか分からないからです。

今からどうやって職場で広めていこうか、という時に出会った本が「モブプログラミング・ベストプラクティス」です。

読後感


僕はモブプロを他人に説明する時にうまく話せたことがありません。

なぜモブなのか、なぜ心理的安全性が重要なのか、心理的安全性とは何か、効率的なのか。よく質問にあがりますが、自分の中で言語化できていないためよく話せていませんでした。

そういった疑問を解決し言語化してくれているのがこの本です。
僕はこの本を脇に置きながら友人たちとモブの実験をしていこうと思います。

P.S.


そういえば、この本には「心理的安全性」という言葉はでていなかったような...。
どこが出典なんだろう?


2018年12月21日金曜日

新天地で「キラッとプリ☆チャン」がやりたい人向けのサービスを作った。

はじめに


あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 21日目担当です。

今回は、
新天地で「キラッとプリ☆チャン」をやりたい人向けのサービス、名付けて

ぷれいぷり!


をリリースしましたので、ご紹介します。
https://play-puri.firebaseapp.com/play_cite.html

「キラッとプリ☆チャン」とは


まずは公式を全部よく見てください。

見ました?

大丈夫。小さい女の子向けだけど、大人でもできるから。全国にたくさん筐体があって、ゲームセンターに行けば、みんなプリチャンアイドルになれるから。

で、見ました?

どうやって筐体のある店を探すのか


これが課題で、公式にも一応あります。
しかし、店名と住所だけしかない。けど、いちいち店名や住所をコピペするのは面倒。

ということで、今回はFirebaseで簡単にサービスを作ってみることにしました

サービスの仕組み


FirebaseにはGoogleが提供するアプリケーション向けインフラツールです。
僕には説明することができないぐらい、たくさんの機能があります。

この中からHosting機能とFirebase Realtime Database機能を使いました。

Hosting機能では、静的Web(HTML、CSS、JavaScript)をサポートしていて、専用ツールを使って簡単にサイトをデプロイすることができます。
つまり、Webサイトが簡単に作れるということです。

Firebase Realtime Database機能では、NoSQLで構造データベースを組むことができます。実態はJSON形式のため、手元にJSONデータを作ってしまえば簡単にインポートできます。このDBはWebサイトからJSでデータを取得することができます。
つまり、JSONっぽいDBをJSで操れるということです。

おわりに

今回は、新天地でプリチャンをやりたい人向けのサービス「ぷれいぷり!」をリリースしました。現在は神奈川県だけですが、全国版に向けて拡大する予定です。
また、Firebaseの説明はしませんでした。またどこかでやるかもしれません。

明日はとーばるゆーくんです。お楽しみに。





2018年12月19日水曜日

はじめてphpcon2018に行ってきた

はじめに


あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 19日目担当です。
今日は「はじめてphp conference 2018に行ってきた」話をします。

きっかけ


業務でphpに関わっていたので、トレンドや言語を扱っている人たちの雰囲気に興味を持ちました。カンファレンスでしか聞けない話もありますし、しかも無料(重要)。

ちなみに、phpconはLIVEで見ることができます録画も配信されていますので、この記事を読んで興味を持ったら、ぜひ見てください。
とくに徳丸浩さんの講演は必聴です。

カンファレンスは学生のときに行ったYAPC::Okinawa以来、2回目ですね。

聞いてきた講演と1行感想


スライドはこちらの記事がよくまとめられていました。
僕が聞いてきたのは下の4つ+LT。1行で感想を述べます。

  • Cygamesにおける長期運用タイトルのこれまでとこれから
    • チームへの情報共有は大切。計測グラフ化は人を納得させやすい。
  • 継続的なバージョンアップのためのテスト戦略
    • dockerで安全リリース。テストしない・通知がない・マージ基準がないと保守しなくなる
  • ユニットテストが入れられないレガシーなソースでCIが回せるようになった
    • レガシーはgithub・gitlabのようなホスティングから。そこから文化が変わる。
  • 安全なWebアプリケーションの作り方2018
    • 法律に無関心では大変なことに。xmlよりもjsonを使え。大切な情報は持つな。
  • LT
    • 20代が考えるエンジニアキャリア論
      • 就職や転職による環境変化をどう乗り越えるか。
    • 発表駆動開発を1年間続けてきて
      • 発表は新しい気づきをもたらす。
    • 「クソコード」言い換えの御提案
      • 遺憾(いかん)コード
    • ハニーポットを植えて分析した
      • まず隠しファイルから攻められる。
    • テストコードはいいぞ
      • まずペアプロから始めよう。@t_wadaの例のアレ*1は圧が強い。
    • トウダン・ジャーニー
      • 採用活動、発表練習、ふりかえり、フィードバック。重要。
    • PHP筋肉をつける
      • 車輪の再発明で筋トレ。便利な機能は作ればいい

おわりに


PHP歴は2ヶ月くらいなので、難しくて理解できない話ばかりかと思っていました。しかし、実際はそんなことはなく、丁寧に分かるような講演が多かったです。

会場にはプレゼント付きスタンプラリーや、協賛企業のサービス紹介もあり、かなり楽しめました。次回はphpcon2019。ぜひ行きたいですね。

明日の担当は、にっしーこと@dobuzoraさんです。


補遺


2019年の初めにもカンファレンスがあります。
僕が注目しているのは、


です。(が、もう満杯なので終了後のスライドを期待)
沖縄でもJava Kucheなどありますので、ぜひ飛び込んでみてください。



*1: 例のアレ

2018年12月14日金曜日

2018年で通勤中とか休憩中に聞いたり読んだりして良かったと思うものをあげてみた

のだけど、どうですかね?

はじめに


お久しぶりです。あきおです。
琉大情報工学科(知能情報コース) Advent Calendar 2018 - 14日目担当です。
OBとしての参加です。アドベントカレンダーも初参加です。よろしくお願いします。
サービスの話?なんのことだかわかりませんね。

なんでこの話を?


書くことがなかったのでいい機会なので今年の棚卸しです。また、今年から社会人になり周囲の同期を見渡すと、技術書を読んだり、podcastを聞いたり、という人がいなかったのでオススメする意味も込めています。興味があれば読んだり聞いたりしてください。
あ、何かオススメがあればコメントください。


今年は「理解できるコードを書く」こと「エンジニア職について考える」ことをメインで本を読んでいました。

リーダブルコード
今も読んでいます。処理の分解、ガード節の考え方がとても参考になりました。

リファクタリング
レガシーコードをどうしたらよくできるのか。会社に入ってから、新規にプロダクトコードを書くことが少なくなったので読んでます。あと、改善の前の計測が大切。

Javaで学ぶデザインパターン入門
デザインパターンは勉強していなかったので読んでます。アルゴリズムを覚えるみたいで楽しいです。GoFはもう古めらしく、新しいパターンもあるみたい。

すっきりわかるJava入門 実践編
研修でJavaをやっているときに役立ちました。大学2年次以来です。基礎編もありますが、一度経験しているならこっちからでいいと思います。

実践Scala入門
最近Play Frameworkに手を出していて、Scalaを使ってみたくて読んでます。歴史から描いてくれているので、経緯がわかって良いです。業務ではJavaがデファクトなので、提案して手を出せる言語といえばScalaかなという感じです。

達人プログラマー
1節ごとにある緒言、よくネタがあるなーと思いながら読んでました。

プログラマーが知るべき97のこと
業務で一息つくときに読んでます。97といいつつ100以上ある。

Joel on Software
ブログです。スタックオーバーフローの共同設立者のJoelが書いています。日本語版がありましたのでそちらを。

Martin Fowler's Bliki
ブログWikiです。リファクタリングの著者です。ちなみに誰が日本語に翻訳しているのかなと調べると角さんでした。リーダブルコードとClean Architectureの翻訳者の方です。

ソフトウェア開発者の人生マニュアル
エンジニアってどうやってスキルアップしていけばいいんだろう、と悩んでいたときに読んでいました。後半から経済の話になるのは、なんだか勉強になるような。

SCRUM BOOT CAMP THE BOOK
見積もり方やスクラムの考え方が頭を柔らかくする、気がします。業務ではスクラムやってないので...。

シス管系女子1 ~ 3
コマンドなんだっけ?ってときに読みます。かわいい。

明文術 伝わる日本語の書き方
業務の半分がドキュメントを書くことになったので読みました。辞書として使っています。

ゴブリンスレイヤー 1 ~ 5
メンタルが養えます。

NEW GAME! 1 ~ 8
メンタルを回復できます。

銀河英雄伝説 1 ~ 11
メンタルを増強できます。

プラネテス 1 ~ 4
悩みすぎたときに読む漫画。はからずも、社会風刺的になっていたり。


技術書・ビジネス書大賞というのもあります。ぜひ投票してみましょう。

podcast


Turing Complete FM
低レベル(物理層に近い)な話や与太話が多くて楽しいです。同世代のすごい人が出ていて、はえ〜ってなる。

Rebuild FM
hakさんの寿司ネタが好き。いわずもがな。

しがないラジオ
SEからフリーランスやWeb系に転職した人たちのラジオ。技術書展で買った本は今読んでます。

6 Minute English
駅から社屋まで10分くらいあるのでちょうどいい英語のラジオ。英語って話したり聞いたりしないと錆び付くので良いサビ避け。話の内容もクイズ形式で面白い。

バイリンガルニュース
時事ニュース系。日本語と英語を交互に読んでくれるので好き。ただし、日本語だけ聞いているかも。

虚構新聞ニュース
安心と信頼の虚構新聞です。本当にありがとうございました。

おわりに


なんとか今日中にまにあったはず。
ではまた来週。
明日は黒猫のことを愛してやまない@Intel0tw5727さんです。

追記 : 2018/12/17(月)
@Intel0tw5727さんの記事はこちらです。コメントありがとうございました。