Amazon Q と対話した
Amazon Q ってなに?
AWS... Amazon が提供している AI アシスタントのこと
分類としては「生成AI」に当たるらしい
英語 or 日本語?
初期状態だと英語を話していた。
英語で「日本語を話せますか」と訊ねたところ、「(英語のほうが意思疎通に不便が無いけど) 話せますよ」といった旨、返答してくれて日本語に切り替わった
やったこと (おねがいしたこと)
お願いしたのはつぎのひとことだけ。
「サンプルの Rails アプリケーションを作成して、Lightsail にデプロイしてください」
とくに成果物とかはここには載せない。
けど、最初から最後まで、「このコマンドを実行したいです、いいですか?」に「はい、だいじょうぶですよ (の意の [y])」と答えるだけだった
セッションを跨いだ作業
作業を任せてる身ではあれど、ニンゲンなので、途中で疲れてきて、作業を中断したくなる
そんなときは次の一言を添える
「これまでの作業と、これからの作業を ~/blog_app/Amazon_Q_tasks.md にまとめてください」
再開するときは察しの通り
「~/blog_app/Amazon_Q_tasks.md を読み取って、残りの作業を再開してください。コマンド実行は許可します。」
任せっきりじゃできない部分
「コマンドを実行したいです」のとき、明示的に CLI エディタを開こうとしているとか、実行結果が暗にそうなっている場合には、結果的に「許可」できなかった。
この場合は次の文言を用いて自分で作業する
「このコマンドはあなたには実行できないので、わたしにやらせてください。どのような内容を編集すれば良いですか?」
(依頼した) 作業を終えて
セッションを跨いだ作業では毎回なにをしたのかまとめてくれたし、作業を終えたときも、「次はこうしたらセキュリティ強化ができていいかもですね」のような提案もしてくれた

蛇足・謎の正解リカバリ
あと、Rails アプリケーションをデプロイする過程で make が走るのだが、そこでサーバの貧弱なスペックだとメモリ不足で止まってしまって、SSH 接続をこちらで中断することになった。
その旨伝えたら、「スワップ領域の設定が必要かもしれません」とエスパーしてくれた
それ知りたい!
なにか自分が知らないこと、知りたいことがあればファイルに保存するようにお願いしてみるといい
「後学のため、swap 領域の追加方法について、 ~/blog_app/doc/add_swap_area.md にまとめておいてほしいです。」
Links
Unison でソースコードを同期する
Unison で双方向同期が出来たのが便利だったのでメモ
※使い方の記録はないので、外部リンク参照のこと
前提例:
- 開発環境として VirtualBox で CentOS 7 系を使っている
- 環境が旧すぎるので、じぶんがつかっている「いつもの環境」に近づけるのが困難、ゲスト OS 側では エディタ環境などの最新版が使えない
- ホスト OS が Windows なので、WSL (Ubuntu) が使える
- OCaml のバージョンが ホスト OS, ゲスト OS で異なる
解決
Unison を使う
同期
VirtualBox 側で git clone してきたプロジェクトを、Unison を使って、WSL (Ubuntu) 側に同期する
(同時編集しない前提なら、 .git ディレクトリも同期できる...!!)
通常使用
エディタは WSL (Ubuntu) 側で「いつもの環境」を構築しソースコードを編集、Unison で VirtualBox 側に転送する
Unison をインストールする際に、ホスト/ゲスト OS 双方の OCaml のバージョンを合せた記憶があるので、必要になったら opam を使うといいかもしれない
環境
例に挙げたような旧い環境と共存している場合、そもそも Unison のインストールはソースコードからビルド・インストールした方がいい場合がある
インストール方法は 公式リポジトリ内に書かれているので、それを参考にされたい
解説?
そのほかの解説は外部リンクに譲る
Links
プラグイン coc.nvim を導入した
プラグインマネージャは dein.vim を使っているので、そこだけインストール方法がちがう
プラグインを羅列している .vimrc のブロックに 1行足す
call dein#add('neoclide/coc.nvim', {'rev': 'release'})
# 依存ライブラリのインストール
bundle install solargraph
Vim を起動したあと、機能有効化のため拡張機能をいくつかインストールする
(Ruby なら solargraph だけで OK)
:CocInstall coc-solargraph :CocInstall coc-json :CocInstall coc-sql :CocInstall coc-css :CocInstall coc-eslint :CocInstall coc-toml :CocInstall coc-tsserver
たとえばクラスのインスタンス化をしたいときなど、必要な引数がすぐに判るようになった!

Links
- 最小限なcoc.nvim導入手順 - sgryjp.log
- neoclide/coc.nvim: Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers. - GitHub
- Setting up coc.nvim for Ruby development | James Newton
- neoclide/coc-solargraph: Solargraph extension for coc.nvim - GitHub
- Using coc extensions · neoclide/coc.nvim Wiki
- dein.vim/doc/dein.txt at master · Shougo/dein.vim
- castwide/solargraph: A Ruby language server. - GitHub
Paiza 問題集「STEP: 4 クラスの継承」に挑戦した
書いたコードは次の通り。
登場人物、クラス分けを意識して書いた
Link
クラス・構造体メニュー Ruby編 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】 : 「クラスの継承」
watch コマンドで設定したコマンドを自動で定期実行する
前提
下記 いずれかを満たしている環境の話 :
やりたいこと・解決したいこと
準備と解決
準備
標準入力テスト用ファイルを用意する
input.txt :
1 3 4 5
最初の一歩として、標準入力を受け取る Ruby コードを書く
main.rb :
input = gets.chomp puts input
解決
watch コマンドを使う
watch コマンドを使うことで、指定したコマンドを自動的に定期実行できる
watch -c -n 2 "ruby main.rb < input.txt"
(意味: 毎回画面表示をクリアして、2秒ごとに、渡されたコマンドを実行する)
おまけ
徐々に Ruby のコードを書いて、完成像に近づける
map で to_i 適用したい
input = gets.chomp.map(&:to_i) # => undefined method `map` for an instance of String (NoMethodError) puts input
split 忘れてた
input = gets.chomp.split.map(&:to_i) puts input # => 3 # 4 # 5
合計値を出したい (完成)
input = gets.chomp.split.map(&:to_i).sum puts input # => 12