Mac（M1）環境構築＆Twitter API準備編


この記事では、**Apple Silicon（M1）搭載のMacBook（macOS Sequoia v15.3前提）**で、OpenStreetMap × Node.js × PostgreSQL(PostGIS) × Twitter API といったツールを後編で活用できるよう、まずは環境を構築する。

後編では実際にサンプルコードを動かし、React + Leaflet + Node.js + PostGIS + Twitter APIの連携を行います。

まずはさくっと、インストール＆セットアップを終わらせましょう。

---

## ゴール

1. Mac (Apple Silicon)上で**Node.js**と**PostgreSQL**（PostGIS拡張含む）を導入する  
2. 必要なコマンドラインツールをインストールし、環境確認ができる  
3. **Twitter Developerアカウント**を作成し、API Key / Secret / Bearer Tokenを取得する  

上記の準備が整えば、後編でWebアプリやサーバー開発をスムーズに進められます。

---

# 1. 基本的なセットアップ

## 1.1 Xcode Command Line Tools (Optoin)

macOSで開発する場合、ビルド関連のコンパイラやmakeなどが含まれる**Xcode Command Line Tools**が必要になります。ターミナルで以下を実行し、インストールまたはアップデートを行ってください。

```bash
xcode-select --install
```

ポップアップが出る場合は指示に従ってインストール。  
すでに最新版の場合は「command line toolsはすでにインストールされています」のような表示になります。

---

## 1.2 Homebrewのインストール（推奨）

HomebrewはmacOS上でパッケージ管理を行うためのツールです。Apple Siliconでも対応しています。まだ入っていない場合は下記コマンドを実行してください。

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

インストール後、ターミナルの指示に従い、`.zshrc`や`.bash_profile`などにパスを追加する必要があります。  
完了したら以下でバージョン確認:

```bash
brew --version
```

---

# 2. Node.jsの導入

### 選択肢1：Homebrewでインストール

```bash
brew install node
```

インストール後:

```bash
node -v
npm -v
```

が正常に表示されればOK。

### 選択肢2：Node Version Manager (nvm)を使う

複数バージョンのNode.jsを切り替えたい場合、**nvm**の使用がおすすめです。Homebrewを使わずに、nvmをインストールする場合はこちら:

```bash
# nvmのレポジトリをクローン
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

# シェルを再読込
source ~/.zshrc

# Node.js LTSをインストール＆使用設定
nvm install --lts
nvm use --lts
```

- すでに手元の環境はインストール済みなので動作未確認。
- M1 Macが普及しているのでRosetta2を介さずネイティブに動くバイナリが多いので問題なく使えるはずです。

---

# 3. PostgreSQL + PostGISのインストール

### 3.1 HomebrewでPostgreSQLを入れる

```bash
brew install postgresql
```

PostgreSQLのバージョンを確認:

```bash
postgres --version
# または
psql --version
```

### 3.2 PostGIS拡張

```bash
brew install postgis
```

これでPostgreSQLに地理空間データを扱う拡張（PostGIS）が追加されます。

### 3.3 初期設定 & 起動

```bash
# PostgreSQLサービス起動
brew services start postgresql

# DB作成
createdb my_database
```

#### psqlでログイン確認

```bash
psql -d my_database
# psqlコマンドラインが出ればOK
```

**PostGISの有効化**は、後ほどデータベースに対して行います。  
例:
```sql
CREATE EXTENSION postgis;
```
(こちらは実際のDB作成時にやればOKです)

---

# 4. Python (オプション)

本プロジェクトでは必須ではないかもしれませんが、SNSのスクレイピングなどをPythonで行うケースもあるため、Python 3.× の導入を簡単に触れておきます。

### HomebrewでPython

```bash
brew install python
```

```bash
python3 --version
pip3 --version
```

Apple Silicon向けに最適化されたPythonが導入されるはずです。  
必要に応じてvenvで仮想環境を作ってもOK。

---

# 5. Twitter API Keyの取得

## 5.1 Twitter Developerアカウント登録

1. **Twitter Developer Portal** ([https://developer.twitter.com/](https://developer.twitter.com/)) にアクセス  
2. 「Apply for a Developer Account」をクリックし、指示に従って申請  
3. 用途やアプリの目的を入力

> **注意**: TwitterのAPIポリシーや有料化プランのアップデートなど変更が頻繁なので、最新情報をチェックしてください。

## 5.2 App作成＆Key発行

1. Developer Portalの「Projects & Apps」から「Create App」を選択  
2. アプリ名や説明を入力し、**API Key / API Secret / Bearer Token** を取得  
3. `.env`ファイルなどに安全に保管し、**公開しない**ように注意

例:

```
TWITTER_API_KEY=****************
TWITTER_API_SECRET=****************
TWITTER_BEARER_TOKEN=****************
```

後編でNode.jsからこれらの値を参照し、ツイート取得や検索を行います。

---

# 6. 補足：Apple Silicon特有のトラブルシューティング

- **Rosetta2**: Intelバイナリしかないツールを動かす際は自動的にRosetta2経由で動くことがあります。HomebrewでApple Silicon対応版をインストールすれば多くの場合ネイティブ動作します。  
- **一部ライブラリのビルドエラー**: Node.jsやPythonのネイティブ拡張がビルドできないケースがあるため、Command Line Toolsが最新か再チェックしてください。  
- **PostgreSQLプラグイン**: 一部拡張が未対応の可能性がありますが、主流な拡張（PostGISなど）はM1対応済みのケースがほとんどです。

---

# 7. まとめ

これで、**Node.js（またはPython）** + **PostgreSQL/PostGIS** が動く基盤と、**Twitter APIキー**の取得まで完了しました。  
後編ではいよいよこれらを組み合わせ、**React + Leaflet**で地図を表示しながら、バックエンド（Express）とDBを連携してナラティブ投稿やSNSからのデータ取得を行うウェブアプリを実装していきます。

#### 次回予告
- **Expressサーバー**の立ち上げ方とルーティング  
- **フロントエンド**（React）でLeaflet地図を表示し、座標付きフォーム送信  
- **Twitter API**を叩いて位置情報付きツイートを取得 → DBに保存  
- Docker Composeで一括起動する構成例（オプション）

準備おつかれさまでした。次回はいよいよアプリ開発「後編」へ進んでみましょう！  

---

## 参考リンク
- [Homebrew公式](https://brew.sh/)  
- [Node.js公式](https://nodejs.org/)  
- [PostgreSQL公式](https://www.postgresql.org/) | [PostGIS公式](https://postgis.net/)  
- [Twitter Developer Portal](https://developer.twitter.com/)  


以上、「前編：Mac（M1）環境構築＆Twitter API準備編」でした。