私の外部記憶装置

ただの覚え書きです。ちょこちょこ見直して加筆・修正していますが、間違ってるかも😅

【Mac】設定(VSCode)

【目次】

インストール

Installing Visual Studio Code on macOS
Visual Studio Code - The open source AI code editor | Your home for multi-agent development

基本の設定

  • 日本語環境:
    拡張機能で「Japanese Language Pack for VS Code(Microsoft)」をインストール
  • codeコマンド:
    コマンドパレット(shift - cmd - P)でshell commandを入力し、以下の文言をクリック
    「シェル コマンド:PATH内に'code'コマンドをインストールします」
    Installing Visual Studio Code on macOS
  • 最終行を「空行1行」にする:
    設定(cmd - ,)でnew lineを入力し、以下の項目に☑️を入れる
    • Files: Insert Finel Newline
    • Files: Trim Final Newlines

拡張機能

  • ESLint : Microsoft
  • Prettier - Code formatter : Prettier
  • Ruby LSP : Shopify
  • vscode-icons : VSCode Icons Team

【Mac】環境構築(作業記録)

【目次】

macOSの初期設定

  • アプリケーションの実行許可
    システム設定 > プライバシーとセキュリティ > アプリケーションの実行許可 が、「App Store と既知のデベロッパ」であることを確認
  • 隠しファイルの表示設定
    【Mac】隠しファイル・隠しフォルダを表示する方法 #MacOSX - Qiita
    以下のどちらかを行う
    • Finder で shift - cmd - .:可視/不可視の切り替え
    • ターミナルで↓を実行する
      1. defaults write com.apple.finder AppleShowAllFiles TRUE:可視化の設定
      2. killall Finder:Finderの再起動

VS Code

【Mac】設定(VSCode)
(言語のインストールはターミナルをつかうので、後回しでも良い)

Ruby

Rails Girls - Japanese

1. Command Line Tools のインストール

Homebrewのインストールに必要
macOS 用セットアップ < Rails Girls - Japanese
Installing the command-line tools | Apple Developer Documentation

  • インストール:
    xcode-select --install
  • 作業記録(2026年5月):
    • 古いバージョンがインストールされたが、そのまま進めて問題なかった
      インストールされたバージョンの確認方法は↓
      Installing the command-line tools | Apple Developer Documentation
      ちなみに、Homebrewインストール後に、brew doctorを実行すると、『「Command Line Toolsが古い」という警告が出るが気にしなくて良い』というメッセージが出た
    • この段階でgitコマンドは使えるようになったが、後で最新バージョンをインストールする
      git --versionを実行するとgit version バージョン番号 (Apple Git-数字)表示された)

2. Homebrew のインストール

Homebrew — The Missing Package Manager for macOS (or Linux)

  1. 「Install Homebrew」に書かれているコマンドを実行する
  2. インストール後に表示される↓の3つのコマンドを順に実行する
    brewコマンドが使えるように環境変数に登録している)
    1. echo >> /Users/tatsu/.zprofile
    2. echo 'eval "$(/opt/homebrew/bin/brew shellenv zsh)"' >> /Users/tatsu/.zprofile
    3. eval "$(/opt/homebrew/bin/brew shellenv zsh)"
  3. 反映:
    brew update && brew upgrade
    brew updateだけで良さそうだが、念の為)

3. Git のインストール

  1. インストール:
    brew install git
  2. 反映:
    source ~/.zshrc
  3. 確認:
    1. git --version
    2. バージョン番号の後に(Apple Git-数字)が無ければ、たぶんOK
      正確には、git — Homebrew Formulaeに記載の番号と照合する

4. rbenv のインストール

rbenv/rbenv: Manage your app's Ruby environment

  1. インストール:
    1. brew install rbenv
    2. rbenv init
      writing ~/.zprofile: now configured for rbenv.と表示された(2026年5月))
  2. 反映:
    source ~/.zprofile && source ~/.zshrc

5. Ruby のインストール

  1. インストールできるバージョンを確認:
    rbenv install -l
    (最新版が表示されない場合はbrew update && brew upgradeなどを実行)
  2. インストール:
    rbenv install バージョン番号
  3. デフォルトで使うバージョンを指定:
    rbenv global バージョン番号

*Railsのインストールは、プロジェクト毎にBundler(Rubyに同梱)を利用して行う

JavaScript

Node.js のインストール

  1. ↓でインストールするバージョンを確認する
    Node.js — Node.js リリース
  2. ↓に記載の手順で、「nvm」「Node.js」「npm」をインストール
    Node.js — Node.js®をダウンロードする

起潮力と木星距離をグラフで調べられるWebサービス「Tidal Force Plus」をリリースしました

この度、起潮力や木星の影響を調べるためのWebアプリ「Tidal Force Plus」をリリースしました。
この記事では、アプリを紹介し、開発の過程で得た知見や苦労した点を振り返ります。


【目次】


アプリの紹介

アプリの概要

Tidal Force Plus は、地点と期間を指定するだけで「月・太陽による起潮力」と「木星との距離」をグラフ・表で確認できるWebサービスです。
また、ログインするとメモ機能が使えます。

どんな時に使うか

身の回りの出来事で、天体の影響を受けているか気になるものがあれば、データと見比べてみて下さい。
例えば以下のようなもので、何か発見があるかも???

  • 植物の成長のタイミング
  • 農業などの伝承
  • 生き物の行動
  • 釣果

tidal-force-plus.net

アプリの操作方法

地点と期間を入力するだけで、起潮力と木星距離をグラフ・一覧表で確認できます。

  • 地点と期間を入力し、表示更新ボタンをクリックすると、各計算結果の表が更新されます
  • グラフについて
    ①凡例をクリックすると、表示・非表示を切り替えられます
    ②スライダーで、表示期間を調整できます
    ③グラフ(水平方向)は、グラフのタイトルをクリックすると表示されます
  • 表について
    見たい日付は、下部の数字で選択できます
  • メモについて
    ログインすると、計算結果の横に、メモ欄が表示されます
    「メモのタイトル」の編集や、「メモ」に記録を残すには、 をクリックして下さい

背景

開発のきっかけは、「起潮力」や「木星の位置」と生物の関係を調べようとしたことです。
しかし、それらのデータを手軽に確認できるツールが見つからず、本アプリの開発を始めました。

「起潮力」と「木星」について

「起潮力」と「木星」の概略と興味深い点を紹介します。
(Tidal Force Plus の補足説明のページで、もう少し詳しく書いています。)

「起潮力」
  • 起潮力(潮汐力)とは
    起潮力とは、周りの星の重力によって発生する力です。
    地球の場合、「月」「太陽」による起潮力が、潮の満ち引きを起こします。
  • 「実際の潮汐」と「起潮力」の違い
    「実際の潮汐」は、地形、海流、地球の自転などの影響を受けているため、「起潮力」との間にズレがあります。
  • 起潮力の影響
    因果関係は明確ではありませんが、起潮力が生き物に影響している可能性が示唆されています。
    大潮の頃に産卵したり、潮の干満のタイミングに合わせると成長が促進される生物がいるそうです。
    他にも、「植物 新月 満月」で検索すると、農業関連の伝承などが多数出てきます。
「木星」
  • 木星の生き物への影響?
    以前、「釣果」と「木星の周期」に相関があると感じた方が、釣果予測のサイトを作られていました。(現在、そのサイトは見つかりません)
    この「木星の周期」が何を指すのかが明確でないため、本アプリではまずシンプルに「地球との距離」を指標として扱うことにしました。
  • 木星の公転周期は、11.86年です。
    木星が太陽の周りを1周する間に、地球が約12周することになります。
    「木星」と「地球」の位置関係は、時計の「時針」と「分針」のようなイメージです。

開発の振り返り

開発で使用した技術

Railsの標準機能(Hotwire / importmap)を活かし、できるだけシンプルな構成で実装しました。

  • バックエンド
    • Ruby on Rails 8.1
    • Ruby 3.4
  • フロントエンド
    • JavaScript
    • Hotwire
    • Tailwind CSS
  • データベース
    • SQLite
  • インフラ
    • さくらのVPS
    • Kamal
  • 認証
    • devise
    • omniauth
    • omniauth-google-oauth2
    • omniauth-rails_csrf_protection
  • 外部サービス
    • Apache ECharts
    • Google OAuth 2.0
  • CI/CD
    • GitHub Actions
  • テスト
    • Minitest
  • Linter/Formatter
    • Rubocop
    • ERB Lint
    • ESLint
    • Prettier

開発中に苦労したところ

「全部です」と言いたい所ですが、いくつか挙げると下記があります。

  • 「天体の位置計算」と「起潮力の計算」
    「天体の位置計算」「起潮力の計算」ともに初めてで、専門書やサイトを読んで理解する所からのスタートでした。
    「天体の位置計算」については、書いてある式・コードを落とし込めば良かったのですが、「起潮力の計算」については、日時と地点から算出する式を自分で作る必要がありました。数学と物理を思い出しながら、何とか解き方を見出しました😅
  • クライアント側とサーバ側の連携
    クライアント側で「上記の計算」「グラフ・表の表示」、サーバ側では「メモ機能の管理」を行なっており、これらをHotwireで連携しています。連携のタイミングは、「フォーム入力時」と「日付ページネーション操作時」です。
    大変だったのは、「日付ページネーション操作」の部分を作る辺りで、ページネーションの作り方、Stimulus、GhostFormパターンなどなど、調べる範囲が広くて時間がかかりました。
  • ログイン直後の「データベースに無い(日付と対応しない)メモ欄」への対応
    上記の連携を構築した時に、ログイン直後に「データベースに無い(日付と対応しない)メモ欄」が表示され、対応に手間取りました。当初は、別画面を作って(メンバールーティングを追加して)対応していましたが、最終的に、FormObjectパターンを使うことで別画面が不要になりました。

開発中にやってよかったこと

  • 作業や調べ物の「記録・まとめ」
    調べ物の結果や使ったコマンドなどを記録し、「何度も調べる内容」「よく使うコマンド」などは、内容をまとめ、ブログに投稿しました。
    まとめには、それなりに時間がかかりましたが、理解が深まり、その後の作業がスムーズになりました。(ブログ記事数は、以前からの分を含めると100件を超えました😄)
    また、制作の途中で、データベースをPostgreSQLからSQLiteに変更する判断をし、リポジトリを新しく作り直したのですが、その際に記録が役に立ちました。
  • Hotwire、import map、Kamalなどを学習・使用したこと
    Railsの新しい標準技術を学習し、実際に使ったことは、良い経験になったと思います。

今後やりたいこと

  • 使いやすい機能の追加
    使っていく中で、必要な機能を適宜追加したいと思います。
  • 日本以外の地域への拡張
    計算式を拡張すると、世界のどの地点でも計算可能になります。何か面白い発見につながれば嬉しいです。

おわりに

フィヨルドブートキャンプのメンターの皆さんのご指導のおかげで、アプリが何とか形になりました。
また、先人の方々の技術ブログも、大変参考にさせていただきました。
この場を借りてお礼申し上げます。本当にありがとうございました。

おまけ(利用例)

最近、食べた柑橘の種が発芽するか試しているのですが、根っこが出てくるタイミングと、起潮力が大きい時期が重なっているケースが多いような気がしています。(違うケースもあり)
真面目に記録とってなかったので、本アプリを使って調べてみようと思います。

根っこが出ると、ちょっとテンションが上がるので、良かったら試してみて下さい。(湿らせたキッチンペーパーに挟んで、チャック袋や容器などに入れて置いておくと出てきました🌱)

【GitHub Actions】よく使うアクション

【目次】


概要

各アクションの概要と書き方

# 頭の部分
jobs:
  hoge:  # ←jobの識別用。任意の文字列を設定できる
    runs-on: ubuntu-latest
    steps:
      # 以下、下記の各アクションに記載した内容
      - name: ...

actions/checkout

- name: Checkout code
  uses: actions/checkout@v6

ruby/setup-ruby

- name: Set up Ruby
  uses: ruby/setup-ruby@v1
  with:
    ruby-version: .ruby-version
    bundler-cache: true

actions/setup-node

- name: Set up Node
  uses: actions/setup-node@v6
  with:
    node-version: 24
    cache: npm

# 以下、ci.ymlでlintで使う場合の追記内容(lintの範囲を限定した例)
- name: Set up npm
  run: npm ci

- name: Lint app/javascript code for consistent style
  run: npx eslint app/javascript

- name: Check formatting of app/javascript code for consistent style
  run: npx prettier app/javascript --check

webfactory/ssh-agent

- name: Setup SSH
  uses: webfactory/ssh-agent@v0.9.1
  with:
    ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}

【Docker, Kamal,(Rails)】本番環境のDBを確認する

【目次】


手順(CD環境構築後の場合)

  1. ssh -p ポート番号 ユーザ名@ホスト名:SSH接続
    ホスト名:foo-bar-baz.vs.sakura.ne.jpなど。IPv4アドレスも可
  2. sudo docker container ls:「起動中のコンテナ」の一覧を表示
    【Docker】基本のコマンド
    →コンテナIDを確認
  3. sudo docker container exec -it コンテナID bash:起動中のコンテナでbashを起動。終了はexit
    →Railsのコマンドを実行できる
  4. bin/rails db -e production:DBの対話モードを起動
    【SQL,(Rails)】DBの対話モードの操作
    ✅SQLiteでは、-e production無しでもproduction環境だった
    環境の確認は、対話モードで↓を実行
    select * from ar_internal_metadata;
  5. 対話モードでDBの中身を確認
    例:SQLite
    .table:テーブル一覧
    .mode column:表示モードをcolumnに設定(Changing Output Formats < Command Line Shell For SQLite
    select * from users where id < 10;:usersテーブルの中身を表示
    .fullschema --indent:スキーマを表示
    .quit:SQLiteの終了

作業記録(2026年3月)

  • 「production環境のDBリセット(↓)」をやっても、その後のデプロイに問題無かった。
    bin/rails db:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1
  • ローカル環境からSSH接続したまま、デプロイ(GitHub ActionsでのCD。Kamalを利用)すると、エラーになった。
    SSH接続を切って、GitHub Actionsのワークフローを「Re-run」してもエラーだった。
    新しいコミットをデプロイすると問題無く動作した。

手順(Kamal利用・CD環境構築前の場合。🚨動作未確認)

  1. config/deploy.ymlに定義されている↓コマンドを実行
    kamal dbc:DBにアクセス(bin/rails dbconsole
    bin/rails dbconsole < コマンドラインツール - Railsガイド
  2. DB接続後は、↑CD環境構築後と同じ