サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
gift-tech.co.jp
FastAPIのスキーマクラスをOpenAPIから生成する方法2022.03.04 PythonでAPIを構築する要件があり、フレームワークに比較的モダンなFastAPIを採用しました。FastAPIはバックエンドの開発を行えば自動でOepnApi定義を生成する機能が備わっていますが、今回はこれを使わず、事前に用意したOepnApi定義からFastAPIで利用するスキーマクラスを生成する方法を紹介します。 OpenAPI定義からFastAPIで利用するスキーマクラスを出力すると何が良いのか? OpenAPI定義のみで設計の確認が可能FastAPIでクラスを書く必要がなくなるOpenAPIの準備FastAPIのソースコードとOpenAPI定義は以下のような構成で準備します。 ちなみに定義ファイルのパスが generated/openapi.json となっているのは、openapi-gene
Laravelのオブザーバーが便利だった2021.08.31 オブザーバーを使って、モデルのCRUDイベントキャッチしようという試み オブザーバーを使う目的「データに手を加えたユーザーを記録したい」という要望があり、 データの作成者、編集者、削除者をDBに保存することになりました。 やることDBの各テーブルにcreator,editor,deleterカラムを追加マイグレーションファイル作成 (例) php artisan make:migration add_creator_editor_deleter_to_all_table Observer.phpを作成してCRUDイベントをキャッチnamespace App\Observers; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; c
Laravelのログ出力のカスタマイズ2021.09.03 Laravelのアクセスログとクエリログを独自フォーマットで出力する方法をご紹介します。 環境Laravel6Loggingクラスの作成まず、app/Logging/ にActiondログの内容を定義するFormatterクラスを作成します。ActionとQueryは出力内容に関するフォーマット部分が違っています。また、これは環境にもよるのですが Auth::id() によりユーザIDを取得する際にDBへのアクセスが発生することがある為、QueryLogFormatterでは staticの変数 $disableUserId を使ってそれを制御しています。この制御方法はもっと適切な方法がありましたら教えて欲しいです。 // app/Logging/ActionLogFormatter.php <?php namespace App
OpenAPI関連のサイト・ツールまとめ2020.10.29 OpenAPI関連のサイトやツールなどの情報が種々雑多にあるので、自分の中での整理と忘備録として残すためにまとめました。(2020年10月時点) 概要OpenAPIとはOpenAPIという表現が使われた場合、恐らくそれらの多くはOpenAPI Specification(以下OAS)に基づいてJSONやYAMLで記述されたREST APIの仕様書(スキーマ)を指しているように思います。 OASはREST APIの仕様を記述するための規格であり、それ自体がなにかのツールやサービスを提供するものではありません。 とはいえ関連するツールやサービスも普及してきているので、あまり言葉の意味を気にしすぎる必要もないかもしれませんが。 OpenAPI Specification (v3.0.3)Implementer’s Draft (OAS
OpenAPI×Stoplight Prismでモックサーバーをたてる2020.10.23 OpenAPIをバックエンドとフロントエンドの橋渡し役としてさらに活用すべく、OpenAPIのスキーマをもとにモックサーバーをたてることのできるStoplight Prismを試してみました。 OpenAPIの活用について弊社ではこれまでにOpenAPIをサーバーサイドのAPIのテスト、フロントエンドのクライアントコードの自動生成などに活用してきました。 committee×OpenAPI×RailsでスキーマファーストなAPI開発OpenAPI Generator + TypeScript で始める自動生成の型に守られた豊かなクライアント生活現状の課題自動生成されたクライアントコードがあったとしても返すデータがなければマークアップや組み込みを進めるには少し不便です。 せっかくスキーマから型まで生成
GAE/Goの開発環境について2019.03.19 GAE/Goの開発を進めていくための環境構築について考えてみました。 前回はGAE/GoとFirebaseで認証付きAPIを実装するコードについて書きましたが、今回はこのコードを踏まえてGAE/GoとFirebaseで開発するための環境構築についてまとめてみます。 ローカル開発環境GAE向けのコードは dev_appserver.py というコマンドを使うことでローカル環境で実行することができます。 デプロイするためには認証が必要ですが、ローカル環境で動かすだけであれば不要です。 また、GAE/Goの環境と合わせるためGoのバージョンは1.11としています。 ローカル開発用サーバーの使用Google App Engine Go 1.11 Standard Environment documentationこのあたりの開発環境の設定は各自よ
GraphQLやめました2020.05.27 当初Golang + GraphQLで作っていたAPIをRails + OpenAPIで作り直しました。なぜGraphQLで始めたのか、どうして作り直すことにしたのかなどを経緯とともにまとめました。 始まり弊社では qrop という農家さん向けのサービスを鋭意開発しています。 私はAPI等のバックエンドの開発を主に担当しており、このサービスの開発を始める段階でAPIは GraphQL にしよう、という話になりました。 GraphQL | A query language for your APIこの時点でGraphQLである必要性はなく、詳しいメンバーがいたわけでもなく、新しい技術に触れておきたいよねという程度の理由でした。 せっかくだしGolangで開発しよう、インフラはGCPにしよう、という具合にその時やりたいことを詰め込んで開発はスタート
テスト管理ツールQaseを使ってみての紹介と感想2020.04.03 少し前にQaseというテスト管理するツールが紹介されていて、使用する機会があったので、機能と感想を紹介します。 今までテストの管理はスプレッドシートやExcelを使っていました。Qaseの他にもテスト管理のソフトウェアはあるようですが、それらのアプリケーションに関しては使用したことがありません。また、今回の内容は無償プランの利用となっています。 Qaseの機能はこの方が詳しくまとめています。 https://qiita.com/henjiganai/items/9fadf6d1099357b49e9c 構造の解説先にQaseの構造を説明しておきます。有料バージョンではもっと機能が増えるようです。 Project - 名前のごとくプロジェクト毎に作成 L Repository - テストケースをここに追加していきます L
OpenAPI Generator + TypeScript で始める自動生成の型に守られた豊かなクライアント生活2020.02.28 OpenAPIをドキュメントだけでなく、Schema firstな開発に利用しようということで、TypeScript + OpenAPI Generatorでフロントエンドの開発をしました。 Vue, Nuxtで使う際の例と共にその内容を紹介します。 目次OpenAPIでドキュメントを書くメリットなどOpenAPI GeneratorでClient情報を吐き出すVue, Nuxtで利用するAPIの変更に追従しやすく、型もあるし幸せOpenAPIでドキュメントを書くメリットなど弊社では以下のブログでも書いているように、API仕様のドキュメント化にOpenAPIを活用しています。 committee×OpenAPI×RailsでスキーマファーストなAPI開発O
GiFTの制作ワークフロー [2020 ver.]2020.02.23 制作する上でのさまざまなコミュニケーションの方法を共有しつつ、どうしていきたいか、どう変えていくか考えていきます。 在宅勤務が推奨されている現在、さまざまな会社での現状が共有されていていますね。 クックパッドの在宅勤務環境 - クックパッド開発者ブログ GMO ペパボのリモートワーク状況 2020 - ペパボテックブログ 1つ1つのノウハウの共有というのはもちろん、社員を多く抱える企業がこのような取り組みを共有してくれるのは業界全体にとっても良いことだなと思います。 業界や社会を構成しているのは1つ1つの会社であり、それを動かしているのは自分だという意識と実践を忘れないようにしたいです。ということでGiFTでのコミュニケーションについてもまとめました。 とはいえ現状は4人の会社ですし、リモートワークに限らずどのように仕
GitHubを少し便利に使えるようなChrome拡張機能を作った2020.02.24 日々使うGitHubで外部リンクをブラウザの別タブで開けたらいいなと日頃から思っていたので、それを解決するChrome拡張機能を作って動かしてみました。 前書き最近は仕事・プライベートに限らず、PCやスマホでWebブラウザを開かない日はないと言っても過言ではないように思います。 その中でも GitHub は個人的に利用する頻度が高いサービスのひとつです。 自分の関わるプロジェクトでPull RequestやIssueを見るだけでなく、OSSのリポジトリでREADMEを読んで使い方を学んだり、ソースコードを直接読むこともあるでしょう。 そんななかでちょっとした不満というか、ここがこうだったらいいのになと思ったのがリンクを開く時の挙動でした。 やりたいことGitHubのWebページで外部リンクを新規タブで開け
Prisma2を使ってREST APIを実装してみる2020.01.23 Modern DB toolkitと謳うPrisma2の使い心地を試すべく、Prisma2のツールを使ってREST APIを実装してみました。 Prisma というデータベースに関する便利な機能を提供するツールをずっと触ってみようと思っていたのですが、次期バージョンが鋭意開発中でプレビュー版として使えるようなので簡単なREST APIを開発しながら使い勝手を見てみました。(現行のバージョン1は全く触れたことがありません) Prismaprisma/prisma2Prisma2についてREADMEによると Prisma2 は以下のツールで構成されます。 Prisma Client JS: Type-safe and auto-generated database client (“ORM replacement”)Pr
NuxtプロジェクトへのStorybookの導入2019.11.17 StorybookのNuxtを使っているプロジェクトへの導入と所感をまとめました。 * 2020/04/14 @storybook/vue 5.3.0以降のアップデートを追記しました。 最近フロントエンドのチーム開発環境の整備の一環として、Storybookの導入を行いました。 Storybook 5.3の公開により、設定方法が変更されましたので、追記・修正いたしました。 参考: https://medium.com/storybookjs/declarative-storybook-configuration-49912f77b78 導入背景背景としては、現在弊社チームとしてはデザイナー、フロントエンドエンジニアの他に、インターン的にマークアップを手伝ってくれている人がいます。 デザイナー、エンジニア間では過去に何度も
デザイナーが思うLP制作でSTUDIOを使う5つのメリット2020.01.16 HTMLやCSS, JSでマークアップするのではなく、ウェブサービス上のGUIでウェブサイトをつくることができる"STUDIO"というサービスを触ってみたので感想をまとめました。マークアップまで担当するデザイナー、という目線で面白かった部分にフォーカスしています。 STUDIOについてなにも知らない!という方はこちらの公式から。 この手の似たサービスには、WixやSquarespaceなどがありますね。その中でも国産の分かりやすいサービスとして話題になっています。 僕の中では、コードを書かずにウェブサイトを作れる = コードの中身について気にしない、というのが今までのビルダーの考え方だったと思っていて、吐き出されるHTMLについては目をつぶるもの、という認識でした。要素の位置とか配置はposition:abso
Laravelのfactoryのinsertを改善してテストの効率化をした2019.12.24 Laravelのfactoryによるデータ作成を効率化させて、seederで時間がかかっていた部分を改善した内容について書きました。 環境Laravel 5系Laravelのfactoryは強力で、階層構造を持ったデータも直感的な記述で作成することができます。ですが、1件ずつinsertが発行されてしまう為、少し注意が必要です。 // usersを5件つくる factory(User::class, 3) ->create() ->each(function (User $user) { // ordersを5件つくる factory(Order::class, 5) ->create(['user_id' => $user->id]) ->each(function (Order $order
OpenAPIのスキーマを分割・構造化していく方法2019.12.22 ファイルが大きくなりがちなOpenAPIのスキーマの定義ファイルを分割・構造化して運用していく方法について書きました。 前の記事でOpenAPIのスキーマを中心に開発を進める方針についてに書きました。 OpenAPIやSwaggerのファイルを記述していくとよくあるつらい点は、内容に対してファイルが肥大化しやすいことだと思います。(エンドポイントはそんなにないのに数百行とか😇) 上記のファイルが大きくなるというつらみは結構深刻な問題だと考えているので、 $ref を使ってファイルを分割しつつスキーマを書いていく方針にしようかと思っています。 Using $refただ、現状OpenAPIと連携できるツールでもファイルの参照を解釈できるものがあまりなさそうなので結局1つのファイルにしておくと使いやすいかなとも考えています
Contentfulを使い倒したくてContentful芸を磨く【検索・絞り込み編】2019.08.10 Headless CMSとしても有名なContentfulですが、ブログ記事を見ているとそこまで使い倒している記事を見たことはない気がしたので、一歩踏み込んだ使い方を書いてみようかと思います。 (実際にやってみながら少しずつ追記します) タグ付けとタグでの絞り込みまずタグの作り方ですが、 Contentでブログ以外にTagなどを作成します。 Authorと同じですね。 そして、Blog記事のContent modelを編集し、 Referencesを追加します。 この時、1個のみでも複数でも構いません。 Contentでタグをいくつか作成し、記事に紐づけてみましょう。(Authorを選択するのと同じ要領です) それだけで記事にはタグ付けができた状態になります。 あとは、ブログ記事を表示
Nuxt + Contentful + Firebase Hosting のJamstackを使ったサービス開発2019.12.13 今年はContentful芸のブログばかり書いていたら、Jamstackおじさん(通称Jamおじさん)になってしまいました。 今回は実際にリリースしたサービスでどのように実装したかを書いてみたいと思います。 最終更新 : 2019/12/16 今年はコーポレートサイトやオウンドメディアの開発には ContentfulやFirebaseを使ったサーバーレスな構成を多用させていただきました😇 2019年にContentfulを使って作ってきたものは、表に出せるもので以下のものがあります。 株式会社Neo Sports様 コーポレートサイト大崎電気工業株式会社様 farmwatch ブランドサイト弊社コーポレートサイトそれらの開発の中で知見が溜まってきたな〜とい
committee×OpenAPI×RailsでスキーマファーストなAPI開発2019.12.01 committeeというgemとOpenAPIのスキーマを使ってRailsでスキーマファーストなAPI開発を試してみました。 弊社でWebアプリケーションを制作する場合、フロントエンドとバックエンドは別々に開発することが多いです。 フロントはほぼNuxt.jsですが、APIは誰が主導するかや求められるスピード感などでプロジェクトごとに変わってきます。 私が主導するプロジェクトである程度スピード感も求められる場合は主にRuby On Railsで開発をしています。(以下Railsで開発するという前提で話を進めます) 前提課題感フロントエンドとバックエンドのプロジェクトが別々かどうかはあまり問題ではありませんが、APIの実装を担当する人とフロントエンドでAPIの組み込みを担当する人が異なる場合は
このページを最初にブックマークしてみませんか?
『gift-tech.co.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く