Azure Static Web Apps で作る React + GraphQL なサーバレスウェブアプリケーション

この記事で言いたいことは2つあって、

  • Azure Static Web Apps の開発体験が良い
  • TypeScript + React + GraphQL (Apollo Server, GraphQL Code Generator, React Query) の組み合わせが良い

です。

これらの技術要素を使って https://github.com/morishin/azure-static-web-apps-template というサンプルアプリを作成したので、その紹介をします。

github.com

上記の要素に加え、ビルドツールとして Vite、ルーティングに React Router、UI フレームワークChakra UI を利用しています。

続きを読む

ご家庭を支える定期実行ジョブの開発フロー

この記事は CAMPHOR- Advent Calendar 2021 の5日目の記事です。

CAMPHOR- Advent Calendar には初回の2014年から参加していて8度目の参加になります。老ですね。

今回は私生活でしばしば必要になって作っている家庭内タスクのリマインダーのお手軽構築スタイルを紹介します。

さて、僕は家庭内のコミュニケーションツールとして主に SlackSnapchat を利用しています。日常会話は Slack で、子ども・猫の様子やその他日常の風景を動画で共有するのに Snapchat を使います。Snapchat は大好きなのですが今はその話は置いておいて、家庭内タスクのリマインド通知先としても Slack が最適なので色々な通知を Slack に流しています。

https://i.gyazo.com/41474ab4a448bf950cc7a5f976e5849c.png
家庭内コミュニケーションの様子

この記事では毎週決まった時刻に締め切りのある、生協のネット注文のリマインダーを例にして構築手順を説明します。

  • 例: 生協のネット注文のリマインダー
  • ブラウザで完結させる編
    • 関数の作成
    • Lambda レイヤーでモジュールを使い回す
    • 関数の実装
    • できあがり
  • AWS CDK 編
  • おわりに
続きを読む

Firebase Hostingのリライトをローカルでエミュレートするプロキシ

Firebase Hosting にはリライトという機能があって、設定ファイル(firebase.json)を書くことで例えば

  • 全てのパスを /index.html へ向ける (SPA などで使う)
  • /items/1234 へのリクエストを /items/id.html へ向ける
  • /api/get_item へのリクエストを Cloud Functions の get_item 関数の HTTP トリガへ向ける

といったことが実現できます。

また cleanUrls 属性を使用することで URL から .html 拡張子を取り除くことができます。/page へのアクセスは Hosting にアップロードされた /page.html のファイルを取得するようになり、/page.html へのアクセスは /page へ 301 リダイレクトされるようになります。

これらの挙動はシュッとしたウェブアプリを作るためには大変便利でよく利用しますが、Firebase 本番環境へデプロイされたアプリケーションでしか効きません。本番環境では /items/1234/item/id.html を返してくれるけど開発環境では /item/1234 は 404 になるといったつらみが生じます。

rewriteproxy

そこで開発環境でもリライトと cleanUrls の挙動を再現してくれるプロキシを作りました。お手元の firebase.json を読み込んで動作します。

リポジトリはこちら。

github.com

続きを読む

開発で使ってる便利ツール

この記事は CAMPHOR- Advent Calendar 2020 の23日目の記事です。22日目は れおまる さんの「ニキシー管の魅力 」でした。ニッチ!!!!(賞賛)

CAMPHOR- Advent Calendar には初回の2014年から参加していて7度目の参加になります。

今回は普段の開発で便利に使っている周辺ツールを紹介します。他人の開発風景を見ていると色んな発見があって面白いので、自分の環境もコンテンツになるかもと思って書きました。他の人の記事も見てみたいのでよかったらみんな書いて。

macOS を普段使いしているので macOS 用のアプリケーションも多く含みます。

  • Alfred
  • ウィンドウのサイズと位置をコントロールするやつ
  • アクティブなアプリケーションを切り替えるやつ
  • 絵文字を入力するやつ
  • スニペットを素早く入力するやつ
  • Slack のステータスに今やってることを反映させるやつ
  • VSCode プラグイン
    • case を変えるやつ
    • ゲーミングカッコ
    • カンマで改行するやつ
    • GitHub で開くやつ
  • git 関連
    • git-rerere
    • peco 芸
  • シェルのコマンド履歴検索するやつ
  • cd のかしこいやつ
  • 環境変数をコマンドに渡すやつ
  • sudo を Touch ID でやるやつ
  • URL エンコードされた文字列を戻すやつ
  • 英かな切り替えるやつ
  • おわり
続きを読む

React Hooks の感想

React Hooks は最初は何が嬉しくてこんな書き方をしないといけないのか訳がわからなかったけど、しばらく使ってみた実感として大きなメリットは2つで

  • クラスを使わなくて良くなる
  • コンポーネントのステートやライフサイクルに結合していた処理を Hooks 関数の形で切り出して、複数のコンポーネントで使い回せるようになる

と理解した。

続きを読む

Quill というスニペット補完ツールを作りました

目次

  • 目次
  • デモ
  • 機能
  • 使い方
  • ライセンス購入
  • 開発の経緯
  • 使った技術
    • アプリ本体
    • 課金
    • ライセンス発行・配信
    • ウェブページ
  • さいごに

これ👇

quill.morishin.me

デモ

続きを読む

#zoom-nomikai

この記事は CAMPHOR- Advent Calendar 2019 の8日目の記事です。7日目は @asamas さんの「スプラトゥーン2の戦績データを取得する+おまけ」でした。

CAMPHOR- Advent Calendar には2014年から参加していて6度目の参加になります。今日は CAMPHOR- というコミュニティの Slack にある #zoom-nomikai チャンネルの話をします。

続きを読む