Category:

Goでwireを使って依存性注入(DI)する

Go では依存性注入(DI)のためのコードを自動生成するツールである wire が良く利用されるようでので、早速導入したいと思います。 チュートリアルを自分が今作っているマイクロブログに当てはめただけです。 DI導入前 導入前は以下のように、自前でインスタンスを生成して引数として渡していました。 func InitializeServer() *controllers.Server { commentRepository := repositories.NewCommentRepositoryImpl() commentUsecase := usecases.NewCommentUsecase(commentRepository) server := controllers.NewServer(commentUsecase) return server } これはこれでシンプルなのですが、 Continue Reading

Posted On :
Category:

oapi-codegenでchi用APIインターフェースを自動生成

Goでマイクロブログを作成中なのですが、OpenAPIで定義したAPIスキーマからoapi-codegenを使ってchi用APIインターフェースを自動出力することにしました。 使うモジュールは以下の二つです。 oapi-codegen v1.11.0 chi v5.0.7 APIスキーマ定義 まずはAPIスキーマをyaml定義します。 VS CodeでOpen API(Swagger) Editorという拡張を入れて編集すると便利です。 以下の二つのAPIの定義を書いてます。 post /comments コメントを新規作成する get /comments コメントを全件取得する api-schema.yamlというyamlファイルを作成しました。 難しい内容ではないので、説明は割愛します。 openapi: "3.0.0" info: version: 1.0.0 t Continue Reading

Posted On :
Category:

MySQLで外部キーが貼れない原因とCharsetについて

MySQLでテーブルの作成はできるけど、外部キーを貼ろうとすると謎のエラーが発生しました。 その原因を調べる上でMySQLのCharsetの設定について多少詳しくなったのでメモっておきます。 外部キーが貼れなかったエラー 今回、新しくテーブルを作って、既存テーブルに対して外部キーを貼ろうとしたところ、エラーが発生してダメでした。 エラーログ エラーログは以下の通りでした。情報が全く足りません。。。 ERROR 1215 (HY000): Cannot add foreign key constraint そのような場合は、以下のSQLを実行することでエラーの詳細を見ることができます。 show engine innodb status; 今回は、以下のログが出力されていました。 2022-05-18 10:27:06 xxx Error in foreign key constraint Continue Reading

Posted On :

AsanaでコードブロックをハイライトするChrome Extensionを作って公開した

残念ながらAsanaでは、コードブロックをハイライトする機能が提供されていませんので作って公開しました。 https://chrome.google.com/webstore/detail/asana-highlighter/lgofbppgpileldekmjbomfdodkhholna こんな感じで動作します。 ソースコードはこちらで公開しています。 https://github.com/rinoguchi/asana_highlighter 動機 現在所属している会社ではチケット管理にAsanaを利用しているのですが、Asanaにはコードブロックをハイライトする機能がありません。 機能開発やテックサポートなどをしていると、ソースコードをAsana上に保存しておきたいケースはそれなりにあり、ソースコードが良い感じにハイライトされてないと頭に入ってきません。とても嫌な感じです。 Asan Continue Reading

Posted On :
Category:

DjangoおよびDRFのチュートリアル

久しぶりに仕事で、pythonを触ることになったのですが、DjangoとDRF(Django Rest Framework)が使われていました。 ソースコードを一見して正直どこで何が行われているのか全くわからなかったので、チュートリアルを見ながら簡単なAPIを作成し、その後、DRFを使ってAPIを作り直してみて、勉強しようと思います。 Python: 3.10.2 Django: 4.0.3 DRF: 3.13.1 作成したソースコードは以下で公開しています。 https://github.com/rinoguchi/django_rest_framework Djangoで投票アプリ構築 まずは、DRFは利用せず素のDjangoのみで、チュートリアルに従って投票(polls)アプリを作ってみたいと思います。 環境構築 poetryを使って環境構築しました。 pythonの仮想環境を作って Continue Reading

Posted On :
Category:

Goのお勉強(環境構築+Tour of Go)

バックエンドのプログラミング言語として、Go言語は今後も含めてはやり続ける印象を持っているのですが、自分自身は以前少しだけ業務で触ったことがあるだけでほとんど経験がないので、Tour of Goをやってみることにしました。 Go言語を書く人をGopherというらしいので、Gopherを名乗れるように頑張っていこうと思います。 実際にやってみたソースコードは、GitHubで公開してます。 https://github.com/rinoguchi/go_toor Goのインストール こちらからダウンロードする方法もあるのですが、複数のプロジェクトで異なるバージョンを使い分けたりすることも考えると、Go自体のバージョン管理を簡単にできる方が良さそうです。 pyenvやnvmのGo版ともいうべきgoenvというものがあるのでそちらでインストールして行きます。このへんを見ながらやってみようと思います Continue Reading

Posted On :

楽天銀行と会計freee連携スクリプト

先日、会計freeeから、以下のような無慈悲なアナウンスがありました。 2月24日(木)以降は、楽天銀行のインターネットバンキングから口座明細データのCSVファイルをダウンロードしfreee会計にアップロードする対応を行っていただく必要があります。 いや、手作業を減らしたくて会計freeeにしたのに、それはないですよfreeeさん、って感じです。 目の前には、以下の三つの選択肢があります。 freeeをやめる 楽天銀行をやめる 手作業を受け入れる どれも選びたくありません。。 よくよく考えると自分はエンジニアなので、第四の選択肢として「スクレイピングして明細を自動で取り込む」ことができそうですので、やってみることにしました。 作るもの Node.jsで、puppeteer を利用して、楽天銀行の個人ビジネス口座の利用明細CSVをダウンロードして、会計freeeの口座情報に明細アップロードす Continue Reading

Posted On :
Category:

Amplify SDK(JavaScript)でCognitoの認証機能を試す

この記事では、Amplify SDK(JavaScript)を使い、Cognitoの認証機能を試してみたいと思います。 ただ、Amplify でアプリを作成したいわけではないので、amplify initなどは使わず、Amplify SDKだけを利用する形で検証してみたいと思います。 これができれば、既存のアプリにCognitoを組み込みたい場合にも都合が良さそうです。 登場人物 今回はホストされたUIは利用せず、UIを自作した上でAPIを直接呼び出して、サインアップ、サインインなどの処理を行います。 Cognito ユーザプール サインアップ画面 コード確認画面 サインイン画面 現在のセッション確認画面 パスワード変更画面 パスワード忘れ画面 ユーザプールを作成 AWSコンソール画面からユーザプールを作成します。 APIの検証が主目的なので、最もシンプルな構成にしようと思います。 1.サ Continue Reading

Posted On :
Category:

初めての青色申告(確定申告)

2021年6月に会社員からフリーランスに転向したのですが、この記事は、初めてフリーランスとして確定申告を実施するにあたって、その内容をメモっておいたものになります。 2021年12月までほとんど何もしておらず、この記事を書きながら作業を進めている状況です。確定申告が完了するまで随時追記していきます。 青色申告とは 青色申告とは、複式帳簿を記帳した上でそのデータをもとに確定申告を行うことで、さらにe-Taxを利用して電子申告することで最大65万円の控除を受けることができる制度で、フリーランスであれば誰もが利用する制度だと思います。 具体的には、以下の対応を必要があるようです。 青色申告承認申請書を税務署に出す 私は開業届けと同時に出しました 開業から二ヶ月以内に出す必要があるようです 日々の取引を複式帳簿で記録する 確定申告書類を作成する 決算書3枚と貸借対照表を作成する 作成した書類を元に Continue Reading

Posted On :
Category:

husky v7とlint-stagedでコミット時にリント実行

以前から husky と lint-staged を使ってコミット時にリンターを実行していたのですが、huskyのバージョンがv7に上がってから、設定方法が少し変わり、pakcage.jsonだけで完結しなくなったので、改めて設定方法を紹介します。 インストールと初期設定 自力でゼロから設定するのは結構難しいですが、huskyとlint-stagedをインストールして、サンプル初期設定を作成してくれる便利なコマンドが提供されていますので、これを実行します。 npx mrm@2 lint-staged 実行結果は以下の通りです。 package.jsonに以下が追加される huskyの初期化スクリプトを実行する設定が "scripts": { "prepare": "husky install" }, => npm insta Continue Reading

Posted On :