Androidスマホ上でRailsアプリ開発タイムアタック6時間
通勤時間を活用できる趣味を作ろうと思い、「スマホ上でwebアプリ開発のプログラミング」をするようになった。仲間が増えれば嬉しいので、web公開までの流れをまとめて公開する。
全体で約6時間のタイムアタックとなっている。前段の環境構築がメインであり、その後のアプリ開発は削除前提の練習である。
環境構築①|UserLAndの設定(5min)
□UserLAndをAndroidにインストール
□Ubuntuを選択
□service typeはsshとする
※以下2つはどちらもGUIなので、
スマホでは使いづらい
・vnc:
スクリーンをキャプチャし続けて、
変化点を伝送する方式
・xsdl:
画面をどのように描画するかを記述した、
描画コマンドを伝送する方式
Q.全く入力を受け付けなくなったときどうする?
※UserLAnd起動したままAndroidを再起動
した場合などで発生するバグ
A.android上部メニューを引き下げてEXIT
環境構築②|Ubuntuの設定(20min)
□CPUアーキテクチャを確認
→$ uname -m
※Unix NAMEの略
※-mはマシン(ハード)のタイプのみ表示
※aarch64はArm ARCHitecture 64の略で、
一般的にARM64と呼ばれていて、
スマホによく使われる
※一般的なサーバで使われるx86とは
様々な面で互換性が乏しいので要注意
□OSのバージョンの不具合を修正
→①$ sudo apt update
※これでまず最新の修正情報を取得する
②$ sudo apt upgrade
※①で取得した最新修正情報を反映する
※最初はここで15minくらいかかる
※Setting up systemdの途中で
UserLAnd特有の問題により
symlink failedエラーが出るかも
③$ cat /etc/os-release
※末尾の番号が修正前から変わっている
※執筆時はUbuntu 22.04.4 LTS
環境構築③|vimのインストール(1min)
□vimをインストールする
→$ sudo apt install vim
※viもvimも起動するアプリは同じ
※vimはVi IMprovedの略
□vimのバージョン確認
→$ vim --version
※オプション-vは別の意味があるため注意
→Ex実行ファイルも強制的にviで開く
□vimのエンコーディングをutf-8に変更
→①$ vim ~/.vimrc
②iを押してINSERTモードを起動
③:set encoding=utf-8を入力
④Escを押してINSERTモードを解除
⑤:wq→Entrで保存して終了
※「:」はExモードに入るコマンド
※EntrはExモードを完了させるコマンド
※保存せず終了は:q!→Entr
※「!」が強制実行のコマンド
⑥$ exitで再起動
環境構築④|OpenSSHのインストール(3min)
□OpenSSHをインストール
→$ sudo apt install openssh-server
※SSHはSecure SHellの略
※linuxにリモートでログインする機能
※SSH鍵はGitホスティングでも使う
※ホスティング:
サーバ運営しサービスを提供すること
□OpenSSHのバージョン確認
→$ ssh -V
※なぜか大文字の「V」なので注意
※ユーザがインストールする前から、
userlandが使っているsshが反応してしまう
→インストールしたかの確認には使えない
□OpenSSHの初期設定を確認
→$ cat /etc/ssh/sshd_config
※Port 22と出る
Q.なぜポート番号22はすぐ変更すべき?
A.絶えず不正アクセスを受けて、
サーバに負荷がかかるので、
1024以上の2022に設定したい
□SSHのポート番号を2022に変える
→①$ sudo vim /etc/ssh/sshd_config
②iを押してINSERTモードを起動
③#Port 22を#Port 2022に変更
④Escを押してINSERTモードを解除
⑤:wq→Entrで保存して終了
※「:」はExモードに入るコマンド
※EntrはExモードを完了させるコマンド
※保存せず終了は:q!→Entr
※「!」が強制実行のコマンド
⑥$ sudo service ssh restart
※一般的にUbuntu 15.04以降は
sudo systemctl restart sshとすべきだが、
UserLAnd特有の問題でsystemctlが使えない
→Ubuntu 14.10 以前に使われていた
serviceコマンドを使うしかない
環境構築⑤|cURLのインストール(1min)
□cURLのインストール
※HTTPリクエストができる
※シェルスクリプト取得にも使われる
→①$ sudo apt install -y curl
②$ curl -version
③$ curl -I http://www.google.com
※-Iオプションは、
HTTPレスポンスヘッダー情報を取得
※200(正常応答の意味)と出ればOK
※HTTPレスポンスステータスコード
※404(ページが見つからない)が有名
環境構築⑥| Githubの設定(30min)
□Githubアカウントがなければブラウザで作成
□ダミーメールアドレスの取得
→①右上のプロフィール画像を押して
出てくるメニューからSettingsを選択
②Emailsを開く
③Keep my email addresses privateを選択
④表示されるダミーアドレスをメモしておく
□Github用のSSH鍵を作成
→①$ ssh-keygen -t rsa -f ~/.ssh/id_rsa_github
※-tで暗号のアルゴリズムを指定
※最近はrsaよりed25519が良いらしい
※-fがないと、途中でEnter file...と出る
→デフォルトファイル名が()内に
~/.ssh/id_rsaと記載されているので、
Enterだけ入力するとデフォルトの通り
鍵ファイルが出力される
②Enter passphrase…と出たら何か入力する
※あとで使うから覚えておくこと
※同じのを2回入力する
③$ ls ~/.ssh
※id_rsa_githubとid_rsa_github.pubがある
□SSH秘密鍵のパーミッションを確認
→①$ ls -l ~/.ssh
※-rw------(つまり600)なら以下②は不要
②$ chmod 600 id_rsa_github
※CHange MODeの略
□GithubにsshのPort22を開放する
→①$ vim ~/.ssh/config
※無ければ新規作成
②以下6行を追記
Host github.com
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_rsa_github
IdentitiesOnly yes
□SSH公開鍵をGithubへ登録
→①$ cat ~/.ssh/id_rsa_github.pub
②公開鍵をクリップボードへコピー
※冒頭ssh-rsaから末尾@localhostまで
③GithubのSettings内の
SSH & GPG keysを開いて
Add New SSH key登録
※Titleは「userland」等、識別できるように
※公開鍵をクリップボードから貼付け
※Authentication Keyを選択すればよい
※Signing Keyは公開鍵に署名をつける、
より高度(今は過剰)な鍵
④$ ssh -T github.com
※-T:PTYの割当てを禁止
∵githubの仕様より
※PTY:疑似端末(Pseudo teleTYpe)
※ed25519のfingerprintが表示されて、
接続を続けるか聞かれる
→ひとまず確認せずyesと入力してEntr
※途中で鍵作成時のpassphraseを入力
※以下が表示されればOK
You've successfully authenticated,
but GitHub does not provide shell access.
環境構築⑦|Gitのインストール(5min)
□Gitのインストール
※rbenvのインストールやデプロイで使う
※分散型バージョン管理システム
→$ sudo apt install git
□Gitの名前とメアドの設定
→①$ git config --global user.name "Tellmae R"
※氏名間にスペースを入れない場合は
ダブルクォーテーション無くてもいい
②$ git config --global user.email xxx@xxx
※Githubで得たダミーアドレスにする
③$ git config --global -l
□Gitのデフォルトブランチ名をmainに変更
→$ git config --global init.defaultBranch main
※元はmaster(君主⇔slave)となっているが、
人権保護からmainとする流れがある
環境構築⑧|rbenvのインストール準備(5min)
□gccのインストール
※rbenvやbundlerがコンパイルする際に使う
→①$ sudo apt install -y build-essential
※これは3分くらいかかる
②$ gcc --version
□OpenSSLのインストール
※rbenvでrubyをビルドする際に使う
→①$ sudo apt install -y libssl-dev
②$ openssl version -a
□YAMLを扱うライブラリをインストール
※rbenvでrubyをビルドする際に使う
※railsでは各種設定のため、
.ymlファイルを直接書き換えることが多い
→$ sudo apt install libyaml-0-2 libyaml-dev
□zlibのインストール
※データ圧縮・解凍ツール
※rbenvでrubyをビルドする際に使う
→$ sudo apt install libz-dev
□Foreign-Function Interfaceのインストール
※別言語の関数を呼び出すツール
→$ sudo apt install libffi-dev
□ReadLineのインストール
※ruby言語の標準入力に使う
→$ sudo apt install -y libreadline-dev
環境構築⑨|rbenvのインストール(20min)
□rbenvのインストール
※rubyのバージョン管理ツール
→①$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
※apt installは新しいバージョンに未対応
(公式リポジトリがout of dateと注意)
※「~」はホームリディレクトリを示す
②$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
※環境変数「PATH」(検索パス)に追加し、
~/.rbenv/bin内の実行ファイルrbenvを
コマンドとして使えるようになる
※echoはもともと画面出力コマンドだが、
>>で指定したファイルに追記もできる
※頭に$をつけると変数と解釈される
※パスは「:」で追加され、
左側から検索される仕様
※右辺に自身の変数$PATHがある再帰構文
※公式は.bash_profileと指定してるが、
Ubuntuの場合.profileを使っているので、
.bash_profileを新たに作ってしまうと、
.profileの内容が実行されなくなる
→.bash_profileを作らないように
常に注意しつつ、.profileにPATH追記するのが
これまでの通説だった
→以下のrbenv initで初期化コマンドが
.bashrcに書き込まれる仕様となったため
その前にPATHを通す必要が出てきた
→重くなるが仕方なく、
.bashrcにPATHを書くこととなった
Q.なぜUbuntuは.profileがデフォ?
A.GUI起動(bash無し)でも読み込まれる
という利点があるから
③$ ~/.rbenv/bin/rbenv init
※.bashrcにrbenv初期化コマンドを
勝手に追記してくれる
※以前は.profileに手動で追記するよう
以下を指示してくる仕様だった
$ echo 'eval "$(rbenv init -)"' >> ~/.profile
④$ source ~/.bashrc
※sourceはファイル内のコマンドを実行
⑥$ type rbenv
※rbenvがコマンドとして認識されたか確認
※not foundと出たら失敗
※rbenv is 〜と出たら成功
□ruby-buildのインストール
→①mkdir -p "$(rbenv root)"/plugins
※-pは必要により親ディレクトリも作成
②git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
環境構築⑩|Rubyのインストール(130min)
□rubyをrbenvからインストール
※apt installはバージョン汚染するから非推奨
→①$ rbenv install -l
※安定版の最新x.x.xを確認
※執筆当初は3.2.2だったが更新中に3.3.1に
②$ rbenv install x.x.x
※x.x.xは上で確認したバージョンとする
※ここで2時間くらいかかる
③$ rbenv global x.x.x
※上記のインストール時に指示される
※このバージョンをデフォルトにする
④$ rbenv version
□ドキュメントのダウンロード時間を短縮
→$ printf "install: --no-document \nupdate: --no-document\n" >> ~/.gemrc
□bundlerをインストール
→$ gem install bundler
※rubyで使うライブラリはgemといい、
gemを管理するコマンドもgem
(gemは英語で原石の意)
※bundlerはgemの1つで、
Gemfileに従ってgemを管理する
※ここで10分くらいかかる
※rubygems.orgのサイトは不安定なので、
443エラーが返ってくることがある
→日時を改めればOK
環境構築⑪|Node.jsのインストール(10min)
※サーバ側でJavaScriptを使うプラットフォーム
※Rails 6 以降には同梱されるようになり、
Railsとしては別途インストール不要だが、
Heroku CLIインストールのために結局必要
→①$ sudo apt install -y nodejs npm
※npmはNode.jpのバージョン管理ツール
※ここで5分ほどかかる
②$ sudo npm install n -g
※「n」コマンドをインストール
③$ sudo n stable
※Node.jsの最新安定版をインストール
④$ sudo apt purge -y nodejs npm
※もう不要となったnodejsとnpmを消す
※purgeは環境設定まで全削除するコマンド
⑤$ exec $SHELL -l
※シェルの再起動
※-lでログインシェルとして起動
→環境変数の設定等の初期化がされる
⑥$ sudo npm install yarn -g
※npmと似たnodeパッケージ管理ツール
⑦$ node -v
環境構築⑫|PostgreSQLのインストール(20min)
※データベースをインストールしていないと
rails newをするときにエラーが出る
□PostgreSQL本体のインストール
→①$ sudo apt update
②$ sudo apt upgrade
③$ sudo apt install postgresql
※3分くらいかかる
□FATAL: data directory
"/var/lib/postgresql/14/main"
has wrong ownershipと出たら
→①そもそもディレクトリが存在しないので
$ mkdir -p /var/lib/postgresql/14/main
※/varはvariable(変動しやすい)の略
②$ ls -l /var/lib/postgresql/14
※データベース格納領域の所有者が、
rootでなくuserlandであるのを確認
∵セキュリティ上、rootが所有しては
いけないルールとなっている
□拡張機能のインストール
→①$ sudo apt install postgresql-contrib
※ポスグレ機能の拡張
②$ sudo apt install libpq-dev
※アプリケーションとデータベースの通信
□クラスタの作成
※クラスタとは、ディスク上の
データベース格納領域のことで、
複数のデータベースをまとめて
1つのインスタンスとして管理する
→インストール時に出力されたとおり従う
$ pg_createcluster 14 main --start
※14はバージョン名
※mainはクラスタ名
※--startは、クラスタを生成した直後に
サーバを開始するオプションで、
これを付けず以下を分けて実行してもよい
$ pg_ctlcluster 14 main start
□FATAL: private key file
"/etc/ssl/private/ssl-cert-snakeoil.key"
has group or world accessと出たら?
※SSL:Secure Sockets Layerの略
※cert:証明書certificationの略
※snakeoil:SSLのサンプルとして
ubuntuにプリインストールされている
証明書の認証サイトの仮の名前
※もともと英語で「インチキ薬」の意
→①$ ls -l /etc/ssl/private/ssl-cert-snakeoil.key
※現状を確認(多分-rw-r-----)
②$ sudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.key
※-rw-------にする
③$ ls -l /etc/ssl/private/ssl-cert-snakeoil.key
※変更されたのを確認
④もう一度自分で
$ pg_ctlcluster 14 main start
⑤UNIXドメインソケットの生成を確認
$ ls -a /var/run/postgresql
※.s.PGSQL.5432があれば成功
□Remove stale pid file.と出たら?
※stale:古い
→①$ ls -a /var/run/postgresql
②残っている.pidファイルを
rmしてからやり直す
$ rm /var/run/postgresql/14-main.pid
□SQLサーバを停止
→$ pg_ctlcluster 14 main stop
環境構築⑬|Heroku CLIのインストール(30min)
□ブラウザでHerokuのユーザ登録
→①Sign-upからメアド等入力して認証
②スマホにアプリsalesforce authenticatorをインストール
③Heroku多要素認証をsalesforce authenticatorに紐づける
※salesforce authenticatorに表示される
英単語2つをHerokuの画面に入力
※以後、Authenticatorアプリを開いた状態で
ブラウザ上でログインしようとすると
上部メニューで承認するか通知が出る
④ブラウザで右上のプロフィール画像から
Account Settingを開く
⑤Manage Multi-Factor Authenticationをクリック
⑥リカバリーコードの追加をクリック
⑦リカバリーコードをメモしておく
※Authenticatorアプリが入った端末が
壊れた場合のロックアウトに備える
□クレカ登録しておく
※登録しておかないとheroku createのとき
エラーが出てしまう
※住所はクレカの登録情報に合わせて
日本語なら日本語で入力しないと
「アドレスがおかしい」と弾かれる
□HerokuのCLIをインストール
※Command Line Interfaceの略
→$ curl https://cli-assets.heroku.com/install.sh | sudo sh
※公式の推奨はもともと以下コマンド
$ curl https://cli-assets.heroku.com/install.sh | sh
※頭だけにsudoをつけても、権限無しと出る
※縦棒「|」はbashで「パイプ」といい、
左コマンドの出力を右コマンドの入力とする
※10分ほどかかる
※以下コマンドがrailsチュートリアルにあるが
Cloud9環境でしか使えないし、
環境汚染されるため注意
$ source <(curl -sL https://cdn.以下略)
※「予期せぬEOF」エラーが出たら、
ネット環境がいい場所でインストールし直す
※EOF→End Of Fileを示す値
※戻すには以下コマンド
$ rm -rf /usr/local/heroku
/usr/local/lib/heroku
/usr/local/bin/heroku
~/.local/share/heroku
~/Library/Caches/heroku
□インストールされたことを確認
→$ heroku --version
※Node.jsがインストールされていないと
ここでエラーが出る
アプリ開発①|Railsのインストール(60min)
□Railsをプロジェクトごとにインストールする
→①$ mkdir testapp
②$ cd testapp
③$ bundle init
※bundler(gemを管理するgem)が
Gemfile ファイルを作成
④$ vim Gemfile
⑤「# gem "rails"」の#を消してコメントイン
※シングルクォートとする情報源もある
→Rubyはどちらも対応(結果は不変)
※特殊文字の扱い方が異なるのみ
⑥$ bundle config set --local path 'vendor/bundle'
※各gemの保存先をプロジェクトごとに分けて
システム全体への環境汚染を防ぐ
(プロジェクト削除時に残ってしまう等)
※testappの下に、隠しディレクトリ
.bundleが作成され、その中に
configファイルが作成され、
その中に以下が書き込まれる
BUNDLE_PATH: "vendor/bundle"
※昔はinstall時のオプションとしてまとまて
以下のコマンドが存在していたが、
非推奨となった
$ bundle install --path vendor/bundle
⑦$ bundle config set --local without 'production'
※.bundle /config内に以下が追記される
BUNDLE_WITHOUT: "production"
※install時のオプションで指定する
以下の記法は禁止された
$ bundle install --without production
⑧$ bundle install
※必要なgemをインストールし、
結果をGemfie.lockに出力する
※ここで15分ほどかかる
⑨$ bundle exec rails new . --database=postgresql
※途中のピリオドを忘れないよう注意!
※ピリオドは現在ディレクトリを指す
※「bundle exec」を付けたコマンドは、
bundlerの監視下で実行される
※ここで最初は40分ほどかかる
※途中Y+EntrでGemfileの上書きを許可
※表示される[Ynaqdhm]は以下の略
Yes, no, all-yes, quit, diff, help, merge
※Render.comでは以下オプションも推奨
(1)-j esbuild
※JavaScript approachを
importmapからesbuildへ変更
(2)--css bootstrap
※CSS processorにbootstrapを選択
⑩$ cat Gemfile
※Gemfileに各gemが追記されたのを確認
□本番環境のCPUアーキテクチャを想定して追加
→$ bundle lock --add-platform x86_64-linux
※Gemfile.lockに追記される
□作り直されたGemfile.lockに基づき全gemを更新
→$ bundle update
アプリ開発②|初期動作確認(10min)
□データベースのリセット
→$ bundle exec rails db:migrate:reset
※testapp_developmentとtestapp_testの
2つのデータベースを初期化する
□ソケット.s.PGSQL.5432上での
Connectionがrefusedされたと出たら?
→clusterをrunさせてからやり直す
$ pg_ctlcluster 14 main start
□Remove stale pid file.と出たら?
※stale:古い
→①$ ls -a /var/run/postgresql
②残っている.pidファイルを
rmしてからやり直す
$ rm /var/run/postgresql/14-main.pid
□new encoding (UTF8) is incompatible
with the encoding of the template
database (SQL_ASCII)と出たら?
→config/database.yml内の
encoding: unicodeの上に
template: template0を追記してやり直す
※デフォルトtemplateはtemplate1たが、
initdb時に文字コードが指定され、
それ以外が使えなくなっている
※template0は文字コード指定前なので
どんな文字コードでも使える
□Pumaサーバ起動確認
※「ピューマ」と呼ぶ
※アプリケーションサーバソフトだが、
webサーバソフトも兼ねることができる
※実運用上はwebサーバを分けるべき
→①$ bundle exec rails s -b 0.0.0.0
※sはserverの略
※-bはバインドするオプション
※bind:サーバのアドレスを指定すること
※androidでは-b以下がないとエラーとなる
∵getifaddrsが許可されずerrorとなる
∵androidは仕様上MACアドレス取得不可
②ブラウザからサーバ起動を確認
→http://0.0.0.0:3000
③pumaサーバを停止
→Ctrl + c
④SQLサーバを停止
→$ pg_ctlcluster 14 main stop
アプリ開発③|リモートリポジトリの設定(3min)
→①Githubホーム画面左上のNewをクリック
②Create a new repositoryページで初期設定
・リポジトリ名はひとまずtestapp
・Privateを選択
・Add a README fileは選択しない
・Add .gitignoreはNoneのまま
・LicenceもNoneのまま
※以上のように空にしておかないと、
pushしたときfetch firstエラーが出る
アプリ開発④|ローカルリポジトリの設定(3min)
□ディレクトリをリポジトリにする
→①プロジェクトのルートディレクトリへ移動
②$ git init
※隠しディレクトリ「.git」ができるp
※場所を間違えた場合は「.git」を消せばいい
→$ rm -rf .git
□vendor/bundleを.gitignoreに追加する
→プロジェクト直下にあるので、
$ vim .gitignoreで開いて、
最後に/vendor/bundleを追記すればよい
□コミット
※ローカルリポジトリに反映させること
→①プロジェクトのルートディレクトリへ移動
②プロジェクトファイルをステージングに追加
→$ git add -A
※間違えたら以下で取消
→$ git reset
③ステージングを確認
→$ git status
④ステージングの変更をリポジトリに反映
→$ git commit -m "Initialize repository"
※-mでコミットメッセージを直接指定
⑤ステージングが無くなったことを確認
→$ git status
※stagingは英語で、(動名詞ではなく)
足場を示す一般名詞
□ブランチ名を確認
→$ git branch
※「* main」と出ればよい
※「* master」の場合は以下のとおり修正する
$ git branch -m master main
※-mはブランチ名変更オプション
アプリ開発⑤|ローカルとリモートの連携(3min)
□リモートリポジトリURLをメモ
→Githubページ右上の
「Code▼」を開いて確認できる
※リモートリポジトリURLはSSHの方にする
∵HTTPSの方は2021年から廃止された
□remoteの登録
※remoteはリモートリポジトリの略称
→$ git remote add origin git@github.com:Tellmae_R/testapp.git
※remote名を"origin"と定義しておくと、
今後origin入力を省略できる仕様となっている
※エラーremote origin already existsが出たら
以下コマンドで削除してからやり直せば良い
→$ git remote rm origin
□登録したremoteの確認
→$ git remote -v
※各remoteとURLを一覧で確認
□remoteへpush
→$ git push -u origin main
※リモートリポジトリ"origin"へ
ローカルブランチ"main"を反映させる
※-u:pushと同時に、
ローカルブランチ"main"の上流ブランチを
リモートブランチ"main"に設定する
□上流ブランチとは?
→リモートブランチ名の引数を省略して
mergeした場合に対象となるブランチ
※主にリモートブランチが対象となる
アプリ開発⑥|Hello Rails World!(3min)
□ルートのルーティングを設定
→①$ vim config/routes.rb
②Rails.application.routes.draw do内に
root "application#hello"を追記
※applicationコントローラのhelloアクションを実行
※applicationコントローラはデフォルトで存在
□helloアクションを設定
→①$ vim app/controllers/application_controller.rb
②ApplicationControllerクラス内に、
以下のとおりhelloアクションを追加
def hello
render html: "hello Rails world!"
end
デプロイ①|最後の更新(3min)
$ bundle install
$ bundle update
$ git add -A
$ git commit -m "Finalize repository"
$ git push origin main
デプロイ②|Herokuにデプロイ(3min)
□CLI上でHerokuにログイン
→①$ heroku login
②Press any keyに従う
③出てくるURLをブラウザにコピペして開く
④ブラウザ上でのログインがCLI上に反映される
※--interactiveのオプションを付けると、
not supportedエラーが出る
□Herokuサーバにサブドメインを作成
→$ heroku apps:create
※$ heroku createと略してもいい
※後に続けてアプリ名を引数にできるが、
他の誰とも重複が許されず、
その確認と修正が大変なので、
一旦自動でアプリ名を作成してもらって
後から変更する方法が賢明
□リモートリポジトリが追加されたのを確認
→$ git remote -v
※herokuが追加されている
□デプロイ
→$ git push heroku main
□gnutls_handshake() failedと出たら?
→通信異常なのでやり直すだけで
解決する可能性あり
□表示されたURLにブラウザでアクセス
※https://〇〇.herokuapp.com/
→Hello Rails World!と表示されれば成功
後始末(3min)
□ブラウザ上でHeroku内のデプロイを消す
→①当該アプリ名を選択
②歯車のタグを選択
③Delete Appを選択
□アプリのフォルダを消す
→$ rm -rf ~/testapp
※fオプションをつけないと
write-protected regular fileで
毎回確認が必要になる
□Githubのリモートリポジトリを消す
→①ブラウザでGithubを開く
②当該アプリ名を選択
③右上の「…」からSettingsを選択
④Delete this repositoryを選択