#えむけーろぐ

間違った事を書いていたらやさしく教えてください

「TDD challenge」というイベントに参加してきた #mixi_TDD

この1、2週間いろいろイベントがありすぎてブログが現実世界に追いつけていない。。。

はじめに

f:id:mktakuyax:20170818130839j:plain

8月18日(金)に渋谷駅のきれいな方にあるミクシィで開催された、「TDD challenge」というイベントに参加してきたので、その記録を書いておく。

そもそもTDDやペアプログラミングってなんじゃいって人はこのへんどうぞ。(ペアプロのページ開くといきなり「ワークステーション」って出てきて時代を感じる)

テスト駆動開発 - Wikipedia

ペアプログラミング - Wikipedia

TDD challengeとは

connpass.com

今年の新入社員研修で、受講者から大変好評だった「テスト駆動開発研修」のコンテンツを、
「TDD challenge」と称してご提供する特別な1dayワークショップです。
*TDD=test-driven development

テスト/設計について学ぶ機会が少ないものの、今後のサービス開発において役に立つ開発手法です。
現場エンジニア社員の講師・チューターのサポートを受けながら、この夏のスキルアップを目指しましょう!

- 【学生限定】TDD challenge(テスト駆動開発ワークショップ) #1 2018.08.18 - connpass

とのこと。

午前中にテストや設計についての講義を受けた後、軽くTDDとペアプログラミングの実習をして、午後は与えられた3つの課題をガッツリ解いていくという感じだった。

事前アンケートでgit/GitHub等開発ツールの使用経験や、得意なプログラミング言語について聞かれ、それをもとにしていい感じにマッチングされた相手と2人組、"ペア"になって課題をこなしていく。僕は、得意な言語として同じRubyと答えた@_iamkuntaoさんとペアになった。

また、ランチタイムには新卒のエンジニアのみなさんとランチしながらお話をすることができた。(記事TOPの画像はランチタイムに出た釜飯です。激ウマであった。)

開催中のいろいろ

9月4日にも第二弾をやるらしいので、そこに参加する人たちに最大限楽しんでもらうために詳細は書かないでおく。だからまぁ雰囲気だけでも伝わればということでここはひとつ。

イベントのはじめにハッシュタグの案内があったのであいさつツイートくらいはしたけど、その後はツイートしている暇など無いくらい楽しかったし忙しかった。とにかくガリガリとコードを書いていた。

ペアプロは、1台のPCを囲ってやるのではなく、それぞれのPCを使ってやる感じだった。運営側がでかいモニタを用意してくれたので、ドライバ(コード書き担当)になる人が適宜モニタに繋いで、ナビゲータさんがそのモニタを見ていろいろ指示出したりという感じ。モニタはHDMI接続だったけど、USB-Cのアレも運営側で用意してくれてました。

ペアでのソースコードの共有は、ぼくたちはGitHubを使った。

僕らの他にRubyのペアがもう1つか2つくらいあったと思う。あとはPythonとか、Swiftとか、Javaとか、そのへん。C言語のひとたちもいてすごかった。

イベント中はガッツリコード書くし、思考を言葉として、そしてソースコードとしてアウトプットし続けなければならないので、めちゃくちゃ疲れます。前日はよく寝たほうが良い。あとランチタイムのときにコーヒーもらっておくこと。

学んだこととか感想とか

学んだことについてあまり書きすぎると何やったかバレるのでふんわりと箇条書きで。

  • 名前は知っていたしそれっぽいことはやっていたかもしれないもののちゃんとはやっていなかったペアプロを実践できた。
  • ペアプロ中は、ドライバはとにかく自分の脳内を垂れ流しまくると良い。
    (自分自身の思考の整理にもなるし、ナビゲータの助けにもなる)
  • ナビゲータは、「これは指摘したほうが良いかな?」「でも今ノリノリでコード書いてるのにここでゴチャゴチャ言うのもな」とか迷うし、自分がドライバになってから「いやこれ絶対さっき言ってくべきだったわ、、、」となる。
  • テストしやすいコードは、良い設計である。
  • 自分たちが1時間前に書いたコードのテストしやすさに感動し、自画自賛をはじめる。
  • 「今回はTDDしにきたから、やりすぎってくらいテスト書こう」という感じでテスト書いてた。
  • コード書いてる横から「もっとこう書けるんじゃない?」が飛んで来るのは最高。よりよいRubyを知ることができた気がする。
  • HRTの精神ほんとうに大事。今回僕らのペアはそれをちゃんとできていたので、とても楽しくペアプロできたと思う。

おわりに

今回は他チームと競い合うイベントではないので気楽に参加できたし、かといって課題のボリュームや難易度もそこそこにあるのでガッツリコードを書くという体験ができたしで、たいへん良い1日であった。

僕らのペアは開始時点でいい感じに仲良くなって、各種開発ツールの使い方やコードの書き方、開発の進め方の合意も早い段階でとれて、git/GitHubもとりあえずこのイベントをこなすにはまったく困らない程度にお互い使えたので、素早く開発を始めることができた。活発に議論しながらやっていきを発揮できたので非常に楽しかったけど一番前の席だったのでうるさかったと思う。

あとはまぁ、普段フルスタックなフレームワークを使ったプログラミングしかしない人は、フレームワークに依存しないコードの書き方とテストツールのセットアップの方法くらいはおさらいしておくとスムーズでいいと思う。(例えばRails書きさんは、Railsに依存しない、RSpecやMiniTestのセットアップ方法を軽く調べておくと良いと思う。)

第2回もやるらしいので、興味ある方はぜひ参加してみてはどうでしょうか。

connpass.com

golangでAPIサーバ書いてた

先週、8月13日(日)に東京に来て、14日(月)から17日(木)まで、Liaroのお手伝いさんとしてgolangで社内向けツールのAPIサーバを書いていた。もっと早く記事書こうと思ってたけど、土日のオープンキャンパスやらなんやらで忙しかったので今投下しておく。

f:id:mktakuyax:20170817122807j:plain

Liaroは、苫小牧高専の4個上の先輩(ぼくが1年生のときの5年生)であるhanaken_nが作った会社で、まぁだいたい機械学習やらDeep Learningやらをやっている渋谷のミクシィがない側にあるスタートアップだ。

Liaro

やっている事的にはPython一択なのだけど、会社としてPython以外の選択肢もほしかったらしく、「ちょっとgolang試してみたいから社内ツール4日くらいで作ってよ」と言われた。

僕自身も、なんか作るってなったらとりあえずRubyで書くけど、Ruby以外の選択肢は持っておきたいなと思ってgolang入門だけして放置していたところだったので、実際に動くモノを仕事として作る機会が降ってきてさらに小遣い稼ぎにもなってラッキーという感じ。

Webアプリケーションフレームワークとしては、gin-gonic/ginを採用した。net/httpとその他細々したライブラリで頑張る人も多かったけど、某golangやってる知り合いに「WAF何使ってるの」と聞いたところ「ginかecho」と言われたので、なんとなくginにしてみた。書いてみた感想は、Sinatra書いてるときの気持ちと近いなというところか。

ORMは、jinzhu/gormを使った。理由はなんだったかな……忘れたけど、たぶんgolangちゃんとやってなかったときからなんとなく名前は聞いていたからだと思う。そもそもgolangの構造体とORMって相性悪いのではという話を小耳に挟んでいたのだけど、実際そうなのかもと思いつつ……。とはいえ僕はActive Recordしか知らないだけだろと言われればそうな気もする。

golang自体を書いていた感想としては、まぁ、「型つらい」が一番だ。ずっとRuby書いてたんだからそりゃそうだという感じだろう。いつか、型に感謝する日が来るのだろうか。

完成したコードは恐ろしいクソコードになった。マトモにモノ作るの初めてな言語で、しかも期間が4日間しかないんだから仕方ないでしょうという言い訳は一応しておく。4日ぶっつづけて書いた結果、「ここはもっとDRYにできるな」とか、「エラーハンドリングもっとこうすりゃいいじゃん」というところが見えてきたので、これからリファクタリングする。(と思う)

 

今回得た学びというか体験としては、「自分の中でgolangという選択肢が増えた」ということもあるが、それ以上に「golangで一本アプリ作ったぞ」という自信を得たということだ。今回Liaroのお手伝いをしにいくにあたって一番心配だったのが、「僕がgolang書いてて躓いたときに助けを求められる人が社内にいない」ということだった。

ぼくがはじめてLOUPEでRubyを触ってWebアプリケーションを書きはじめたときは、メンター的な頼れる存在がいたし、その他のインターン・バイト先でもメンター的存在がずっといて、そういう存在無しでやっていけるようになったのは僕の中である程度Ruby/Railsかけるぞという自信を持てるようになってからだ。

今回はそうではなくて、マトモにモノを作ったことのない言語で、はじめて触るフレームワーク、そしてすぐ近くに頼れる存在がいないという状況で、クソコードとはいえ一本アプリを作ったということが、自分の中での精神的なブレイクスルーとなったような気がする。

今後もたぶんなんか作るってなったらRuby使うと思うけど、golangという選択肢があるということ、そして新しい言語でいきなりなんかやるということも不可能ではないということを胸に、明日からは某インターンRubyを書きます。

mktakuya先生の次回作にご期待ください!

スレッドフロート型の匿名掲示板

スレッドフロート型の匿名掲示板、いわゆる2chスタイルの掲示板を遊びで作ってみた。といっても1週間くらい前の話だけど。下書きだけ書いて公開するの忘れてた。

f:id:mktakuyax:20170811135447p:plain

f:id:mktakuyax:20170811135501p:plain

f:id:mktakuyax:20170811135513p:plain

f:id:mktakuyax:20170811135529g:plain

まぁ別にサービスとして動かしたいわけでもなく、なんとなく素振り的な意味で作っただけだけど。

身内向けにこっそり公開してみたら後輩(と思われる人物)が早速邪悪なスレ立てをしていた。まぁ数時間だけ動かしてすぐ消したからいいけど、こういうの本当に運用していくとして、誹謗中傷等の対策ってSNSやらなんやらやる人にとっての課題だよなぁ。

一応コンセプトは高専生のための新しい匿名掲示板ということで、ユーザ登録は必須だで誰が書き込んだかも記録されるけどユーザから見たら匿名という感じ。まぁTwitterログインのみだと捨てアカウントなどやられちゃうので、本気でやるんだったら高専のメールアドレスになんらかのトークンを送って本人確認とかやると良いのだろうか。

ひらがなせいかつ への いざない 2017

さいきんは なんとなく むかしの rebuild.fmを きいている。

さっき きいた Nさんはつとうじょうの えぴそーど37で しょうかいされていた 「ひらがなせいかつ への いざない」という きじを よんで いや よんでというか すごく よみづらかったので はんぶんも よんでいないのだけど まぁ おもしろいなと おもったので ぼくも まねしてみる ことにした。

たぶん ねて おきたら わすれて ふつうに かんじを つかっていると おもうけど いつか ぼくや ほかのだれかが このぶろぐを よんだときに このえんとりだけが ひらがなで かかれている という そういう ふしぎなたいけんを してほしいな とか かいてみる てすと。

ちなみに Nさんは ひらがなせいかつ の ためのあい・えむ・いーまで つくったと いうのだから おどろきだ。そのなも hiragany である。

github.com

ちなみに、りーどみーは ふつうに えいごで かいてあって うけた。

いんすとーるすると こんなかんじで うごいてくれる。

うん。つかいづらいでしょ。これ。ゎ。

ちなみに、ゎ。は、くしょうをあらわすらしい。

f:id:mktakuyax:20170807005425g:plain

ひらがなせいかつに にゅうもんしてみて きづいたこととして ぼくは いかに あいふぉーんの よそくへんかんに たよりきっていたか ということが ある。

あいふぉーんは ゆうしゅうな あい・えむ・いーを とうさいしている ので たしょう ふりっくにゅうりょくを みすっても いいかんじに してくれる。たとえば、「ふりっくにゅうりょく」と うちたいのに びみょうに ゆびが ずれて「すりっくにぬうりょく」と うってしまっても そのへんくうきを よんで いいかんじに してくれる。

f:id:mktakuyax:20170807005911p:plain

しかし、ひらがなせいかつしゃ、ひらがにすと は にゅうりょくした ありのままの てきすとを つかうしか ないので よそくへんかんの おんけいを うけることが できない。

この ふりっくにゅうりょくだと ひらがなせいかつつらいもんだい に たいして Nさんは どう たいしょして いるのだろうか。 そもそも もはや ひらがなすら つかっていないの だろうか。というか ふつうに QWERTYきーぼーどで ろーまじうち してるのかな。

さて ここいらで こうはいが りついーとしていた このついーとを しょうかいして ひらがなせいかつにゅうもんも おしまいに するとしよう。

 

FAXとジャイロ操作と老害と

思考のメモ。

ぼくはデジタルネイティブ世代の生意気なワカモノなので、E-Mailで済む所をわざわざFAXでやらせようとする現場を見ると、「2017年にもなってFAXとか、何考えてるの?E-Mailもロクに使えないの?やる気あるの?老害なの?」と反射的に思ってしまう。

一方、ゲーム機に関しては、中学校低学年の時にやっていたPSPで時代が止まっている。アナログスティックでフィールドを駆け回り双剣ラオシャンロンを狩っていたあたりで記憶が止まっている僕にとって、Nintendo Switchのジャイロ操作は正直つらい。マリオカート8 DXに関してはアナログスティックオンリーで操作しているし、スプラトゥーン2も最初はアナログスティックでやるつもりだったけど、後輩にジャイロをオススメされたので頑張ってジャイロでやっているという感じ。

そのうちゲーム機はジャイロで操作するのが当たり前になって、次世代ゲーム機にアナログスティックが搭載されなくなったら、怒る人が出てくるかもしれない。そういう人は、ジャイロ操作が当たり前の新しい世代の人たちから、「20XX年にもなってアナログスティックとか、何考えてるの?ジャイロもロクに使えないの?やる気あるの?老害なの?」と馬鹿にされてしまうかもしれない。

そういうわけで、僕は新しいモノを受け入れる練習として、スプラトゥーン2をやっているのだ。今はランク11ですよろしくお願いします。

スプラトゥーン2買った

イカ買った。

 

今はランク8くらい。

ブキは、プロモデラーMGというやつが今のところのお気に入り。隠れて撃って隠れて撃ってというのがとても楽しい。

一十珍海堂 紋次郎いか 100本入

一十珍海堂 紋次郎いか 100本入

 

 

Apple Watch Series 2のSuicaにチャージしたお金が虚無に消えた時の対処法

appsuica.okbiz.okwave.jp

iPhoneSuica Appから、Apple Watch Series 2へチャージしたのに、チャージした金額がApple Watchに反映されていなかった。チャージ失敗かなと思ったら、カードの請求だけはしっかり来ている。「悪徳企業JR東日本絶対にゆるさん。」と思っていたら、そういう不具合だったらしい。

詳細はリンク先の通りなのだけど、iPhoneApple Watch AppのWalletの欄からSuicaのタブへ移動し、ヘルプモードをONにしたら改善された。