fromScriptToScript

シナリオライターからプログラマーになった人のブログ。要するにずっとスクリプト。

Vue.jsすごすぎて遠隔通信の水晶玉見つけた信長公みたいになった

ドリフターズ、面白いですよね。

知らない人向けにざっくりいうと、ファンタジーの世界に飛ばされた信長が、現地の魔術(=テクノロジー)を空気読まない使い方で使いまくって無双するお話です
※あらすじには諸説あります。 中でも、「石の壁を出現させる」という魔法を悪用して(どう使ったかは漫画読んでください)敵城を陥落させた直後のシーンが大好きなんですよね。
祝勝ムードで他全員が「石壁すげえ」ってなってる中、 何気なく魔術師が水晶玉で遠くの人間と話をしてたことに愕然とするんですよ。信長が。



いや石壁もすごいが、これ(水晶玉)の方がすごいだろ
どう考えても
伝令いらねぇ いや、何より伝達が即で時間差がねぇ
気づいてないのか術士どもは これがとんでもねぇ代物だと
恐らく思考の方向の差だ 奴ら思いもつかんのだ
日々の研究や報告をすぐできる便利な玉としか思っておらんのだ
隔絶した軍に相合の連携を可ならしめん とは思いよらないのだ

(作:平野耕太 『ドリフターズ」3巻より30幕より引用)





技術って使う人や使い方によって与える影響がガラリと変わりますよね。
先日Vue.jsのハンズオン参加してちょっと触って見たんですが、経験の浅く、あまりスキルが高く無い人で溢れる現場を経験してきた僕にとって、このライブラリは特に衝撃的でした。
そういうわけで以下、驚きベースでVue.jsを紹介していこうと思います。

その1:手軽に双方向データバインディング+VirtualDomで動作高速

最近のjsのトレンドは抑えつつ、無茶苦茶手軽に実装ができます。
1週間前に受けたvue.jsのハンズオン講義を思い出しながら情報を調べ(スライドもらいそびれた……)3時間ほどで実際に動くフォームを作ることができました。

isbnを入力するとtitleやauthorフォームの入力が不可になる書籍検索フォーム(isbnチェック付き)

<div id="jqObj">
</div>

<div id="app">
  <form>
    <label>isbn
      <input type="text" name="isbn" v-model="isbn" v-on:input="isbnInput">
      <span v-bind:class="{ caution : isCaution }">残り{{ countIsbnLength() }}文字</span>
    </label>
    <label>title
      <input type="title" name="title" v-model="title" v-bind:disabled="isbnMode">
    </label>
    <label>
      author
      <input type="author" name="author" v-model="author" v-bind:disabled="isbnMode">
    </label>
    <label>publisher_name
      <input type="publisher_name" name="publisherName" v-model="publisherName" v-bind:disabled="isbnMode">
    </label>
    <input type="submit" value="search" v-bind:disabled="submitDisable">
  </form>
</div>
label {
  display: block;
}

.caution {
  color: red;
}
$('#jqObj').html('Friednly jQuery')

var app = new Vue({
  el: '#app',
  data: {
    isbn: '',
    title: '',
    author: '',
    publisherName: '',
    isbnMode: false,
    isCaution:false,
    submitDisable:false
  },

  methods: {
    countIsbnLength: function() {
      return 13 - this.isbn.length
    },
    isbnInput: function() {
      this.isbnMode = !!this.isbn
      this.title = ''
      this.author = ''
      this.publisher_name = ''
      this.isCaution = (this.isbn.length > 13)
      this.submitDisable = !((this.isbn === '') || (this.isbn.length === 13))
    }
  }
});


実際に動くjsFiddleはこちら
完全一致検索ロジックを走らせたいisbn検索を行おうとすると、部分一致検索をしたい他のフォームをロックし入力不可能にし、さらに値を強制的に空白文字にするフォームです。
あと、isbnは13文字しか対応しないので中途半端な桁数だと検索ができなくなります。

ちなみに、うち1時間はhtmlのdisabled属性をstyleと勘違いしてハマっていた ので、jsについては調べながら正味2時間もあればできたんじゃ無いかと思います。この辺り経験の浅さが露呈しますねw なおこのUI、間違えてisbnフォームに値を入力すると、それまでの入力値全てが吹き飛ぶBadUIなのでそのまま使うのはお控えください。フォームの値をメメントに持って置いて、isbnが13桁になる前にフォーカスを外すと文字列が復活するとかにするとよさそうですが力尽きました。ぱたり。あとはisbn消去ボタン欲しい。

その2:jQueryと何も考えずに同居可能

その1のコードにいますよね。jQuery。そうなんです。
Vue.jsはjQueryと同居できる ようにできています。

var app = new Vue({
  el: '#app'
  ......

Vueはelで指定したオブジェクト以外を操作の対象にしないため、それ以外の部分は普通にjQueryが使えます。
ajaxやらアニメーションやらのjQueryの資産はそのままに、「とりあえずVueの方が楽そうなところだけVueでやる」という立ち回りが可能です。 というかそういう運用してる会社さんが実際にあるらしいです。(勉強会で聞きました。連絡先伺ってないので社名とかは控えさせていただきます)


その3:公式ドキュメントが日本語

ReactにせよAngular.jsにせよ、公式ドキュメント、英語ですよね。
なんとVue.jsは公式ドキュメントがもう日本語化されています。

Vue.js

しかも無茶苦茶読みやすい。 リファレンスとしては十分すぎるし、チュートリアルとしての完成度も非常に高いです。
英語残念芸人の自分としてはありがたい限りです。




その4:ES5で書ける

個人的にこれが一番驚きました。上記のコード見ていただければわかる通り、Vue.jsはES5(そのままブラウザで動く昔ながらのjavascript)で書くことができます。 つまり、es2015とか勉強するのがたるい人や、jsはjQueryしか触ったことのない人でもルールさえ覚えれば使うことができます。 thisのバインドいじっている関係でVueオブジェクトの一部ではアローファンクションが使えないという仕様だったり、公式リファレンスの変数宣言がconstじゃなくてvarになっているあたり、戦略的にES6のシンタックスを排除し、学習コストを爆下げしてるんじゃないかなぁと思ってます。


※ちなみにVue.jsはもちろんes2015でも書けます。

まとめ

信長公、曰く。 いやVirtualDomもすごいが、ES5で書けるのがすごいだろ
どう考えても
Nodeいらねぇ 何より公式ドキュメントが日本語で情報に時間差がねぇ
気づいてないのかWEB系エンジニアは これがとんでもねぇ代物だと
恐らく思考の方向の差だ 奴ら思いもつかんのだ
手軽に双方向データバインディングが実現できる便利なライブラリとしか思っておらんのだ
レガシーアプリのフロントに、ジュニアPGによるモダンJSの実装を可ならしめん とは思いよらないのだ




書いてて思いましたが、レガシーアプリの改修してる信長って嫌っすね…… 実際僕の方がVue.jsをちょっといけてるjQuery魔術師サイド説はある。

って、こんなブログ描いてたらReact.jsの案件参画決まりました。まじか! ES5で書けるのが素晴らしい? え? なんのこと?
スクランナーで自動ビルドしながらES2015で書ける方が生産性高いに決まってるヨネー

int定数をナウなヤングにバカウケなEnumにリファクタリング

突然技術記事謎書いてみます。

今、保守してるシステムの定数の持ち方がイケてない。

いけてないこーど

public class Const {
	public static final int STATUS_HOGE = 0;
	public static final int STATUS_HIGE = 1;
	public static final int STATUS_HAGE = 2;
}

典型的なint定数パターンだ。
これを、こんな風にしたい。

いけてるこーど

public enum Const {                                                                                                               
	STATUS_HOGE(0,"こいつほげ"),                                                                                                      
	STATUS_HIGE(1,"こいつひげ"),                                                                                                      
	STATUS_HAGE(2,"こいつはげ");                                                                                                      
                                                                                                                                       
	int dbNum;                                                                                                                         
	String status;                                                                                                                     
	private Const(int dbNum, String status) {                                                                                     
		this.dbNum = dbNum;                                                                                                            
		this.status = status;                                                                                                          
	}                                                                                                                                  
                                                                                                                                       
	@Override                                                                                                                          
	public String toString(){                                                                                                          
		return this.status;                                                                                                            
	}                                                                                                                                  
                                                                                                                                       
	public int toDbNum(){                                                                                                              
		return this.dbNum;                                                                                                             
	}                                                                                                                                  
}

なんでenumのほうがいいのかは、以下のブログでよく説明されてるので、
そっちを見ていただければ。
このブログと違って立派な技術ブログなのでオススメです。

promamo.com

前提条件

  1. IDEは使える
  2. 定数クラスには、アプリケーション内すべての定数が書かれてる
  3. 他のツールは申請面倒すぎて使えない

さてはてどうしたものか。


段階1 あれ、そのままいけるんじゃね?

あんまりがっつり意識してenum使ったことが無かったので気づかなかったのだが、
Static定数とEnum、呼び出し時のシンタックスが一緒。

int定数呼び出し

 Const.STATUS_HOGE;

enum呼び出し

 Const.STATUS_HOGE;
//変更が必要ない!

これこのまま使えるんじゃね?

段階2 無理でした。。。

まあそんなに簡単だったらブログにしないっすよね。

	public void saveData(){
		insertDB(Const.STATUS_HOGE);
	}

	private void insertDB(int const){
                //定数をステータスとしてDBに登録
	}

上みたいなコードがぶっ壊れます。

問題は自分で認識できている点で三つ。

  1. 今までint定数を引数に取ってたメソッドがコンパイル通らなくなる。
  2. 引数の型を無理に直すと、DB登録メソッドが行かれる
  3. 定数の数自体が多く、使われてる個所も膨大。手作業で直すのだるい。しんどい。

解決策

①こんな感じで定数ごとにgrep置き換えをかける
置き換え前:Const.STATUS_HOGE
置き換え後:Const.STATUS_HOGE.toDbNum()

②他のリファクタリングの際に、随時toDbNum()を外す
(条件比較とか)

うーん……めんどくせえ……
突っ込みどころ満載なので、誰かマサカリ投げてください。
ありがちなリファクタリングなので、何か答えあるんじゃないかと。

「shrimp shrinker」はなぜ頓挫したのか

そんなわけで(?)言い訳日記です。

こうなるかなーと思ったけどやっぱりこうなりましたね。
この件に関して、僕のモチベは今やPSVR並みに品切品薄入荷未定です。
このまま放置してこのブログごと忘れるかなーとかも思ったのですが、
最近読んだ本に「プロジェクトの葬式(要するに反省会)をしろ」とか書いてあったので、
ちょっと実践してみます。

反省して開き直って、次に行こうと思います。

 

【原因】

①技術不足
もう少し自分で一からプログラム組めると思ってました。
「erbで帳票デザインして、ファイルクラスで指定のフォルダ内に画像があるかを調べて、リンク張るだけだから余裕だろー」
↑こんな感じに思ってたのですが、いざそれをゼロから書こうとするとしんどいのなんの……

②見通不足
前のブログを見るとわかるのですが、すごいなんとなくで進めてますね。

明確なゴールもなしになぜ完成できると思っていたのか。

しかも広告表示崩れてるしw

もうブログ書くのも嫌だったんでしょうね。この時点で。


③テーマの選択ミス
地味にダメージがでかかったのがこれ。
Rubyとか使えるモダンな現場でエビデンスとることかそんなにないんじゃね?」
とか
「だったらJavaで作ったほうがいいんじゃね?」
とか
「でもプライベートだったらRubyで書きたくない?」
とかとか。


④上記すべてによって発生するモチベーション不足
まあ結局上記すべてがトリガーになって発生したこいつが最大の原因ですね。
元気がないと何にもできないよね。猪木も言ってる。

 

【対策】

そんなわけで以下のようにいろいろやってみます。

Rubyの勉強をする
何はともあれこれ。
締め切りを切らないといつまでもやらないので、2/18にRubyのベンダー試験を予約しました。
特にRubyはアホほど組み込みクラスのメソッドが高機能なので、
こういう試験で基礎体力をつけておくのはなかなか効果的なんじゃないかと思ってます。スクリプト言語最高。

 

②最小機能版をしっかりと定義して、納期を切ってやる

自分のプロジェクトなので仕様書とかがっちり切ってやる必要はないのですが、

「何を」「いつまでに」「どんな形で」作るくらいは決めとかないと、「明日するさ」の繰り返しになって、いつまでも「明日っていつの明日さ!」ってなってしまいます。

 

③自分がほしいものを作る
「他人に見せられる作品がある」というだけで十分自分のキャリアには役に立つので、「あわよくば仕事で使えるものを……」なんて考え持つのはやめてみます。

たぶん前から作ろうとしていた書評管理アプリかな。作るとしたら。
次にやるプロジェクトはrailsで作りたいものを作りたいように作る方針に切り替えます。オブジェクト指向を一応理解している今、rails改めて触ってみれば得られるものも多いんじゃないかと。
先人の偉大なプロダクトにはどんどん頼っていこう。うん。

 

④習慣の力を借りる

最近読んだ本になかなか生かした対策が載ってました。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

なまけもののあなたがうまくいく57の法則 [ 本田直之 ]
価格:626円(税込、送料無料) (2017/1/29時点)


 

曰く、「何かが完成することを目標にするんじゃなくて、何かを継続する習慣を作ることを目標にがんばれ」とのこと。

正直一部項目は意識高杉系の人向けで話半分くらいに読んだ本なのですが、

上記のは言い得て妙だったので早速実践してみます。

 

 

一日何時間も開発する習慣を作るのはハードル高すぎ&強制力なさすぎでどうせやらないので、「習慣を作る練習」として、最近DMMの英会話始めました。

1日30分強制的に英語やらされることになるので、なかなか良い「習慣力」が身につきそうです。グーグル翻訳カメラがローンチされて心が折れそうになったのはナイショ。

 

そんなわけで、次は書評アプリの開発日誌かなぁ……
そろそろ掌編小説とかも書きたいので、そっちの執筆日記とかにするかもしれません。

OSSのCUIアプリをつくろう! 〜第4回〜 準備編その4

2日遅れの先週分更新。。。

 

いろいろ忙しくてあまりPCに触れられてないです。

 

そもそももう少し知識身につけてから作品作ったほうがいいのではないか疑惑が浮上し、

有名な「メタプログラミングRuby」を1から読んでます。

 

<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #000000;background-color:#FFFFFF;width:410px;margin:0px;padding-top:6px;text-align:center;overflow:auto;"><a href="http://hb.afl.rakuten.co.jp/hgc/15461e41.44ef45a6.15461e42.0428f791/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F13433676&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F17648362%2F&scid=af_item_tbl&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiI0MDB4NDAwIiwibmFtIjoxLCJuYW1wIjoiZG93biIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjAsInRhciI6MX0%3D" target="_blank" style="word-wrap:break-word;"  ><img src="http://hbb.afl.rakuten.co.jp/hgb/15461e41.44ef45a6.15461e42.0428f791/?me_id=1213310&item_id=17648362&m=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F7430%2F9784873117430.jpg%3F_ex%3D80x80&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F7430%2F9784873117430.jpg%3F_ex%3D400x400&s=400x400&t=picttext" border="0" style="margin:2px" alt="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]" title="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]"></a><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="http://hb.afl.rakuten.co.jp/hgc/15461e41.44ef45a6.15461e42.0428f791/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F13433676&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F17648362%2F&scid=af_item_tbl&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiI0MDB4NDAwIiwibmFtIjoxLCJuYW1wIjoiZG93biIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjAsInRhciI6MX0%3D" target="_blank" style="word-wrap:break-word;"  >メタプログラミングRuby第2版 [ パオロ・ペロッタ ]</a><br><span >価格:3240円(税込、送料無料)</span> <span style="color:#BBB">(2016/11/8時点)</span></p></div><br><p style="font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>

 

正直結構難しいんですが、Rubyの変態チックな言語仕様(褒め言葉)について、正しい使い方からアンチパターンとその対策までしっかり書かれてるので面白いです。

なにより、メタプログラミングのことを「魔術」と称してドヤ顔し続ける本のスタンスがすごく好きですw

読み物としてむちゃくちゃ質がいいので、飽きずに学習が継続できそうです。

 

あ、わからないところは適宜ネットや「パーフェクトRuby」で調べてます。

<table border="0" cellpadding="0" cellspacing="0"><tr><td><div style="border:1px solid #000000;background-color:#FFFFFF;width:310px;margin:0px;padding-top:6px;text-align:center;overflow:auto;"><a href="http://hb.afl.rakuten.co.jp/hgc/15461e41.44ef45a6.15461e42.0428f791/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F12402942&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F16530547%2F&scid=af_item_tbl&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIzMDB4MzAwIiwibmFtIjoxLCJuYW1wIjoiZG93biIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjAsInRhciI6MX0%3D" target="_blank" style="word-wrap:break-word;"  ><img src="http://hbb.afl.rakuten.co.jp/hgb/15461e41.44ef45a6.15461e42.0428f791/?me_id=1213310&item_id=16530547&m=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F8792%2F9784774158792.jpg%3F_ex%3D80x80&pc=https%3A%2F%2Fthumbnail.image.rakuten.co.jp%2F%400_mall%2Fbook%2Fcabinet%2F8792%2F9784774158792.jpg%3F_ex%3D300x300&s=300x300&t=picttext" border="0" style="margin:2px" alt="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]" title="[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]"></a><p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px;word-wrap:break-word"><a href="http://hb.afl.rakuten.co.jp/hgc/15461e41.44ef45a6.15461e42.0428f791/?pc=http%3A%2F%2Fitem.rakuten.co.jp%2Fbook%2F12402942&m=http%3A%2F%2Fm.rakuten.co.jp%2Fbook%2Fi%2F16530547%2F&scid=af_item_tbl&link_type=picttext&ut=eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJwaWN0dGV4dCIsInNpemUiOiIzMDB4MzAwIiwibmFtIjoxLCJuYW1wIjoiZG93biIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjAsInRhciI6MX0%3D" target="_blank" style="word-wrap:break-word;"  >パーフェクトRuby [ Rubyサポーターズ ]</a><br><span >価格:3456円(税込、送料無料)</span> <span style="color:#BBB">(2016/11/8時点)</span></p></div><br><p style="font-size:12px;line-height:1.4em;margin:5px;word-wrap:break-word"></p></td></tr></table>

 

メタプログラミングRubyを読むための辞書としてパーフェクトRubyを使う的な運用ですね。

と、まあアフィカス丸出しの日記みたいになっちゃいましたが、この二冊はマジで使いやすいのでおすすめです。

あ、Rubyistの方にはすすめるまでもありませんねw

そんなわけで、来週いっぱいまで使って「メタプログラミングRuby」を倒してから制作に入ろうと思ってますので、しばらくアプリには触らなくなるかもしれません。

あと、今週末はエクステラでるからね!

OSSのCUIアプリをつくろう! 〜第3回〜 準備編その3

ディレクトリの構成を適当に考えました。
一応railsとかを参考にして命名規則考えて、なんとなくどんな処理をするのかの筋道は立ちました。

クラス図も書こうと思ったのですが、RubyCUIアプリの作り方についての勉強が足りずにまだ出来てないです……
会社から借りてきてるパーフェクトRubyをもうちょい読み込んでみます。

あと、git作りました。
github.com

ほぼ空ファイルですが、これで出先でも作業ができるように。
モバイルルーター契約してるので、cloud9使うのも視野に入れてみます。


ブログ書く
プログラムを勉強+書く
仕事

の3つを両立させるのはなかなかハードっすね。
もともと休日だらける人なので。

ここ乗り切れれば生活サイクル変わると思うので、どんなに適当でもいいから継続させてみます。

「継続は力なり」という言葉のとおり、物事を継続させるのにはすごいパワーがいるので、
無理はしないようにします。
(多分誤用)

ではではこんなもんで。

OSSのCUIアプリをつくろう! 〜第2回〜 準備編その2

そんなわけで第2回。
飽きる前にとっとと着手。
 

必要な機能(ユースケースの洗い出し)

・xlsxファイルからデータを読み込み、HTMLを出力する
 
コマンドライン引数で、出力HTMLを指定できるようにする(縦書き横書きなど)
 →ヘッダー・本体・フッタの三種類。ヘッダ・フッタは省略可能(でも最初はヘッダフッタ機能はつけない)
 
・HTMLで帳票を作成する
 カラム名&値の出力できる欄をたくさんつくる
 

使う技術 

全体

Ruby(テスト勉強に使ってるバージョン)
SCSS
 

gem

XLSXファイルの読み込み
 →rubyXL
HTML作成
 →ERB(テストに出るやつ使います)
画像ファイル
 
がばがばなので設計しながら漸次追加していきます。
特にgemはかなり増えると思われる。
増えなかったらRubyすごい。
 

今後のフロー

 →ここまで今週中にやりたい
 
  •  シナリオテストの仕様書く
 →テスト仕様書がサンプルとして必要になるプロジェクトなので、
  仕様策定もかねてつくっちゃう。テスト駆動開発ですね(キリッ
 
  • 実装 
  • テスト
  • エビデンスとる(テスト兼ねて)
  • readmeつくる
  • 完成!
 
後のことはあんまり考えないで行くスタイル。
とりあえずクラス図を書く。
PCだと書きづらいので紙ですかね。

OSSのCUIアプリをつくろう! 〜第1回〜 準備編その1

唐突に何をはじめるのか

最近、業務で使っているJavaとは別にRubyの勉強をしている。
基本的にはRubyのベンダー資格であるRuby Association Certified Ruby Programmer SilverとGoldをとろうとシコシコpryで遊んでいるのだが、どうも効率が悪い。
「せっかくだから何か簡単に出来て面白くてためになる(キャリア的にも私生活的にも)ものを作ろう!」
と思い立ったのがことの始まりである。

何を作るか

大体次のようなものを想定している。以下要件定義とも言えないレベルの落書き。

概要

 エビデンスの自動生成アプリ。
 rubyで特定のディレクトリ内の画像ファイル+csvをカタカタッターン読み込むと、
 しゅびびっとHTMLで自動的に印刷対応したイケてる帳票を生成する。
 なんでHTMLで帳票作るのかは以下参考↓
qiita.com
 成果物はgithubにうpして偉大なベテランプログラマーに方々に袋叩きに推敲してもらう。

アプリの目的

日本からエクセルでエビデンスを取る文化を放逐する
いやもう、語ると長くなるんですけどね。
エクセルで画像管理するのが本当に嫌。
エクセル方眼紙文化について詳しく知らない幸せな方はこちら↓を見てください。

Excel方眼紙とスクショペタペタエビデンスのあるシステム開発の現場とは? - Tbpgr Blog

本当に業界の闇だと思う

2016/10/24 20:19

そのうちこれについては個別記事書こうかなーと思ってます。
あとはまあ、完成品をピボットさせるといろいろ使い回しできるんじゃないかと妄想中。

詳細

言語とかライブラリ入りとか

Ruby(2.1.6)の組み込み+添付ライブラリを中心に使います。
といってもhtmlの生成とFileI/Oくらいな気がします。あとCVSの読み込みとディレクトリ操作。
最新の2.3系列じゃないのは試験対策兼ねてる関係。

なぜCUI(コンソールユーザーインターフェース)なのか?

とりあえず使うのは技術者だろうから、GUIにせんでもええやろという考え。

なぜOSSオープンソース・ソフトウェア)にするのか

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

SOFT SKILLS [ ジョン・Z.ソンメズ ]
価格:3024円(税込、送料無料) (2016/10/24時点)


↑この本に「OSSでPGムラに貢献しとくといいよ」って書いてあったから。
むちゃくちゃいい本なので、ぜひこのアフィリエイトリンクから買って読んでみてください。

あとは自分の「逃げ」対策。
基本的に意思薄弱なので、成果物を公開し続けてればある程度はモチベも持つんじゃないかと。ブログもその一環ですな。

タイトル

ろくに仕様も切ってませんが、名称だけはもう決まってます。

ShrimpShrinker
です。
エビ(デンス)を包むシュリンカー(本屋の立ち読み防止用のフィルムを貼る奴)なので。最近職場でエビデンスを「エビ、エビ……」と略して騒ぐおっちゃんが居て思いつきました。ダジャレ。


ルール

  • ポモロードテクニックをしっかり使って生産性を高める。
  • 毎週日曜日に進捗をブログに書く。その際、費やしたポモロード数をカウントして効果測定する。
  • Rubyの学習」が第一目的なので、おまじない(意味もわからないコマンドを叩くこと)をしない。
  • 無理やり続けようとすると続かないので、疲れてる日は休む。戦略的にだらだらやる。

今後の予定

今週日曜日までに周辺仕様の洗い出し+完成までのロードマップ書きます。
あとはgithubリポジトリ作ってわちゃわちゃできてれば目標達成ということで。
上記試験勉強やらその他回してるプロジェクトやらなんやらもあるので、まあ無理のない範囲で。戦略的だらだら。