Anger Driven Development

備忘録でございます

kanazawa.rb meetup #53

行ってきた

kanazawa.rb meetup #53 - kanazawa.rb | Doorkeeper

やったこと

TDDBCの予習

背景

 最近、仕事で作った社内常駐ツール(WPFアプリ)のリファクタリングをしている。ツールは運用3年目に入っていて、今まで仕様変更や追加を重ねてかなり運用が苦しくなっている。業務上の手続きの概念を扱っており、よく仕様変更される感じだ 。

 当時はリーダブルコードも読んでなかったし、オブジェクト指向も今より理解してなかったし、初めてちゃんとアプリ作ったしで、ひどいコードになっている。一つ機能を加えるとあっちこっちでエラーが起こる、ようなことは無いが、自分で作ったから、影響範囲を覚えていてたまたまうまくいっているだけで、自分以外の人間がこの作業をやると大変なことになると思う。

 この現状をどうにか改善したい。 ということで以下の2つに申し込んだ
toyama-eng.connpass.com

tddbc.connpass.com

で、WPF結合テストについてはBuriKaigiで学んでくるとして、TDDBCでは選択言語JavaScriptで申し込んだ。そこでJavaScript単体テストについて予習した。

学んだこと

大体以下のような雰囲気なのかと。

参考サイト:フロントエンドにテストを導入 - Qiita

サーバ側だけならkarmaはいらないって感じか。

以前試してみたことのあるサイトで、他のサイトの情報を見てみてもだいたいこんな構成がいいみたいだ。

疑問

 ネット上のチュートリアルまではできるんだけど、具体的な開発段階での落とし込みかたがわからない。具体的には、

・テストを書くフェーズ

 TDDだからテスト書いてから開発?それとも最初はスピード重視で、ある程度規模が大きくなってからテスト書き始める?

リファクタリングとテスト

 テストの書かれてないコードをリファクタリングしていくのつらい。こういうときはまずはテストから書けばいいの?

・テストのコスト

 テストを書く人のスキルも必要だけど、保守するのもコストかかりそうだけどどうなんだろ。実際運用してる人の話を聞いてみたい。

 

メモ

・ブログをtextlintで書く

・オレオレUML
・sysML
・safeML

・仕様を決めるための図の仕様

・テストしやすいコード/しにくいコード

 テストしやすいコードとは関数のように入出力が決まっているもの。

 ・Rubyはminitestが良いらしい

 

その他

・HoloLens触らせてもらった。近未来感がよい。

 

参考文献: 

レガシーコード改善ガイド (Object Oriented SELECTION)

レガシーコード改善ガイド (Object Oriented SELECTION)

 

 

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

 

 

 

VisualStudio2015でよく使うショートカットキーまとめ

VisualStudio2015でよく使うショートカットキーをまとめておく

  • 定義に移動 F12
  • すべての参照を検索 Shift+F12
  • 名前の変更 Ctrl+R,Ctrl+R
  • コメント Ctrl+K,Ctrl+C
  • コメント解除 Ctrl+K,Ctrl+U
  • タブの移動 Ctrl+Alt+PgDn/PgUp
  • タブを閉じる Ctrl+F4
  • プロジェクトウィンドウに移動 Ctrl+Alt+L
  • ビルド Ctrl+Shift+B
  • 実行 F5
  • ブレークポイント F9
  • アウトラインの開閉 Ctrl+M,Ctrl+M
  • クイックヒントの表示 Ctrl+K,Ctrl+L
  • 行にジャンプ Ctrl+G

参考:https://msdn.microsoft.com/ja-jp/library/da5kh0wa.aspx

ショートカットキー一覧を眺めてるとVisualStudioで普段使っていない機能に気づけてよい
リファクタリングの機能とか使っていきたい所存

2016年コミュニティ活動の振り返り

今年参加したコミュニティ

2月 NodeSchoolFukui
4月 NodeSchoolFukui
5月 Kanazawa.rb
6月 NodeSchoolFukui
7月 Kanazawa.rb
8月 Kanazawa.rb
9月 Kanazawa.rb
10月 NodeSchoolFukui
11月 Kanazawa.rb
12月 Kanazawa.rb

NodeSchoolFukui

もくもく会 NodeSchoolをモクモクやる。メンターは2人程度。 以下今年NodeScoolでやったやつ

  • javascripting
  • learnyounode
  • how to npm
  • stream adventure
  • Functional JavaScript
  • Planet Proto
  • Tower of Babel
  • Browserify Adventure
  • ExpressWorks

NodeSchool自体はほんとに軽めのチュートリアルって感じで短いものは15分程度で終わるイメージ。 この会は事前にNodeSchoolやっておいて疑問点を聞くとか、自分でNode.jsとかElectronアプリ作ってわからないところをメンターに聞くっていう形式がオススメ。
自分にとって初めての勉強会で、緊張しながら自己紹介のときに「今こんなの読んでます」って技術書を見せたら、他の方が「なになに?どんなの?」って集まってきたのを今でも覚えてる。
これ!こういう雰囲気を求めてたんですよ!笑
自分にとっては初体験としては良いものになった。
普段会社で話さないので、「◯◯流行ってるけどどう?」「◯◯かなりアツいよね!」とか技術のことについて他の人と話せるっていうのはほんとに楽しい。

Kanazawa.rb

もくもく会or定期的にイベント
+
懇親会
誕生してから4年目になるコミュニティ。
以下各回の一言感想

  • 5月 「はじめてのC☆I」
    CircleCIのハンズオン しかしその後...テスト書くまでには至らず。。。mochaとかのテストフレームワーク使ってテスト環境作ったりしたけど、実際にテストガッツリ書いたりとかは出来てない。。。(そもそもガッツリアプリ作ってない)
    でもテスト駆動開発が実際にどういう風にやるのか体験できた。少なくともテスト駆動開発という概念とCircleCIの使い方は覚えた。テストは来年の課題。

  • 8月 「〜 祝4周年 LT大会 〜」
    人生初LT。技術書の感想。中学生の感想文みたいなLTをぴったり3分で収めた。著者から空リプ来るも日和ってリアクションせず。。。LT、ええな!

  • 9月 「Elastic勉強会 in Kanazawa」
    参加前は名前知ってる程度。事前に情報収集してみるも新しい概念多そうで動かすには至らず。最近社内でデータ分析の機運があるので、Dockerで動かしてみた。社内の動向を見て提案してみる予定。

  • 12月 「年末 LT 大会 & ビアバッシュ!」
    ビアバッシュ楽しい!参加者が多かったのでいろいろな話が聞けた。特にチームや社内の改善の話が自分にとって良かった。自分のネタはAtomのパッケージについて浅い感じで話した。

総評

  • 10/12勉強会に参加した
  • 意外といったやん?
  • そのわりにはアウトプットすくないやん?
  • 強い人が多いけどめげない
  • 過去の自分との絶対評価だいじにしよう
  • 来年はアウトプット意識しよう
  • いろいろあるけど、辛くなったら手を動かそう

2016年読んだ技術系の本

買ったのは去年だけどたまに読み返した。

virtualboxのイメージやNode.jsのパッケージが変更orなくなっていて、そのままやっても動かない事が多い。 ただ、Node.jsでどういうことができるかはこういった本を読めばだいたい掴める。
あとはやることの趣旨を読み取って、最新版のREADME読んだり、代わりのものを探したりして進めていけると思う。 こういう手を動かす系の本は初学時にありがたいと思う。

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA

シングルページWebアプリケーション ―Node.js、MongoDBを活用したJavaScript SPA

これも手を動かす系。SPAをやるにあたって買った。SPAのデータのやり取りの流れを理解する手助けになった。

そもそもHTMLのページどんなデザインがあるんやろ?と思って買った。
レシピページやキャンペーンページのレイアウトを開発者ツールで見るのも手だと思うけど、
なぜこの値を指定するのか?が説明されているので、それを理解しながら進められるのが良かった。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

定期的に読み返す。

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ

仕事で関わることになったDB(SQLServer2000)が辛みの極みで、気持ちを落ち着けるために買った。そうか、あれは別世界の話やったんや。。。

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

ネットワークはなぜつながるのか 第2版 知っておきたいTCP/IP、LAN、光ファイバの基礎知識

学生時代の本が残ってたので、出張中の電車で読んだ。

読んだけど、そもそもウチはエンジニア採用してませんでした(ニッコリ

かいつまんで読んだりもするし、じっくり読んだりもするが、整理してアウトプットするのが圧倒的に足りてないなという感じ。

kanazawa.rb #52に参加した

kanazawa.rb meetup #52

年末LT大会&ビアバッシュ

DMM.com Labさん南町オフィスのフリースペースで行われた。 以前のkanazawa.rbで何度か訪れたことはあったが、相変わらずおしゃれで居心地のいいスペースだった。ああいう雰囲気の場所があると気分転換やリラックスできて話し合いやアイディア出しも捗るんではなかろうか。4枚合わせのモニタほしい。
今回の形式はLT大会で20名以上が参加した。テーマ縛りは無し。参加者もWeb系、組み込み系、SIerなどさまざまな分野の方がいた。

自分の発表

自分の発表としては普段使ってるAtomのパッケージについて話してきた。
AtomのLTだったので、スライドを全画面表示せずに、Atom上で表示させた。具体的には、Marpでスライドを書いてそれをPDFエクスポート。pdf-viewを使いAtom上で見るということをやった。誰にも言わなかったのでとうぜん誰からもツッコミはなかった。

発表の振り返り

反省点としては、少し早口だったのと、plantuml-viewerのデモをもうちょっと見せれたらなと思った。技術レベルではかなりライトな発表で申し訳ないって感じでスライドを作っていたが、Atomの各パッケージを紹介するために、Githubレポジトリを眺めていると、実装や機能面で知らなかった事が多くて、思った以上の学びがあった。 エディタのパッケージは、基本的には導入時にそのパッケージの中の必要な機能だけ調べて、あとはそのまま使い続けるということが多いと思うので、改めてパッケージの機能や実装を見直してみるのは良いと思う。

他の方の発表

社内の開発環境をモダンにしていく話や、社内勉強会を開く話は、自分が考えていること、感じていることと近かったので、非常に参考になったし、ビアバッシュ時に詳しくコツも聞けてよかった。
具体的にはツールの導入順番、参考にした書籍、社内勉強会で人を集める手法などについて話した。前からチェックしてたチーム開発実践入門も話題に出てきたので早く買わねば。
また、フリーランスエンジニアの話、ライフイベントの話、今年買ったものの話、燻製の話、転職の話などどれも非常に楽しく聞けた。
毎回高い技術レベルのLTネタを準備されている方がいて本当にすごいなと思った。
自分もどういった形でコミュニティに貢献するかということを考えていかなければと思う。

ビアバッシュ

ビアバッシュはビールとピザで交流しながら、追加LTを聞いたりした。ピザはドミノ・ピザだったが、最近のピザは配送状況をリアルタイムで表示すると知って驚いた。GoogleMap上の配送アイコンもクリスマス仕様でトナカイになっててクスッときた。
ああいう、ダラダラしながら自分の好きなことやこだわり、最近アツい技術について語る雰囲気がすごい好きだ。
すごくいい体験ができたし、これからも継続していきたいと思う。

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

Ubuntu14.04のGitLabを日本語化する

概要

Ubuntu14.04にいれてるGitLabを日本語化する。

↓日本語化パッチ
github.com
現時点では8.13.3まで対応。ありがたい。

ハマったところと対策

Ubuntu14.04にGCC4.8しか入っておらず、日本語パッチ適用後、プリコンパイルするステップでコケる。

rake aborted!
LoadError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

GCC4.9にするとGLIBCXX_3.4.21が入る。

qiita.com

入れ直したあとにプリコンパイルしたら無事日本語化された

作業ログ
  • 最初に入れてたGitLabは8.13.5
  • 日本語化パッチが対応していないので一回消す
  • 8.13.3入れる
  • パッチ当てようとするも、上記の件でハマる
  • GLIBCXX_3.4.21を簡単に入れる情報がなかなか見つからない
    OSアップグレードとかソースからビルドとか。。。
  • PPAリポジトリ発見

Ubuntu16入れようか迷ったけど無事日本語化できた

Atomのplantuml-viewerが良かった話

概要

仕事でクラス図書く必要があり、プレーンテキストで書けるものは無いかなと探していたところ、いい感じのやつがあったのでメモ。

望み
  • 簡単なUML図をササッと書きたい
  • プレーンテキストで書いてGitで管理したい
  • 図のレイアウト調整とか面倒
  • イメージをエクスポートしたい

すべて満たしていたもの⇣

github.com

これを使えば上記を満たしてUML図が書ける。

もともとPlantUML(http://plantuml.com/)っていうオープンソースプロジェクトがあり、上記Atomプラグインを使うと、それをリアルタイムプレビューしてくれる。良い。

インストール

OS:macOS Sierra 10.12.1
リポジトリのInstallに従ってゆく。

apm install plantuml-viewer

このままだとシーケンス図しか書けない。 ほかの図(ユースケース図、クラス図、状態遷移図など、種類はPlantUMLのページ参照) も書きたいときは、graphviz(http://www.graphviz.org/)をインストールする必要がある。

brew install graphviz

これで快適にUMLを書ける様になった。
PlantUMLの記述方法は本家URL参照。