最近の事を

2017年4月頃からブログを更新していなかったので、最近の調子を書く。
さすがに今日はHHKBからの入力を試しながら。

仕事

  • 新しいプロジェクトについて、技術側の品質責任を任せてもらえそう
  • テスト自動化など、業務システムにどんどんテストコードを混ぜて行きたい

家族

  • もうすぐ息子が2歳を迎える
  • 子どもと2人で出かける事もたまには出来ているが毎週末2人でどっかに行くことは出来ていないのが課題

コード

  • Write Code Everyday
    • 4月末で止まってしまった。GWもほぼかかずに過ごしてしまい、断念。継続できず。
    • また始めようと思い、今日は部屋に机を作った
    • いつものように、南アルプスの天然水のストックを重ねて、上にこたつを載せて完成
  • 最近興味あること
    • Reactビギナーズガイドを買って軽く1周したので、コードを書きながらReact.jsをちょっと試したい
    • 業務では Laravel + Vue.js を使いそうなので、ここもサンプルだけでなく、もう少し深く触りたい
    • できれば、サービスレイヤをおいて実装したいが、このあたりは理解が弱いので手を動かして理解したい
  • 土日はやっぱり手を動かす事が難しくなってきたので、平日に動かすしか方法がなさそうだ。

その他

  • 時間がないとか言っておきながら、ストレス発散目的でXbox One S を買った
  • 久しぶりにHalo をやったり、Just Cause3 というオープンマップのアクションをプレイしたり。あれ、時間あるじゃん。。。

HHKB(US)Type-Sデビュー

一度使って見ようと思い高くて迷ったが購入を決めた。
といっても家では机がないので打つ術がなくMacBookProのキーボードで今は書いている。

2010年頃に一度使って見ようと思いHHKB(JIS) Lite2を購入したが矢印キーがうまく使えず断念。
ここ最近2014年6月くらいからは、東プレRealForce(US)テンキーレスの黒色を使っていたが、
キートップの昇華印字が見づらく、AppleWirelessキーボードに変更していた。

簡単なキーボード歴史

  • 2010/x HHKB(JIS) Lite2 を使ってみるが即断念
  • 特にこだわりがなく、WindowsでJISキー配列のキーボードやノートPCをそのまま利用
  • 2014/3 MacBookPro (US配列) の利用を開始(家でも仕事でも同じMacを使うため、デフォルトがUS配列となる)
  • 2014/6 東プレ
  • 2016/x キータッチがMacBookProと微妙に違うのでAppleWireless キーボードを使い始める
  • 2017/3 なんかキータッチの打ち心地が嫌になってきた(衝撃が強くて小指が痛い)ので東プレに戻る
  • 2017/6 キートップの文字が見づらくなってきた

解決したい事

  • 黒キーボードだと目が疲れてきた時にキートップの文字が見えづらい
    • 記号含め(上段)のキーをすべてブラインドタッチできれば良いが、練習へのモチベーションがゼロ
  • AppleWireless キーボードはすごく使いやすいが、グラつきと、打ってる時の衝撃が指に伝わって右手小指が痛い
  • あまり激しくMacBookProのインナキーボードと差を出したくない(家ではMacBookProを直接使うので)

選択肢

  • 東プレもAppleWirelessも使っているのでHHKBしかない
  • 色は白(無刻印はかっこいいけど、記号が)

懸念点

  • 一度挫折した矢印
    • ExcelでShift + Fn + 矢印割当のキー とか押せるのか?
  • MacBookProとの差異
    • ~ , Delete キーの位置

HHKBを使って解決を期待する事

  • 小指の痛みが改善される。あと、入力時のグラつき
  • 記号入力時のタイプミス(白いキーボードであれば何でも良いが)
  • 東プレより省スペースなのでマウスまでの位置が近い。AppleWirelessとは同じくらいなので変化なし

という事で今後仕事で使う事になるので、
期待値が満たせない・または最高!のような感想は今後追記する。

laradock で開発環境構築

PHP で Docker 環境作る時のコンテナ集というイメージ

laradock.io

作成してみたが、Directory の構成がまだ不明な点があるので追記予定
若干 docker-compose.yml の書き方が変わっている。qiita の情報では、Ver が少し古いのか。

参考リンク

qiita.com

追記

  • MySQL の設定は laravel directory の .env に書く
  • http://localhostURIで見る場合は、laradock/apache2/sites/default.apache.conf を書き換える
    • 忘れず docker-compose build -> up を行う
  • laradock に必要な環境変数は laradock/.env にある。 laravel / laradock がどちらも .env で管理しているので紛らわしい
  • 必要なコンテナだけ立ち上げる ( こんな感じ )
    • docker-compose up -d php-fpm apache2 mysql

Rails / Laravel の埋め込みの違い

忘れるのでメモ

Rails ( Embedded Ruby )

出力なし

<% ... %>

出力あり

<%= ... %>

使い所

<% provide(:hoge, "HOGE" %>

<p><%= yield(:hoge) %></p>

Laravel

出力なし

<?php ... ?>

出力あり

{{ ... }}

使い所

<?php $hoge='hoge' ?>

<p>{{ $hoge }}</p>

調べなくては

Laravel で Rails の provide に当たるヘルパーはないのか?
そもそもモデルで書けと思うところだが。

ライトコートエブリデーる

タイトルで言いたい事はすべて言ってしまっているが、補足も兼ねて今やっている事を。

Write Code Everyday

  • 日々何かしらのコードを書き、Commit する。GitHubに草を生やす
  • 2015年もやっていたが、51days くらいで止まった
    • 当時は妻が実家に帰省していた かつ、子どもに使って欲しいとアプリのコードを書くモチベーションがあった

現在

  • ちょうど 3weeks を超えたところ
  • 少し癖になってきたので、次の(たぶん 3ヶ月)ポイントまでの目標と今考えている事のまとめ

f:id:tbrhdys:20170321145550p:plain

なぜ始めたか

  • こんな事書き始めたら Wantedly みたいだ
  • いろいろな不安と戦う為に前に進んでいる感覚が欲しい
  • 家族との時間を大切にしたいので、週末にまとめて一気に時間を確保するという事を避けたい
  • 前回の51days を超えたい
  • 少しでも新しい事を始めたい
  • 昨年末に参加したBuilderscon の mattn さんの言葉
    • Q いつ時間を作るんですか? A とにかく頑張るしかない
    • Q なぜ頑張るか A 若い人たちに勢いだけは負けたくない
  • 実際にBTCのアプリ(かなり雑な感じだが)は、日々触る事で少しずつ形になった
  • 作りたいアプリはあるが、なかなか自分に言い訳をして進められていない

試したこと

  • BitCoinRails アプリ
  • Electron + Vue.js
  • Vue.js + Laravel のサンプル RSS リーダを触った
  • Vimrc をちょこちょこ

次に書く内容

  • 3ヶ月たってみてどうか?
    • その頃には51days を超えているので、自己最長になっているはず
  • commit の粒度は今と変わっているか?
    • 今はhack的に Readme を書き換える commit をしたり
    • string -> here document に書き換えたり といった事をしている
  • 作りたい、触りたい事を触れるようになっているか?

現時点の反省点

  • 23:00 - 24:00 の間くらいに commit する事が多い
  • 07:00 - 09:00 の出社前に一日の commit を済ませておきたい
    • 夜は飲みが入ったり、疲れて眠ってしまう事もあるので

(11分で書いた。ネタだしはノートに10分。計20分)

BitCoinを自動売買するアプリ

作ろうと思ったきっかけ

  • Ruby / Rails 使ってなんか作りたい(前から思ってる)
  • BitCoin の値動きが気になる (BitFlyer社のアカウントあり)
  • あわよくばドリンクやランチ代くらい稼げないか
  • お金に関わる事だから、飽きずに進められそう

急に2017年2月くらいにBitCoinの自動売買を試してみようと思い、アカウントのあるBitFlyer社のAPI説明ページを読み始める。PHPでかけばもっとサクッと行けたと思うけど、動機の1つにRailsを触るという事があったので、少し調べて実装の繰り返し。

github.com

作った仕組み

  • Batch を毎10分で実行し、ログから"買い時"と判断したら、買いと売り注文を出す
  • Log も毎10分で実行し、過去数時間経過した注文の結果を取得し、結果モデルを作成
  • Result は1日1回実行し、結果を集計し、メールで結果を知らせる
  • Gabage は Heroku の Free プランの上限を超えないよう PostgreSql のレコードを削除する
  • 概要はこんな感じ f:id:tbrhdys:20170320000435j:plain

現在の結果

  • 2017/¾ - 20173/19 時点の結果。
  • 752 戦中 317 勝 435 敗 (金額は少額の取引を行っているので、1000円 - 2000円 くらいマイナスじゃないか)
    • 基本的には1取引 0.01BTC (約1300円〜1450円)で行っている

毎朝届くメール (3/21のresult)

  • 実際は 1/100 で取引しているので、day_sum 35円くらいのイメージ
total_count => 853

day_count => 42

day_sum => 3547.0

day_lose => -6219.0

day_lose_count => 20

day_win => 9766.0

day_win_count => 22

1BTCの値動き

  • 130000 - 145000 くらいの間で動いていた。
  • 3/18 - 3/19 に 大きく動き 119000 くらいまで下がった。

やっていて感じる事、これからやっていきたい事

  • “買い時"の判断材料不足なので、データを解析して、"買い"タイミングの精度をあげていきたい。
    • 以前は毎10分のログで、過去10回の金額が+xxx円だったら買いという風に仕込んでいた。
      • これだと買いのタイミングが遅いと判断したので、過去2回の差額が+50円だと買いにした。
        • この結果、勝ちの数(買った時の金額より、売りの時の金額が高い) が増えた。
        • 買いの件数も増えて、取引量が増えた。
  • データを解析をし、勝ち・負けの精度をあげたい
    • 実際のログと、売買結果の差が起きていないか(以下の勝ち、負けが単純にログを見ただけで分析出来ていない)
      • 買い注文時に、同時に+ / - の子注文を同時に行っている。
      • この時に買い注文より高く売れたら “勝ち” / 低く売れたら"負け" と評価している
  • ソースはただ、スケジュールからバッチを叩いているだけなので、Viewで処理結果などを参照出来るようにしたい
    • Rails というよりは、 ActiveRecord を使った処理を書いただけ。という印象
    • ActiveRecordRails 側から簡単に扱えるので、使っていて楽しい
  • GitHub の Readme にいろいろ追記しなくては
    • ENV

雑感

  • 少額の取引なので、50円くらいの勝ち負けは頻繁に発生しているので、元でを増やしたいという欲を抑えながらやっている
    • FXには走りたくない
  • お金に関わる事で興味が強いのか、飽きずに続けられている
    • 時間はかかっているが、ちょこちょこ実装を進められている
  • まだまだ Ruby / Rails らしからぬコードをたくさん書いているので、お作法を覚えながらやっていきたい
  • 他にも作りたい思いのアプリがあるので、第二弾、第三弾と続けて行きたい(Ruby / Rails 面白い)
  • Google 図形で処理を描いてみたけど、結構ポチポチ時間がかかった。Keynote とかで作った方が速そう。

(この記事は画像作成込みで90分くらいで書いた)

平日のレコーディングワーク

最近はブログに想いというよりは何かのログを書くことが増えているので、 現時点で思っている事を書こうと思う。

2月の頭から朝に時間を作ろうと考え、飲み会を控え、朝に20分、長いときは50分くらいの
時間を設けるようにしている。

会社近くで時間を設けるのは、会社近くで時間を作る事で電車遅延の影響などを受けないようにするためだ。 この記事も朝の出社前に書いている。

なぜ朝に時間を作ろうと思ったか?

最近は週末も12時頃まで眠る事が多い。その理由は、何かしら手を動かしたい、動かさねばという衝動があり、 寝る前にいろいろ触るようにしている。その結果、夜中の2時や3時まで起きてしまい、結果として土日のお昼頃まで寝ている。 息子は大体AM11時頃に散歩に出かけるスタイルなので、一緒に散歩に行くことすら出来ていなかった。

この生活が2016/12 - 2017/1 頃まで続いていたので、自身の中でもこれではいかんと考えるようになった。 2016/12 の時点では、仕事も慣れてくるので2017/1月頃には元に戻るだろうと考えていたが。結果は何も変わらず。

そこで考えたのが、週末に行っている事を平日の内に少しでもアウトプット、インプットを継続して行える習慣を作りたいと考えたから。

実際に試した事

出退勤の時間のような感覚で、家を出る時間、家に帰って来た時間をログとして残すようにした。 0645 出発 2100 帰宅 外出時間 1415 という記録だ。 これが、現時点で3週間分溜まり、今週書けば1ヶ月のログになる。 実際にレコーディングしてみて驚いた事は、外出時間の長さだ。 8時間労働+1時間の休憩で、計9時間しか労働していないはずだが、外出時間が14時間を下回る事は稀で、 飲み会がある日などは17時間という記録もあった。

改善に向けて

15時間を超えるケースは、飲み会(送別会含む)、残業の2点だ。 例えば、定時退社してそのまま家に帰れば一体何時間になるのだろう。 この数字こそが、実際の通勤(往復) + 労働時間 となる。

飲み会に関しては、現在考えている1ヶ月に2回までというルールを継続したい。 今月は、エンジニア(パートナーとなる可能性がある人)との会食1件、月末に同期飲みがある。 残業に関しては、出来る限りしないように、早めに手を打つようにしていく。 来月頭にリリースがあるプロジェクトに関しては、フォーカスを絞り、範囲、担当を明確にする。 忙しい今だからこそ、逆に残業してしまわないように心がける週とする。

次に書きたい事

ここ2ヶ月くらいやっているポモドーロの実践結果
日々のTodo管理表見直し

とあるブロガーを真似て

(この記事は23分で書いた)

追記(ログがたまったので)

  • 意思、想いではなく、事実を事実として捉えて原因追求→次のアクションに落とし込みたい
  • start / end は意図的に描いてない
  • 出勤前に20分から50分くらいの時間を設けているので、往復通勤+勤務時間+休憩時間+朝の時間を入れると、13時間くらいが最短
曜日 時間 理由
13:45
15:40 残業
16:08 残業
14:10
16:45 残業
17:05 飲み送別会
16:40 飲み送別会
13:55
14:10
14:10
14:30
14:00
15:05 本屋に寄った
15:43 残業
16:10 残業
15:07 外食
15:35
13:50 歯医者
14:30
19:25 残業+飲み