wandabo’s Engineer Blog

プログラミングに関する記事を書いてます(初心者向け)

みんな大好き!「ActiveRecord::ConnectionNotEstablished」「Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 」

f:id:okinawa-wandabo:20210501162720p:plain

概要

ActiveRecord::ConnectionNotEstablished の原因と解決方法の解説

結論

大抵の場合、DBサーバーが起動されてないことが原因

詳細

はい!大抵の人が出くわしたことがあるであろう代表的なエラー ActiveRecord::ConnectionNotEstablished

出たよハイハイ。これね。チャチャっと解決。。。

と行きたいところだけど、いざ解決しようとすると詰まることってあるよね?

頻発するエラーじゃないからこそ再会したときには解決方法忘れちゃってる、、、なーんてことになってたり。

なので簡単に原因と解決方法をおさらい🙋‍♂️

原因と解決方法

まずは原因。「ActiveRecord::ConnectionNotEstablished」は日本語に訳すと「ActiveRecordが接続を確立出来なかったよー」つまり「DBサーバーに接続出来なかったよー」ということ。

DBに接続出来なかった理由は大きく分けて2つ。

  • 接続先が反応しない
  • 接続に必要な情報が誤っている(これは1度解決したらもう出くわさないだろう)

(他にもネット環境が〜、とかあるけど割愛)

ということで、1つ目の可能性を疑うべく、DBサーバーが反応するか確認してみよう!

まずはこのコマンドで確認。

$ mysql.server status
ERROR! MySQL is not running

おう、、やはりDBサーバーが起動していなかった!

MacユーザーのほとんどはHomebrewを使ってMySQLをインストールしているはずなので、まずはbrew info mysqlmysqlに関する情報を確認してみる。

$ brew info mysql
mysql: stable 8.0.23 (bottled)
Open source relational database management system

-------------- (中略) --------------

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

To have launchd start mysql now and restart at login:
  brew services start mysql
Or, if you don't want/need a background service you can just run:
  mysql.server start

-------------- (後略) --------------

こんな感じ🤔 mysqlを起動するには2通りのコマンドがあって、

  • もしPCログインのたびに自動で起動させたかったら brew services start mysql
  • そうじゃなければ mysql.server start

だそうだ。今後同じ問題に直面するのも面倒なので、最初の選択肢にしておこう。

$ brew services start mysql 
==> Successfully started `mysql` (label: homebrew.mxcl.mysql)

下記コマンドで起動できたか確認っと。

$ mysql.server status
SUCCESS! MySQL running (29958)

問題なく起動できた!ということで、ブラウザをリロードすれば先程のエラーは解決しているはずだ🙆‍♂️

【小ネタ】Railsガイドの「Hello, Rails!」が表示されない人へ

f:id:okinawa-wandabo:20210501175555p:plain

概要

Railsガイド通りに進めてもエラーが発生するため、その原因と解決方法を解説。

結論

Railsガイドの説明不足。

詳細

Railsガイド通りに進めようとすると躓くところがある。「Hello, Rails!」が表示されない問題だ!!

エラー文はこのように表示されてないだろうか!? ActiveRecord::NoDatabaseError

Unknown database 'blog_development'

これはつまり「blog_developmentなんてデータベース見つからん」ということ。何故かRailsガイドでは説明がすっ飛ばされているのだが、rails server よりも前に rails db:create をしなければならない。これだけで解決なのだ。

$ rails db:create
Created database 'blog_development'
Created database 'blog_test'

【実務でよく使う】Linuxコマンドとオプション

f:id:okinawa-wandabo:20210426065430p:plain

 

概要

実務でよく使うLinuxコマンドとオプションをまとめてみた。やたらと詳しいものは他の記事に任せて、本記事では実務で多用するコマンドとオプションに絞って紹介する。

 

結論

  • ls
  • cd
  • mkdir
  • touch
  • rm
  • cp
  • less
  • tail 

よく使うコマンドとオプション

VScodeなどのテキストエディタを使っていればCUI操作はそこまで多くないかも知れない。が、そんな中でも割とよく使うコマンドは以下のようなものが挙げられる。コレ以外にもたくさんのコマンドがあるが、各コマンドを覚える際は「何の略か?」を意識すると効率よく覚えられる。

 

ls

list」の略。ファイルおよびディレクトリを一覧表示する。よく使うオプションは「-al」。「-al」オプションは「-a」と「-l」の併用。「-a」でドットファイル(隠しファイル)が表示でき、「-l」で縦並び表示される(※ 権限やファイル数などの詳細情報が表示される)。

$ ls -al

drwxr-xr-x+ 19 wandabo staff 608 4 23 21:55 .
drwxr-xr-x 5 root admin 160 1 1 2020 ..
-rw------- 1 wandabo staff 1179 4 23 01:27 .zsh_history
drwx------ 23 wandabo staff 736 4 23 21:49 .zsh_sessions
-rw-r--r-- 1 wandabo staff 23 4 22 16:00 .zshrc
drwx------+ 8 wandabo staff 256 4 25 02:29 Desktop
drwx------+ 3 wandabo staff 96 4 22 00:39 Documents
drwx------+ 5 wandabo staff 160 4 23 20:55 Downloads
drwx------@ 66 wandabo staff 2112 4 22 10:03 Library
drwx------+ 4 wandabo staff 128 4 22 00:41 Movies
drwx------+ 4 wandabo staff 128 4 23 01:05 Music
drwx------+ 4 wandabo staff 128 4 22 01:54 Pictures
drwxr-xr-x+ 4 wandabo staff 128 4 22 00:39 Public 

 

cd

change directory」の略。ディレクトリを移動する際に使用する。オプションは特に使用しない。※下の例で使用している「pwd」は「print working directory」の略で、現在作業中のディレクトリ(カレントディレクトリと呼ぶ)を表示するコマンド。

$ pwd
/Users/wandabo

$ cd Desktop

$ pwd
/Users/wandabo/Desktop

 

mkdir

make directory」の略。ディレクトリを作成する際に使用する。たまに使うオプションは「-p」。「-p」オプションはディレクトリが存在しない場合に作成してくれる。ディレクトリが存在する場合には警告文を表示しない。

$ mkdir -p ~/Desktop/sample_dir1/sample_dir2/sample_dir3

 

touch

ファイルを作成する際に使用する。オプションは特に使用しない。※ 本来は最終更新日を変更するためのコマンドだということを、この記事を書く際に初めて知った。

$ touch ~/Desktop/sample_file 

 

rm

remove」の略。ファイルやディレクトリを削除する際に使用する。空じゃないディレクトリを削除する際に絶対使うオプションは「-r」。使ったことはないけど、削除前に本当に削除していいかどうか確認を挟みたい場合に付けたほうがよいオプションは「-i」。

$ rm -f ~/Desktop/sample_dir1/sample_dir2/sample_dir3

 

cp

copy」の略。ファイルを複製する際に使用する。特にオプションは使用しない。

$ cp sample1.txt sample2.txt

 

less

ファイルを1画面ずつ見る際に使用する。特にオプションは使用しない。

$ less sample.txt

 

tail

ファイルの末尾n行を表示する際に使用する。よく使うオプションは「-n」と「-f」。「-n」は末尾からの表示行数を指定できる。「-f」は主にログ監視の際に使うオプションで、内容が更新されたらリアルタイムでその変更内容も表示してくれる。

$ tail -n 30 -f sample.log

 

他にも思い出したら追記していく。 

【今すぐやらなきゃ損!】Twitter API の利用申請手順まとめ

f:id:okinawa-wandabo:20210423205625p:plain

概要

Twitter API の利用申請手順をまとめて解説する。 

 

結論

申請はとてもシンプル。審査通過までは時間が掛かることがあるため、今すぐ利用申請を出すべし。

 

作業手順

まず Twitter Developer にアクセスする。

https://developer.twitter.com/en/apps/ 

 

ここから先は図解中心で。

f:id:okinawa-wandabo:20210423190300p:plain

Create an app」を押す。

 

f:id:okinawa-wandabo:20210423190315p:plain

Apply」を押す。

 

f:id:okinawa-wandabo:20210423190330p:plain

Hobbyist」>「Exploring the API」を選んで「Get started」を押す。

 

f:id:okinawa-wandabo:20210423190344p:plain

必要事項を入力し「Next」を押す。

 

f:id:okinawa-wandabo:20210423190441p:plain

必要事項を英語で入力&選択したら「Next」を押す。 

 

f:id:okinawa-wandabo:20210423190404p:plain

入力した情報に間違いがないか確認し、「Next」を押す。

 

f:id:okinawa-wandabo:20210423190516p:plain

同意にチェックを入れて「Submit application」を押す。

 

f:id:okinawa-wandabo:20210423203837p:plain

すると確認メールが飛んでくるのでメールを確認する。

 

f:id:okinawa-wandabo:20210423203853p:plain

Confirm your email」を押すとブラウザのタブが開く。

 

f:id:okinawa-wandabo:20210423203906p:plain

メール確認が完了したので審査完了までお待ちください」ということなので画面を閉じる。あとは審査が完了するのを待つばかり。

 

噂によると審査完了まで1ヶ月ほど掛かることもあるらしいので、申請はなるべく早めに行うべき。

 

2021.04.25 追記

なんと1日で申請が通った🎉 気長に待つつもりがまさかの嬉しいサプライズ✨

f:id:okinawa-wandabo:20210425023355p:plain

 

ただ、最初の申請内容に不備があった。メールでその旨連絡をいただき、不足していた情報をそのメールに返信する、というやり取りを3往復ほどした。なので最初から申請内容をガチガチに固めるのではなく、まずは申請する程度の心持ちがよい。

 

参考記事

参考にさせていただいた記事はコチラです😊 ありがとうございました✨

tech-lab.sios.jp

www.itti.jp

【絶対に失敗しない】Macで環境構築(Ruby)

f:id:okinawa-wandabo:20210422110109j:plain

概要

Macでプログラミング出来る環境を整える。(Ruby

 

結論

  • Homebrewのインストール
  • rbenvのインストール
  • Rubyのインストール
  • bundlerのインストール

これで環境構築は完了🎉

 

作業手順

Homebrewのインストール

Homebrewではアップル(またはあなたのLinuxシステム)が提供していないあなたの必要なものをインストールできます。

:: Homebrew公式より引用

つまりHomebrewは、Macに標準では準備されていない様々な機能(パッケージと呼んだりもする)を使えるようにするためのもの。パッケージを管理するツール、いわゆるパッケージマネージャーである。

 

まずはHomebrewがインストールされているか確認するためにターミナルを起動する。

f:id:okinawa-wandabo:20210421213759p:plain

 

ターミナルが起動出来たら「brew -v」を実行。

$ brew -v
zsh: command not found: brew
zsh: command not found: brew と表示された。和訳すると「brewコマンドが見つからなかった」ということだ。Homebrewはまだインストールされていないことが確認出来たのでインストール作業を進める。
 
初めにHomebrewの公式サイトに記載されているコードをコピーしてくる。

brew.sh

f:id:okinawa-wandabo:20210422114748p:plain

 

公式に書いてある通り、以下のコマンドを実行する。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

f:id:okinawa-wandabo:20210422104943p:plain

するとパスワード入力を求められるので入力する。パスワードはPCログイン時のパスワードと同様。ちなみにパスワード入力中、画面には表示されないので入力出来ているか不安になるが問題ない。打ち間違いに注意。
 

f:id:okinawa-wandabo:20210422105006p:plain

パスワード入力が完了するとたくさんの文字がズラッと並ぶ。最後の一文に「Press RETURN to continue or any other key to abort」と書いてある。「続けるならRETURNキーを、中断するならその他のキーを押してね」ということなのでRETURNキー(Enterキー)を押す。

 

f:id:okinawa-wandabo:20210422105036p:plain

ここで再度パスワード入力を求められるので入力する。
 

f:id:okinawa-wandabo:20210422105100p:plain

しばらくすると「Downloading Command Line Tools」という文字が。Homebrewを使うにはこのコマンドラインツールが必要なため、自動でインストールしてくれている。なんて気が利くやつなんだ。
 

f:id:okinawa-wandabo:20210422105253p:plain

Installation successful!」と表示されている。
 
ターミナルで再度「brew -v」を実行すると、Homebrewのバージョン情報が表示されるのが確認できる。これでHomebrewのインストールは完了🎉
$ brew -v
Homebrew 3.1.3
Homebrew/homebrew-core (git revision 16780d2f41; last commit 2021-04-22)

rbenvのインストール

次に先ほどインストールしたHomebrewを使って「rbenv」をインストールする。「rbenv」は「ruby environment」の略で、複数のrubyバージョンを管理するバージョン管理ツールのこと。

 

ターミナルで「brew install rbenv」を実行。

$ brew install rbenv

 

するとたくさんの文字が表示される。

f:id:okinawa-wandabo:20210422123842p:plain

f:id:okinawa-wandabo:20210422123937p:plain

f:id:okinawa-wandabo:20210422123951p:plain

$ rbenv -v
rbenv 1.1.2

 

次にrbenvの設定をするために「rbenv init」を実行。

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

 

eval "$(rbenv init -)"」を「~/.zshrc」に書き込め、と書いてあるのでその通りにする。

$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc

 

ここまで出来たら変更内容を反映させるために一旦ターミナルを閉じて再度ターミナルを起動する。起動出来たら「curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash」を実行する。

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

※ 改行されているように見えるが1行で実行する。 

 

f:id:okinawa-wandabo:20210422161823p:plain

このように表示されていれば初期設定は問題なく完了している🎊

 

※ rbenvの詳細については公式ドキュメント参照。

github.com

先ほどインストールしたrbenvを使って「Ruby」をインストールする。Rubyにはたくさんのバージョンが存在しているので、まずはインストール可能なバージョンを調べる。

$ rbenv install -L

1.8.5-p52
1.8.5-p113
1.8.5-p114
1.8.5-p115
1.8.5-p231
1.8.6
................ 中略 ...................
truffleruby+graalvm-20.1.0
truffleruby+graalvm-20.2.0
truffleruby+graalvm-20.3.0
truffleruby+graalvm-21.0.0
truffleruby+graalvm-21.1.0

 

…これでもかというほどたくさんある。ちなみにこの中には「開発途中でまだ動作が安定していないものもある」ということに注意。最新の安定版を調べるにはこのサイトが役に立つ。

www.ruby-lang.org

 

現時点での最新安定版は 3.0.1、その前は 2.7.3 であることが分かる。

f:id:okinawa-wandabo:20210422170350p:plain

f:id:okinawa-wandabo:20210422170406p:plain

 

なのでRuby 3.0.1 と 2.7.3 をインストールする。(2つインストールする必要はない)

$ rbenv install 3.0.1

f:id:okinawa-wandabo:20210422175821p:plain

かなり時間が掛かったが、Ruby 3.0.1 インストール完了🎉 続けて 2.7.3 も同様に。
 

$ rbenv install 2.7.3

f:id:okinawa-wandabo:20210422181549p:plain

 

2つともインストール出来たことを確認するために「rbenv versions」実行。

$ rbenv versions
* system (set by /Users/wandabo/.rbenv/version)
2.7.3
3.0.1

system」「2.7.3」「3.0.1」の3つが表示されている。ちなみに「system」は元々Macで使用可能なRubyのこと。今後はrbenvでRubyバージョン管理していくため、「system」は原則使わない。左側に表示されている「✴︎」は現在使用中のバージョンであることを表している。

 

今後、どの環境でもRuby 3.0.1 を使うのであれば「rbenv global 3.0.1」を実行する。もし環境ごとにバージョンを分けたいのであれば「rbenv local 任意のバージョン」を実行する。今回は全環境で 3.0.1 を使うよう設定したいので下記のように実行。

$ rbenv global 3.0.1



無事変更出来ているか確認する。

$ rbenv versions
system
2.7.3
* 3.0.1 (set by /Users/wandabo/.rbenv/version)

 

無事に変更できていた🎉
 

bundlerのインストール

最後に「bundler」をインストールする。まず「bundler -v」でインストールされているか確認。

$ bundler -v
Bundler version 2.2.15

 

インストールされていた😇 もしされていなかったら「gem install bundler」を実行。

$ gem install bundler

 

以上、これでプログラミング(Ruby)の環境が整った。

【Macを快適に!】Macを買ったら必ず行うべき設定3選

f:id:okinawa-wandabo:20210422015438j:plain

概要

Macを快適に使いこなすための初期設定を紹介する。

 

結論

この3つをしておくだけでQOL爆上がり😊✨

 

作業手順

トラックパッドのカスタマイズ

マウスいらずのトラックパッド。このトラックパッドの使い勝手は作業効率にダイレクトに影響するため必ず設定しておく。

 

システム環境設定」>「トラックパッド」の順で選択する。

f:id:okinawa-wandabo:20210421124008p:plain

トラックパッドの設定は下記スクショの通り。

f:id:okinawa-wandabo:20210421021113p:plain

  • 調べる&データ検出」は、言葉の意味や英単語の和訳を調べる際に使う。気になる言葉を3本指でタップすると、その言葉に関する説明がポップアップで表示される。超絶便利。
  • 副ボタンのクリック」は、いわゆる右クリック。様々なメニューを表示する際に使う。2本指でタップすればメニューが開く。クリックはなるべく使わないこと。
  • タップでクリック」は、トラックパッドを押し込まなくても表面をポンと触るだけでクリックと同じ動作をする。トラックパッドを押し込む必要がないから指へのストレスがなく操作もしやすい。また、トラックパッドに与えるダメージも無いため故障しづらいと良いことずくめ。
  • 軌跡の速さ」はマウスの移動スピード。速い方がストレスなく操作できる。自分の好みに応じて設定する。

f:id:okinawa-wandabo:20210420235936p:plain

  • スクロールの方向」はナチュラルがオススメ。
  • 拡大/縮小」するには2本指でピンチする。ピンチとは、2本の指(人差し指と中指)を遠ざけたり近づけたりすること。拡大をするときは2本の指を揃えた状態でトラックパッドに置き、指同士を遠ざける。縮小をするときは2本の指を遠ざけた状態でトラックパッドに置き、指同士を近づける。
  • スマートズーム」は簡単に拡大&縮小をするための設定。2本指を揃えた状態で画面をダブルタップすると、画面が良い感じに拡大してくれる。さらにダブルタップすると元に戻る。
  • 回転」は2本の指を巧みに操り画像等を回転させる際に使用する。

f:id:okinawa-wandabo:20210420235939p:plain

  • ページ間をスワイプ」は必ずチェックを外す。一見便利そうな機能だが、入力画面操作中に誤ってトラックパッドをスワイプしてしまい、前の画面に戻ってしまいまたゼロから入力…なんてことが起こりうる。こんな誤操作を防ぐためにも、ページ間のスワイプはショートカットキーで操作する。
  • フルスクリーンアプリケーション間をスワイプ」は、複数のデスクトップを開いていた場合に、そのデスクトップ間を移動する際に使用する。
  • 通知センター」は正直チェックを入れても入れなくてもどちらでもいい。
  • Mission Control」はそのデスクトップ上で開いている全アプリを閲覧する際に使用する。アプリを開きすぎていて目的のものが見つからない場合などによく使用している。
  • Launchpad」は、小指以外の4本の指をピンチ(近づけるほう)することで、Macの様々なアプリを一覧表示することが出来る。
  • デスクトップを表示」は、Launchpadとは逆に小指以外の4本指をピンチ(近づけるほう)することで、デスクトップを表示することが出来る。何気によく使う。

 

ポインタコントロールのカスタマイズ

システム環境設定」>「アクセシビリティ」の順で選択する。

f:id:okinawa-wandabo:20210421124414p:plain

左のリストから「ポインタコントロール」を選択する。

f:id:okinawa-wandabo:20210421001937p:plain

ダブルクリック間隔の速さは好みに応じて設定。速いほうが個人的にはオススメ。次に「トラックパッドオプション…」を選択する。

f:id:okinawa-wandabo:20210421002137p:plain

スクロールの速さは好みに応じて設定。次に「ドラッグを有効にする」にチェックを入れ、「3本指のドラッグ」を選択し「OK」を押す。この設定をしておくと、トラックパッドを押し込むことが金輪際なくなるからオススメ。

 

キーボードのカスタマイズ

システム環境設定」>「キーボード」の順で選択する。

f:id:okinawa-wandabo:20210421124611p:plain

f:id:okinawa-wandabo:20210421024841p:plain

ここで設定して欲しいのは「キーのリピート」を最速、「リピート入力認識までの時間」を最短にするということ。これだけでカーソル移動や文字削除に関する煩わしさがかなり軽減される。

 

次は「入力ソース」を選択し、左下の「」を押す。

f:id:okinawa-wandabo:20210421125338p:plain

f:id:okinawa-wandabo:20210421125451p:plain

日本語入力出来るようにするため、「日本語」>「日本語 - ローマ字入力」を選択し「追加」を押す。すると先程の入力ソースに「日本語」が追加される。

f:id:okinawa-wandabo:20210421130444p:plain

追加された日本語キーボードを選択し、「英字」にチェックを入れる。

f:id:okinawa-wandabo:20210421130505p:plain

ライブ変換」のチェックは外す。このライブ変換、好き嫌いあるだろうけど個人的には本当に邪魔な機能の1つ。

 

f:id:okinawa-wandabo:20210421130937p:plain

数字を全角入力」もチェックを外す。そもそも数字を全角入力する場面に出くわすことはほとんどない。わざわざこんな設定させないで欲しいくらい邪魔な機能。

f:id:okinawa-wandabo:20210421131338p:plain

最後に「ABC」を選択し、左下の「」を押して英字キーボードを削除する。

 

以上。これで快適なMacbookライフを満喫出来る😊✨

 

最後に

こんな設定もしたほうがいいよー!というアドバイスお待ちしてます🙆‍♂️✨

未経験から2年でフリーランスエンジニアになった『わんだぼ』です😊

f:id:okinawa-wandabo:20210420133540p:plain

 

 

ご挨拶 

初めまして、わんだぼです!

 

今更ですが、自分の知識の棚卸しや復習のためにブログを始めることにしました。

 

文章考えるの苦手やし、タイピング遅いし、大した技術もないから叩かれまくるのちょっとだけ怖いけど、まぁどうせ誰も見てないやろ精神で続けられたらいいなと思ってます!

 

その前に少しだけ自己紹介をします😊

 

簡単な自己紹介

僕は2018年11月からプログラミングを学び始め、完全未経験から約2年でフリーランスエンジニアになり、現在は沖縄を拠点にフルリモート開発しています🌴

 

【リモート】【沖縄】【エンジニア】

 

プログラミングを学び始める前になんとなく憧れてた響きです笑 ですが、別にこうなりたい!と思って頑張ったわけではありません。何となくその場その場で選択していった結果こうなってました😂

 

ちなみに前職はフルコミ不動産営業と現場作業員をしていました。どちらも体力勝負だったので、体の限界が来るのはそう遠くないと感じていたのを覚えてます…。

 

彼女がいたこともあって「何か手に職を付けたい」と考えていたちょうどそのとき、友達からエンジニアを勧められました。

 

その勧めのままに、プログラミングスクール【テックエキスパート(現: テックキャンプ)】に入学することに。賛否ありますが僕は通ってよかったと思ってます✨ そして約3ヶ月の学習と1ヶ月の就職活動を経て受託・SES企業に入社しました🎉

 

とても働きやすい会社でしたが、人数が増えていくに連れ会社特有のルールや制度が追加されていき、それに伴い自分の中での違和感が大きくなっていきました🥺 結局就職から約2年後にフリーランスに転向して今に至ります。

 

このブログの目的

冒頭でも触れましたが、自分の知識の棚卸しが目的です。

 

日々忙しく開発をしていると何となく分かった気になるけど、実は知識が定着していない、ということに気が付きました。

 

その時は調べて分かった気になって実装も問題なく出来るけど、しばらくするとまた同じことを調べてる…というような場面に何度か遭遇し、その度にちょっとだけ落ち込むんですよね😅笑

 

なので知識をしっかり文字としてアウトプットし、理解を深められたらいいなと考えています!

 

内容はかなり初心者向けになると思いますので、同じように完全未経験からエンジニアへの転職を考えている方のお役に立てたらいいなとも思ってます😊

 

質問やコメント、雑談なども大歓迎ですので気軽に絡んでいただけたら嬉しいです♫