旧gaaamiiのブログ

間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

仕事遅い問題

前も書いたなこのお題…。

‪自分の仕事が遅くて仕方ないので、時間とやってることのメモを細かくとるようにしたら、かなり些細なところで長時間つまづいてるのがわかる感じになった。たとえばこういうやつ。

https://twitter.com/gaaamii/status/1019201848014602240

https://twitter.com/gaaamii/status/1019561987510898688

初めからドキュメント読めよって感じなんだけど、つまづいてる時はそのライブラリの使い方が原因ってことに気づいてないのでどうしたもんかという感じ。‬

自分はときどき、疲れてると特に、何となくで動かして挙動見がちなので、何を確認するのかを常に明確にして行動する必要がありそう。あとはエディタの設定やらwebpackのビルド時間とか地味に効きそうな環境改善も必要そう。

入社して2年経ってた

そういえば入社して丸2年経ってた。 この一年は何やってたんだろう。

たぶん、

  • AMP対応
  • WordPress
  • React
  • フロントエンドのテスト
  • Rails
  • Railsアプリにフロントエンドの設定
  • JSのエラー収集ツールの調査と導入

あたりをやってた。あれ、AMP対応はもっと前だっけ…?まあいいや。そのほかにもSQL集計業やらCircleCIの設定やらも地味なタスクをもそもそとやっていた。

直近はひたすらRailsと格闘してる。

3年目も引き続き頑張ります。

アプレンティスシップパターンを読み返した

前に買って本棚にあったんだけど、今読むとなおさら良い本だなと感じる。スキル不足やらキャリアに不安を感じていて、どうしたもんかと頭を抱えている自分のような人にオススメしていきたい。エモい。

この本には、見習いエンジニアにはたいていこういう問題があり、それにはこういう解決策があるというパターンがたくさん載ってる。全てが一対一できれいに解決できるように書かれているわけではなく、たとえば無知をさらすことと、無知と向き合うことのバランスについて触れられていたりして、そうだよな〜難しい〜と実感とともに読めて楽しい。

技芸を身に付けるにはチームの中で1番下手くそになるような環境に入るとよいというようなことも書かれている。そしてそうしたチームの中で、下手くそであるがためにうまく貢献できないときにはどうすりゃいいんだという問題についても、解決策が書かれていたりする。それは学習して成長していることを示したり、細かい面倒なタスクを引き受けることだったりする。

この本を読んで、結局のところ、これだけやれば明日から天才プログラマーになれるというような近道はないし、成長する上でつらいことはあるよなと改めて認識した。自分の好きなことのみ追求する芸術家や専門家ではなく、お客を喜ばせることのできる職人になるには、新しいことを学習したり失敗したりしつつ不安と向き合いながら、成長していく必要がある。

あと、何事もいきなり負荷をかけすぎると壊れる危険がある。そういう意味でも、短期間で急成長とかではなく、長い道のりをじっくりやっていくぞという気持ちにさせてくれて本当に良い本だなと感じた。

Bearが良い

Bearというアプリを、月額150円払って使っています。良いアプリだと思ったので良さを書きます。

書きやすさが良い

書きやすいです。とても気持ちよいです。

Markdownが良い

Markdownで書けます。WYSIWYG Markdown的なやつです。要は左にMarkdownを書いて右にプレビューを表示するような形ではなく、Markdownのテキストを書いてるそばから要素がいいかんじに表示されるような感じの挙動です。

タグが良い

タグ機能が普通に良いです。

Bear内リンク

[[]] って書くとBear内の文書とリンクできます。

デザインが良い

なんか全体的にデザインが良いです。書いているときに見た目崩れてるとテンション下がるので見た目がいいのは嬉しい

何に使えそうか

プライベートなメモ書いたりするのに使えそう。


いつか自分で自分用の最高のメモ帳を完成させたいのでいろいろなメモ帳を触りながらこういう良さを感じていきたい。

今年度仕事以外でやりたいことなど

仕事以外でやりたいことなど。

  • Elm製のMarkdownエディタNekobitoを完成させる
  • くもキャストリニューアル
  • 自分用の本棚管理アプリケーションをRailsで作ってソースを公開する
  • TOEIC900点
  • 健康維持

英語に自然と慣れるの諦めてTOEIC受けるぞ

ソフトウェアエンジニアやってれば英語は読まないといけないし、仕事で英語ドキュメント読んでたらそのうち慣れるだろうという甘い見立てだったんだけど、3年くらい働いてみてあまり英語力向上してないので諦めて英語の勉強をしてTOEIC受ける。英語に自信がないままエンジニア続けるのしんどい。公式ドキュメントさっと読んですっと理解したい。

受験時期

テスト日程|TOEIC Listening & Reading Test|TOEIC Program|IIBCを見てみると、次は5月20日なのでまずはそこを目指してやっていこうと思う。

目標

900超えがネイティブに近い水準とのことなので、そこを目指す。大学のときに受けたときは630だったので1発で900なんて取れる気がしない。900超えるまで何度も受けるつもりでやっていきたい。5/20に受けると結果は6月下旬くらいに届くので、そこで900未満だったら次に申し込める9月の試験に申し込むみたいな。ベンダーIT資格みたいなやつに比べればましだけど、とはいえ一回5725円かかるのでそんな馬鹿みたいに何度も受けられない。早めに900いきたい。

勉強方法

普通にTOEICの熟語集とか問題集買ってちょっとずつやっていく。あとは普段の仕事で出会った知らない単語、熟語、イディオムをちまちまメモしたりもしていきたい。

ねらい

TOEICイコール英語力じゃないだろうというのは全くもって正しいと思うのだけど、ボキャブラリーを増やしたり文章読むスピード上げたり英語聞き取る訓練する機会を強制的に作る意味で良いと思ってる。

余計な小細工をする前に本体の最新バージョンを確認するの大事

Formikというライブラリを使ってフォームのReactコンポーネントを作っていたところ、なんだかおかしな挙動になってしまった。

textarea要素にテキストを入力しても、ボタンが押せるようにならない。

このフォームには、文字数は最低でも1文字以上というバリデーションをかけていて、正当ではないときはボタンを押せないようにしていた。期待しているのは、文字を入力しているときにその正当性がボタンの状態に反映されることだが、どうやらテキストエリアからフォーカスを外さないと、ボタンの状態に反映されないようだった。これは困った。

FormikのREADMEを読むと、validateOnChangeというpropsがあることがわかる。これをtrueにすればいいのか…?と思いきや、これはデフォルトでtrueになっている。関係なさそうだ。試しに明示的にtrueにしてみても、挙動は変わらない。うーむ。

Formikのissue一覧のページで、これを検索してみた。validateOnChangeがうまくいかないと嘆いている人が他にもいればしめたものだ。幸運なことに、こんなissueが見つかった。

答えとなっていたコメントはこれ。

しかしちょっと待ってくれ。フォームとして当たり前の挙動にしたいだけなのに、なんでよくわからん関数で包んであげないといけないんだ!

もう少しissueを眺めていると、こんなものが。

https://github.com/jaredpalmer/formik/issues/353

やはり同じことで困っている。

む、まてよ。

よくみると、こんなプルリクがこのissueを参照している…。

Fix #280. Fix the definition dirty and isValid #365 @justengland

プルリクの中身を見てみると、、どうだろう!!まさしく求めていた変更っぽいものが入ってるではないか!

このプルリクはマージされ、バージョン0.11.0としてリリースされていた。自分が使っていたのは0.10.5だったので、すぐさまバージョンを上げて実行すると…

直ってる!

バリデーションの結果がボタンの見た目に反映されてる!嬉しい!!

——

ということが、今日ありました。些細な例ですが、以下のようなことを学びました。

  • github上で星が多いからといって安定したモジュールだというわけではない
  • 当たり前の挙動を実現するために余計な小細工をする前に、本体が直されていないか(あるいは自分で直してPRを出せないか)確認するの大事
  • だいたいライブラリを使っていて困ったときは自分だけではない

Elm入門者向けハンズオン行ってきた

集合した様子

(懇親会後の写真。ハンズオン参加者はもっと多かった。指の形はElmのEらしい)

やったこと

  • Elmな人の発表を聞いた
  • チャットアプリを実装する課題をやった

自分のツイート

感想

  • Fringe81さんのUniposというプロダクトでElmが採用されているという話に衝撃を受けました
  • Elm今後も書いていこうという気持ちになりました
  • ABABさんにめっちゃ丁寧に教えてもらって感謝してます
  • いきなり実装は難しいという意見はあったけど、座学の時間を長くしたとしても難しいことに変わりはないと思うので、今回のように最低限の説明→実装という形は良かったと個人的には思います(メンター陣がいなかったとしたら厳しそうだけど)。

auやめてLINEモバイルにした

ピザ頼むのより簡単だった。

自分が選んだのはこれ。

https://mobile.line.me/plan/communication-free

3GB、オプションは付けなかったので月額1690円。 自分は出先でほぼツイッターとLINEしか見ないのでこのプランが完璧に合ってると思う。

安いのももちろん嬉しいんだけど、契約情報見るのにいちいち使いづらいアプリやウェブサイトを開く必要がなくなったのが嬉しい。

LINEモバイルの場合は、LINEアプリでLINEモバイルアカウントを友達に追加すると色々確認できるようになってる。

f:id:shgam:20180119202910p:plain

便利。

あと、友だち招待コードみたいなのがあるのでほしい人はツイッターとかで言ってください

Elm Tutorial 読んでる

これ読んでる。

なんか趣味でReduxやろうと思ったけど、せっかく趣味なんだから何か変わったものを触りたいということでElm触ろうとしている。シンプルっぽくてよさそうだけど諸々理解が追いついてない。自分用Markdownエディタ作るところまではなんとか頑張りたい。

ISUCON7予選にくもキャストとして出場して敗退しました

ISUCONに初参加しました。

で発表されている通り、

217位 14,252 くもキャスト

でした。とても悔しい。

メンバー

選んだ参考実装

ルールとかベンチ実行方法の把握

始まってまずよくわからないままベンチ実行してみたらエラーになった。レギュレーション読んだら3台サーバがあって2台はWebサーバー、1台はDBサーバーとのことだったので、ベンチ実行先は1台のWebサーバーに対してでいいんじゃないかってことで1台を決めてそこでずっと作業していた。

やったこと

  • インデックスはる
  • SQL直す
  • Nginxの使い方をぐぐって設定ファイル更新して sudo nginx -s reload

インデックス追加をふるかわくんがやってくれたり、N+1つぶしたら地味にスコアが上がったり、Nginx実践入門に書いてある通りにしてみたらスコアが1万5000点くらいになったりした。Nginxの設定についてはなんかキャッシュすれば速くなるだろうくらいの認識で、各directiveを理解してconfファイルを作ったとは到底言えない。

その他感想

  • とにかく実力不足だった
  • 各年のISUCON過去問や他社の社内ISUCONなどあれば今後も時折漁ってやっていきたい
  • エンジニアやってるはずなのにHTTPサーバとかRDBMSがまだ深く理解できていないので疑問をつぶしていきたい

関連

何か思い出すための通知はすべてTwitter botに任せたい

何か覚えておきたいことがあっても、何かしら強制的に思い出させる仕組みがないと忘れてしまう。興味が薄いことや面倒で忘れたいことほど、その傾向はひどい。

興味があるはずの技術的なことも、普段使わない知識だとせっかく本を読んでも次の日には忘れていたりする。たとえば最近DNSの本を読んだはずなのに、ドメインに関するLTを聴いたときに、Zone ApexのApexってどういう意味?というのがすぐ思い出せなかったりした(ぐぐって「頂点」という意味だったのを思い出した)。立派な記憶力を持つことが目的ではなく、必要なことを必要なときに思い出せる程度でいいので、なにかいい方法はないか。

トイレに貼り紙

考えてみたら、トイレに貼り紙をしておく方法を思い出した。受験勉強や資格勉強のときなどはたいていこれをやって、良い感じだった気がする。しかし、日々の細かい予定やら忘れそうなこと全てを、トイレの貼り紙に詰め込むことは現実的じゃない。代わりに、トイレ的な場所をiPhoneの中に見つければいいのでは、と思った。

Twitter botに任せればよさそう

自分の場合はこれがTwitterだった。トイレの場合は考えるより先に身体がトイレへ行くように促してくるけど、Twitterもどういうわけかそれに近い感覚になってる。Twitterを開くときに、情報が欲しいとか誰かに何かを伝えたいとか、そんなことを考えていない。じゃあTwitter botに予定通知やら思い出したいこと通知を任せればいいのでは。

IFTTTで Google CalendarTwitterを連携

予定であれば、Googleカレンダーに予定を入れて、それをTwitterbotアカウントにツイートさせればいいと思った。IFTTTでその設定ができる。Googleカレンダーの予定が始まったときに@付きのツイートが自分に飛んできていれば、Twitterを開いたときに今自分が何をしているべきなのか気が付く。

f:id:shgam:20170813191703p:plain

そのほかやりたいこと

  • Scrapbox
    • Scrapboxのメモをランダムでとってきて定期的にツイートさせたい。IFTTTで出来ると嬉しいけど今は出来ない。何か作るしかない。
  • RunKeeper
    • 走った記録も自分宛にツイートさせたい

検討したけど諦めた方法

iPhoneのpush通知

一生懸命見ずに通り過ぎてしまうので、あれをちゃんと活用するのは自分の場合無理そう。

メール

メールも流してしまうのでだめ。

なにがしたいのか

「◯◯を管理するアプリ」みたいなのがたくさんあって便利なんだけど、それすらも続けられないダメ人間なので、ジャンキーな情報がだらだら流れるところにその通知を集めれば少しはセルフマネジメント的なことがうまくいくのではないかという試み。