革命のブログ

フレボワークスの社員がブログを通じて情報発信します。

簡単3ステップで完了!効率的なWebAPI仕様書作成を導入する方法

はじめに

どうも小野です。WebAPI仕様書の作成はどのようにしていますか?今回紹介するツール等がない時代はExcelを当たり前のように使っていたかもしれません。 Excelの場合、ファイルのバージョン管理に苦労することが多いため、効率がいいとは言えません。 そこで、今回はタイトルにもある通り、簡単3ステップでWebAPI仕様書を作成する方法をご紹介します。

前提

  • Githubアカウントを登録済みであること
  • Netlifyアカウントを登録済みであること
  • Node.jsがインストールされていること

ステップ1 Githubセットアップ

リポジトリを新規作成します。

ステップ2 Netlifyセットアップ

Netlifyは静的サイトを公開できるホスティングサービスです。

ここでは公開するサイトを新規作成します。

ステップ3 仕様書作成

ステップ1で作成したリポジトリからソースをダウンロードし、初期設定を行います。

git clone git@github.com:frevo-works/apisample.git
cd apisample
npm init
npm i redoc-cli

redoc-cli は作成した YAML を HTML に変換してくれるツールで、Netlifyで公開するために必要です。 redocly.com

package.json を編集します。

// (省略)
"scripts": {
  "build": "redoc-cli bundle swagger.yml -o dist/index.html", // 追加
  "test": "echo \"Error: no test specified\" && exit 1"
},
// (省略)

swagger.yml を作成します。

openapi: "3.0.2"
info:
  title: SampleAPI
  version: "1.0"
paths:
  /users:
    get:
      description: ユーザ一覧取得
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                          description: ユーザID
                        name:
                          type: string
                          description: 氏名
                        email:
                          type: string
                          description: メールアドレス

以下のコマンドを実行して、仕様書を出力してみます。

npm run build

ビルドが完了すると、dist フォルダに index.html が出力されているのでブラウザで開きます。

正しく表示されたら、リモートリポジトリにプッシュします。

git add -A
git commit -m "first commit"
git push origin main

動作確認

Netlify を開き、以下のような状態になったら、表示されている URL をクリックします。すると、作成された API 仕様書が確認できます。

もし、閲覧制御等で API 仕様書のページに Basic 認証をかけたい場合、Netlify の有料プランに加入すると利用可能になります。

www.netlify.com

おまけ

効率よくYAMLファイルを編集する方法として2つご紹介します。

リアルタイムに確認する方法

編集中の内容をリアルタイムで確認できる方法として、Swagger Editor と、VSCode+Swagger のプラグインを利用する方法があります。 Swagger Editor は以下の リンク から起動することができます。

editor.swagger.io

ただし、編集はブラウザ上で行うので、編集後はローカルのファイルに上書きする必要があります。 ローカルで Editor を起動する Docker もあるようですが、今回は後者の方法をご紹介します。

marketplace.visualstudio.com

GUI で編集する方法

YAML ファイルを触りたくない人向けのツールをご紹介します。 このツールはGUI 上で設定、入力していくと最終的に YAML ファイルが出来上がる仕組みです。

stoplight.io

おわりに

いかがでしたか?ツール等の導入には多少手間は必要ですが、Excelのひな型作成と考えればそこまでのコストはかからないと思います。 効率よくメンテンナンスを行うためにぜひ導入してみてください。 今回は紹介していませんが、仕様書を更新した際にSlackへ通知することも可能なので、興味がある方は調べてみてください。

Node.jsのバージョン管理に「Volta」を使ってみた

どうも、小野です。 最近、業務用メインPCをMacからWindowsに乗り換えました。

Macのときはバージョン管理にnodenvを使っていましたが、Windowsでは利用できません。 ただし、WSL上であれば可能ですが、WindowsとWSL間でソースの扱いが難しいと感じたので、 このたび、新たなバージョン管理ツールの導入を決めました。

候補としては以下の3つでした。

  • nodist
  • nvm-windows
  • Volta

nodist

nodenvと同様に.node-versionによる切り替えが可能なのですが、Githubリポジトリを見ると2年近く更新されておらず、先行き不安なので断念しました。

github.com

nvm-windows

コマンドによるバージョン変更は可能なのですが、プロジェクト単位での変更ができないので候補から外れました。 ただ、下記のサイトのようにバッチとか組めばプロジェクト単位での変更が可能ですが、あくまでもグローバルのバージョンが変更されるので、 例えば、同時にバージョン違いのモジュールを実行したいケースについては対応できません。

github.com

qiita.com

Volta

Voltaはコマンドによるバージョン管理が可能なうえ、プロジェクト単位での指定も可能なので使ってみることにしました。 さらに、VoltaはRust製なので処理速度にも期待しています。

volta.sh

github.com

インストール

こちら から、Windowsのインストーラーをダウンロードします。 ダウンロードしたら、ファイルを実行しインストールします。

以下のコマンドでVoltaのバージョンが表示されるかを確認します。

volta -v

Nodeインストール

インストールする場合の指定方法が3つありますので、ご紹介します。

バージョンを指定

指定したバージョンのNodeがインストールされます。

volta install node@14.15.5

メジャーバージョンのみ指定

指定したメジャーバージョンの最新版がインストールされます。

volta install node@14

バージョン指定なし

最新版のNodeがインストールされます。

volta install node

プロジェクト単位で切り替える方法

volta installがグローバルにインストールされるので、プロジェクト単位でバージョンを切り替える場合はvolta pinを使う。

volta pin node@14.15.5

おわりに

フロントエンドまわりは更新が早いので、プロジェクト後tにNodeのバージョンが異なるとは少なくないので、 手軽にバージョンのインストールや切り替えが可能なVoltaを使ってみてはいかがでしょう?

Kinesis Video Streamsを使って、Androidスマホのカメラ映像を配信してみた

どうも、小野です。 今回はAWSが提供している動画配信サービスの「Amazon Kinesis Video Streams」(以下、KVS)を試していきます。 本記事では、余分な説明を極力省いているので、15分程度で動作確認までいけると思います。

KVSについて、詳しく知りたい人は以下のサイトを参考にしてください。 docs.aws.amazon.com

前準備

  • AWSアカウントを取得していること
  • Android Studioがインストールされていること

手順

手順については、以下のサイトにも記載されています。 docs.aws.amazon.com

Cognitoの設定

今回、Androidアプリから利用するので、アプリからKVSを利用するため認証認可が必要になります。一般的にスマホアプリではCognitoを利用することが好ましいです。もちろん、アクセスキー、シークレットキーを持たせて行うことも可能ですが、セキュリティの観点から非推奨とされています。

ユーザプールの作成

f:id:frevo-works:20220413132730p:plain

f:id:frevo-works:20220413132805p:plain

f:id:frevo-works:20220413132833p:plain

f:id:frevo-works:20220413132850p:plain

f:id:frevo-works:20220413134205p:plain

f:id:frevo-works:20220413134220p:plain

f:id:frevo-works:20220413134303p:plain

f:id:frevo-works:20220413134415p:plain

f:id:frevo-works:20220413134447p:plain

f:id:frevo-works:20220413134551p:plain

IDプールの作成

f:id:frevo-works:20220413134609p:plain

f:id:frevo-works:20220413134622p:plain

f:id:frevo-works:20220413134758p:plain

配信アプリの準備

公開されているサンプルアプリケーションのソースをダウンロードします。

git clone https://github.com/awslabs/aws-sdk-android-samples

Android Studioで「aws-sdk-android-samples/AmazonKinesisVideoDemoApp」を開きます。

AmazonKinesisVideoDemoApp/src/main/res/raw/awsconfiguration.json を編集します。 各番号にはCognitoの設定時に記載した番号と同じ内容を入力する。

{
  "Version": "1.0",
  "CredentialsProvider": {
    "CognitoIdentity": {
      "Default": {
        "PoolId": "④",
        "Region": "ap-northeast-1"
      }
    }
  },
  "IdentityManager": {
    "Default": {}
  },
  "CognitoUserPool": {
    "Default": {
      "AppClientSecret": "③",
      "AppClientId": "②",
      "PoolId": "①",
      "Region": "ap-northeast-1"
    }
  }
}

AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/KinesisVideoDemoAppを編集します。

public class KinesisVideoDemoApp extends Application {
    public static final String TAG = KinesisVideoDemoApp.class.getSimpleName();
    public static Regions KINESIS_VIDEO_REGION = Regions.AP_NORTHEAST_1; // 変更

動作確認

※スマートフォンのダークモードが有効になっていると表示が見にくい箇所があるので、予め無効にしておいてください。

Android Studioでデバイスを選択して実行し、アプリを起動させます。

配信側の画面

f:id:frevo-works:20220413140624p:plain

f:id:frevo-works:20220413140636p:plain

f:id:frevo-works:20220413140647p:plain

f:id:frevo-works:20220413140659p:plain

f:id:frevo-works:20220413145159p:plain

閲覧側の画面

f:id:frevo-works:20220413145507p:plain

f:id:frevo-works:20220413145233p:plain

↑メディア再生のところです。

おわりに

サンプルアプリが提供されていたので、簡単に試すことができました。Rekognitionとも連携できるので、リアルタイムで顔検出などやってみたいですね。今回はAndroidアプリでしたが、他にもJava、C、C++のSDKが用意されているので、興味がある方は試してみてください。

SpringBoot + Nuxt構成でGoogle認証を実現する

どうも、小野です。今回は、バックエンドがAPIのみ、フロントエンドがSPAの構成におけるOAuth認証とリクエスト時の認証チェックについてです。個人的にSpringBootとNuxtを利用することが多いのですが、この構成でのOAuth認証の実現方法を中々見出せずにいました。SprignBootにはOAuth認証を行う仕組みがSpringSecurityに実装されているのですが、フロントエンドとの連携が複雑化して断念しました。そこで、FirebaseのAuthentizcationサービスを使ってGoogle認証について調査したところ、スマートな方法が発見できたのでご紹介します。

続きを読む

2021年に経験した言語のおすすめランキング

f:id:frevo-works:20211228232920j:plain
フリー素材ぱくたそ(www.pakutaso.com)

どうも。最近、個人開発を始めたくなってきた小野です。

本格的なテレワークが始まってからかれこれ1年以上経過しました。 在宅だと通勤がないので、満員電車のストレスがなくなったのですが、宅配物の受け取りや夕飯の用意など家事が増えてしまいました。 家族にとってはいいことかもしれませんが、自分の時間の確保が難しくなったような気がします。

さて、2021年は新しい言語に触れる機会が多かったような気がします。 そこで今回は、2021年に触ってみた感想をランキング形式で発表していきます。

続きを読む

2021年のふり返りと2022年に向けて

こんにちは。さいとうです!

気付けば2021年もあと3日ですね。年の瀬いかがお過ごしでしょうか。

2021年のふり返りと2022年についてを少し書き出していこうと思います。

 

2021年のふり返り

この時期によく見るものといえば”今年の漢字”です!

私の今年の漢字は

f:id:frevo-works:20211228183640p:plain

”籠”(こもる)です。

在宅勤務や緊急事態宣言の発令など、様々な理由がありますが365日のうち300日以上は家に籠っていました。

一つのところに腰が落ち着いてしまうと色々な場所へ一歩踏み出すのが億劫になってしまいフットワークが重ーくなってしまいました。(体重も増えてしまったのもありますが・・・)

不思議なもので身体的に重くなると頭も重くなってしまうようで考えやアイデアなどがうまく出て来ず固定化しつつあるように思えます。

このままでは良くないと思い色々なところに顔を出したい気持ちはあれど、コロナ等いろいろなもののせいにしてしまい気付けば2021年が終わろうとしています。

 

しかしながらいい点もたくさんありました。

世界で最も無駄な時間こと通勤時間が在宅勤務制度のお陰でなくなったため、朝晩のゆとりの時間がとても増えました。

この時間を使って勉強等に充てる事で着実にインプットすることができた1年でした。

また、今年は色々な技術に触れる事ができた1年でした。

kotlinでのAndroidアプリの開発に始まり、SwiftUIを用いたiOSアプリの開発と広くモバイル開発の経験を積む事ができました。

メンバーの誰も経験がない状態からの手探りでの開発となり自分の頭の中に籠りがちな日々を過ごしていましたが、着実に作ることのできる機能が増え”こうしたい”を叶えられる力をつけることができました。

モバイル開発はまだまだわからないことばかりで勉強中ですがこちらは来年も走りながら考えることを継続していきたいと思います。

 

2022年に向けて

2021年は籠りがちでインプットばかりになってしまっていたので来年はアウトプットに重きを置きながら他の人も巻き込んでいける様な動きをしていきたいと思います。

また、最近は新型コロナウイルスの飲み薬もできてきているようなので本格的にコロナ前の生活が戻ってきたらもっと前向きに動いていきます。

来年の目標の漢字は”動”です。

 

最後に

2020年にひき続き、人生で経験をしたことのない一年でした。

ワクチンが普及して希望がでたかと思えば新しいタイプのウイルスがでてきたりと中々終わりの見えない苦しい一年でした。

そのような環境でもなんとか一年乗り切ることができました。

各所関係者の皆様、今年もお世話になりました。

来年もどうぞよろしくお願いいたします。

【お知らせ】年末年始休暇について

取引先各位

今年も、大変お世話になりました。

今年は、コロナ過の中でのオリンピック開催や、ワクチン接種等で、動きたいが、動くのも、何かと世間体を気にする事が多い1年だったかと思います。

弊社もリモート作業に移行した事から、感染対策上、千代田区から豊島区へ本社を移転するなど、本意ではない行動も多かった年でした。

また、新しい新種のウィルスの発生により、来年以降も感染対策には気を付けて過ごす

1年になるかと思いますが、皆様、どうぞ、良いお年をお迎え下さい。

(年末年始休暇)

 ・令和3年12月29日(水)~ 令和4年1月3日(月)

尚、弊社は現在、ハイブリット(在宅+出勤)変則勤務の為、ご連絡等は、オフィシャルHPのお問合せよりお願い申し上げます。

・来年はガンダム⁉のような、強い日本経済の復活を期待しましょう。

f:id:frevo-works:20211208160401j:plain

横浜ガンダムファクトリー