volpe’s diary

フリーランスじゃなくなったプログラマ volpe が日々便利だなぁと感じたことを中心に綴るブログです

iPad でクラス図をサクサク描ける astah pad を久々に使ってみた

iPad Air を弄っていたら数年前にインストールした astah pad を見つけたので久しぶりに起動してみた。 リビングのソファーでクラス図を このアプリは何と言ってもUXがとても使いやすくてタッチ操作でも直感的にサクサクとクラス図を描けてしまうのが良い。 …

マークダウンのリストから spec の雛形に変換するツールを作ってみた

新しいクラスを追加するときなど、ある程度まとまった spec を書く必要がある場合、どんな感じでテストケースの設計をしているでしょうか? マークダウンを使ったテスト設計 僕はマークダウンエディタ(notionなど)を使って、リスト記法でテストパターンを箇…

Github の PullRequest をコマンドラインで表示出来るようにしてみた

モチベーション フリーランスになって Github のプルリクエスト駆動で開発するようになって、今現在アクティブなプルリクエストのリストをいちいちブラウザを開かなくても手元のシェルで確認したい気持ちが高まってきた。 また、人のプルリクをレビューする…

Rails で migrate 時に実行される SQL を確認する

以前の記事 のように migrate 時に data メソッドを使ってデータ移行しようとした場合に、実際に db:migrate した際に発行される SQL を確認したい。 なぜなら、spec で単体では上手く動いても、まとめて実行した際に意図した動作にならない時にデバッグした…

Rails で DBカラム変更と同時に既存データを移行する

既に本番稼働中のサービスでDBのカラムを変更する場合に、デプロイと同時に既存データを移行しないと整合性が取れない場合がある。 rake タスクとしてデータ移行処理を記述しておいて、本番サーバで実行する方法などもあるけど、 migration_data gem を使う…

毎日18時にPCが重くなる原因が分かった

時々PCが重くなる 毎日自宅でリモートワークしているのだけど、時々PC(MacBookPro 13インチ 2017)がめちゃくちゃ重くなる(ファンが回りっぱなしで、文字入力も遅くなるくらい)ことがある。 Docker とか立ち上げてるし外部ディスプレイにも繋いでいるし、Zoo…

Rails で nested_form に ActiveModel::Base な Formオブジェクトを適用する

rails で nested_form をActiveModel::Base な Formオブジェクト(DBに紐づかない Model)に適用してみたのでメモしておく。 想定するケース 他サービスに可変個のデータを送るため、UIから nested_form を用いてデータを受け取りつつ、DBには保存したくないよ…

Rails で webmock と vcr の環境を作るメモ

Rails で外部Webサービスの API を叩く spec を書く際に、HTTP通信を mock にしたくなったので webmock と vcr を使ってみた。 これらを使うと初回だけリアルな通信をして通信内容をファイルに保持してくれるので、2回目以降はリアルな通信なしに spec を動…

あたらしいこと

新しい技術に触れることはとても楽しい。僕がプログラマだからなのかな。他の職業でもそうなのかな。 日々仕事や趣味で作るプログラムは自分の知っている範囲の知識で「こなしている」ことが多い。特に既にある程度完成されたプロダクトが手元にある時は、機…

Mac 上の Bluetooth ヘッドフォンでテレビ会議を aptX で聴く方法

概要 MacBookProにマイク付きの Bluetoothヘッドフォンを接続した際のデフォルトのコーデック(SCO)ではテレビ会議の音質があまり良くなかったので、マイクを外部機器に変更し、アウトプットのコーデックを aptXで接続するようにした。 これでテレビ会議の音…

WH-1000XM3 でいつでもどこでも精神と時の部屋に

SONY のノイズキャンセリングヘッドフォン「WH-1000XM3」を買ってみたら最高だった。 WH-1000XM3 購入の経緯 2018年の年末あたりに、ビデオ会議用にワイヤレスのイヤホンかヘッドフォンで良いのがないなー、ってなんとなく探していた時に、たまたま実家に帰…

既存の Nuxt.js サービスを新規 Firebase プロジェクトにデプロイする手順

Firebase の Hosting に既にデプロイしている Webサービスを新規プロジェクトにデプロイする必要があったので備忘録として手順をメモしておく。 理由としては、本番と開発で環境を分けたくなったため。 初期設定はこちらに記載している。 Nuxt.js で Firebas…

Glide を試してみた

Twitter を眺めていたら 簡単過ぎる!GoogleスプレッドシートからPWAアプリを開発できる「Glide」を使ってみた! という面白そうな記事を見つけたので早速試してみた。 Google Spreadsheet をデータとしてスマホ用のアプリを簡単に作れるという。 とりあえず…

Nuxt.js + Firebase で画像ファイルアップロードする

Firestorage に画像ファイルをアップロードしたくなったのでやってみる。 やってることは一般的なファイルアップロードの流れと変わらないが、Firestorage にアップロードする処理は store の action として実装している。 まずは view に form を設置する。…

Nuxt.js + Firebase で動的に初期データを追加する

新規ログインしたユーザに対して初期データを追加したい場合がある。 やり方 初期データ登録用のメソッド setDefaultData を store の actions に定義する。 データを表示する page で setDefaultData を呼び出す setDefaultData の定義 setDefaultData では…

Nuxt.js + Firebase で vuexfire を使って Cloud Firestore と連携する(データ参照・更新編)

vuexfire を使ってデータ連携する方法。 データ参照や更新については vuexfire はあまり関係なくて vuex の store と firestore の機能をそのまま使うだけ。 読み出し データの参照としては、vuexfire で Cloud Firestore とデータバインディングすると stor…

Nuxt.js + Firebase で vuexfire を使って Cloud Firestore と連携する(データバインド・階層データ編)

データ間に親子関係がある場合は、子データに親のIDを持たせる方法と、親データのサブコレクションとして子データを持たせる階層データの方法があり得る。 ここでは、後者の階層データをバインドする方法について述べる。 以下のような階層を想定とする。 pr…

Nuxt.js + Firebase で vuexfire を使って Cloud Firestore と連携する(データバインド編)

vuexfire を使ってデータ連携する方法。とりあえずデータバインドの設定まで。 前提 vuexfire 3.0.0-alpha.15 ※ alpha.14 から I/Fが変わっているので注意。まだまだ変わるかも。。 連携方法 基本的には こちら に書いてある方法の通りで動くはず。 ただ、今…

Nuxt.js + Firebase Hosting のクライアントサイドのみで動的ルーティングを行う

Firebase Hosting にクライアントサイドのコードのみ(サーバサイドを未使用)で動的ルーティングを行うにはちょっとしたコツが必要だった。 ※サーバサイドのコードを実行するには Cloud Functions という機能を使えば良さそうだが、ここでは触れない。 動的ル…

vim で Prettier を使えるようにする

Nuxt のプロジェクトで Prettier を使っていて、保存の度にエラーが出るのが面倒なので vim に vim-prettier をインストールして整形できるようにしてみた。 vim-prettier 前提 vim version 8.1 vim のプラグイン管理ツールは Plug を使用 vim-prettier のイ…

Nuxt.js + Firebase で google認証する

Nuxt.js で Firebase の google 認証を実装してみる。 面倒な認証機能がこれほど簡単に実装できるとは! 前提 Firebase の諸々の初期設定は完了していること 参考) Nuxt.js で Firebase と Cloud Firestore を使えるように初期設定を行う ログイン処理の実装…

Nuxt.js で Firebase と Cloud Firestore を使えるように初期設定を行う

Nuxt.js で楽しい Firebase ライフを送るために、Cloud Firestore を使えるよう初期設定を行う。 Firebase の設定 firebase のインストール $ yarn add firebase dotenv のインストール 参考) https://chatboxinc.wordpress.com/2018/03/26/nuxt_js_with_dot…

RailsDM 2019に参加してきた

https://railsdm.github.io/ 現在お仕事として Rails に携わっているせいか、どのお話も単なる知的好奇心というだけではなく、自分ごととして明日から役立てようという気持ちで聞くことができた。 2日とも懇親会に参加出来て何人かの方とお話することが出来…

ブログを再開してみました

2018年に15年ほどやってきた会社員からフリーランスのエンジニアに転身したのをきっかけに、ブログを再開してみようかと思いました。 内容としては日々フリーランスとして活動している中での日常(試した技術や使ってみたガジェットの話など)を気楽に綴ってい…