tech.layerx.co.jp 上記の記事を参考にさせて頂いて まずはAWSマネージメントコンソール上でインフラを作成する terraform importで取り込む 作成されたtfstateを参考にしつつオプションを調べる という手順でTerraformの定義を実装していた。 その際にterra…
概要 新しいシステムに関わると、システムの概要を把握するためにモデルのコードやER図を眺めたりする。ただ、プロダクションレベルのシステムはテーブル数が多いので片っ端から読んでいてもなかなか全貌を把握するに至らない。 従って、DDDなどの文脈などで…
はじめに 私は仕事で3年以上Djangoを使っているが、副業でRailsを使う機会があった。同じそれぞれの言語を代表するフルスタックフレームワークだからそんなに違わないと思っていたらけっこう違ったので、感じた違いをメモしておきたい。 目次 フロントエン…
はじめに この記事はDjango Advent Calendar 2023の17日目の記事です。 本記事ではAriadneというスキーマファーストの思想のPythonのGraphQLライブラリとDjangoを使って、スキーマファーストのGraphQL開発に入門してみた経過と感想を書きます。 ariadnegraph…
はじめに この記事はDjango Advent Calendar 2023の10日目の記事です。 Djangoでバッチ処理を作る際には、カスタムコマンドを実装することが多いと思います。 カスタムコマンドで実装されたバッチ処理において、以下のような考慮の有無が実装担当者に依存し…
初めて指導対局を受けてきた 以下のイベントに参加させて頂き、初めてプロ棋士の指導対局を受けてきました。 会場は三軒茶屋将棋倶楽部で、指導してくださったのは宮田利男先生です。 (今、竜王戦に挑戦されている伊藤匠七段の師匠です) connpass.com 対局開…
はじめに 概要 この記事はDjango Advent Calendar 2021の19日目の記事です。 本記事ではDjangoでMySQLの全文検索機能を使う方法について紹介します。前提として、DjangoはMySQLの全文検索機能を標準ではサポートしていません。従って、いくつかのノウハウが…
概要 一般的にアプリケーションでRDBを使用する際は、 SELECT INSERT UPDATE DELETE ができればよい。これに対して、MigrationではCREATE TABLEやDROP TABLEの実行権限が必要になる。従って、両者に同じユーザーを割り当てるのはアプリケーションユーザーが…
概要 DDDに関する本を読んだり勉強会に参加したりすると「ドメインモデル貧血症」という言葉をよく目にする。ふと「ドメインモデル貧血症」という言葉が元々どこからきたのか気になったので調べてみた。 英語のWikipediaの記事 英語のWikipediaには「Anemic …
やりたいことはタイトルの通り。以下の3つの書き方があった。 ②が一番スマートだが、Enumの仕様上こういう書き方もできるんだって知っておいて損はないと思った。※ この例では都道府県コードから都道府県を引くstaticメソッドを実装している。 書き方① Enum…
概要 前回の記事に続いて、本記事では、WEBアプリ開発をする上での前提知識・スキルという意味での「言語の習得」をブレークダウンして考えてみたい。 前提 既に何らかの言語でWEBアプリケーション開発の実務経験がある人が、他の言語を習得しようとする場合…
概要 エンジニアをやっていると「新しいプログラミング言語の習得」に取り組むことがある。仕事で必要に迫られて習得しようと思うこともあるし、自分で興味をもった言語があって触ってみよう・習得してみようと思うこともあると思う。『達人プログラマ』にも…
概要 先日Scrapboxのアカウントを作成してみた。 scrapbox.ioScrapboxはGoogleアカウント連携でしかアカウントを作成できないサービス仕様になっている。従って、アカウント作成したばかりの状態だとGoogleのアカウントの個人情報が表示されてしまっている箇…
PythonでEnumを使うときの変数名の記法についてルールがあるのか気になったので調べてみた。 PEP8 PEP8には「Enumを書くときはxxxケースで書きなさい」ということは特に明記されていない。 ※ PEP8の方が、EnumがPythonに入った時期よりも、もちろん古いので…
概要 JSONを返すAPI実装するときに、以下のように共通部分でラップしたレスポンスを返すことがある。 { "header": { "code": "0", "message": "success" }, "result": { "books": [ { "id": 1, "name": "技術書1", "price": 3000 }, { "id": 2, "name": "技…
概要 ソフトウェアテストで使われるデシジョンテーブルという技法がある。gihyo.jp前からプログラムで作成できないのかな?と思っていたのだが、やってみたらPythonで意外と少ないコードで実現できた。以下で実際にデシジョンテーブルを作成しながら説明して…
Pythonでは標準モジュールのhttpにステータスコードが定数で定義されていることを最近知った。 docs.python.org今までは知らなかったので、ステータスコードで判定する処理を書くときは if response.status_code == 200: print("OK") みたいにちょっとしたコ…
概要 DjangoのUserモデルにはlast_loginというフィールドがある。Djangoに限らず、こういう系のカラムをDBに持つことはシステム上よくあるが 最後に「ログイン」という行為をした日付が入る 最後にログイン状態でアクセスした日付が入る のどちらの仕様なの…
概要 前回に引き続きRabbitMQのチュートリアルをやってみる。今回はチュートリアル1の「"Hello World!"」をやる。www.rabbitmq.com やったこと RabbitMQに接続する まずはRabbitMQに接続する。チュートリアル上のコードは以下となっているが、RabbitMQにID/P…
概要 以下の日本大学文理学部情報科学科の教授の方がクリエイティブ・コモンズで公開してくださっているチュートリアルをやっていた。zenn.dev前回まででアプリはできたので、Netlifyにデプロイしてみた。laughing-lamarr-502333.netlify.appチュートリアル…
概要 クリエイティブ・コモンズで公開されているコンテンツを変更して公開するときに、何を明記すればいいのか分からなかったので調べた。 背景 以下のReactの教材を自分でやったものをGithubとNetlifyで公開しようと思った。 zenn.dev 教材には この作品は…
概要 今までPythonでコードを書くときに例外をなんとなく雰囲気で使っていたので、ちゃんと仕様を調べてみた。 検証したこと 1. Exceptionはコンストラクタ引数をargsフィールドに保持している 以下のようなコードを例にする。 def hoge(): raise Exception(…
Googleで「requests」を検索すると最初に以下の日本語版のドキュメントが出てくる。requests-docs-ja.readthedocs.io私はこれまで、ずっとこの日本語版を参照していたが、対象としているrequestのバージョンが1.0.4とかなり古いバージョンであることに最近気…
概要 DjangoでModelのFileFieldを文字列やファイルで初期化する方法が分からなくて調べていた。※ 以下のようにModelFormを使用してファイルアップロード機能を実現する方法はいくつかヒットしたが、FileFieldを自分で初期化する方法はほとんど出てこなかった…
概要 requestsは以下のようにResponse.raise_for_status()というメソッドを使うとレスポンスのステータスコードが400系や500系だった場合に、例外を送出することができる。 bad_r = requests.get('http://httpbin.org/status/404') bad_r.raise_for_status()…
概要 Gitを使い始めるときに、最初に`git config'コマンドで以下のようにユーザー名とメールアドレスを登録する事になると思う。 $ git config --global user.name "John Doe" $ git config --global user.email johndoe@example.comgit-scm.comここで登録し…
概要 マーティン・ファウラーの『リファクタリング』が勉強になることがたくさん書いてある素晴らしい本だったので、読んだ感想や考えたことをセクション毎などの適当な粒度でメモしていきたいと思う。www.ohmsha.co.jp今回は「第6章 リファクタリングはじめ…
概要 マーティン・ファウラーの『リファクタリング』が勉強になることがたくさん書いてある素晴らしい本だったので、読んだ感想や考えたことをセクション毎などの適当な粒度でメモしていきたいと思う。www.ohmsha.co.jp今回は「第11章 APIのリファクタリング…
以下のようにpathlibを使うと、Pythonでも1行でテキストファイルの読み込み・書き込みを行うことができることを知った。 読み込み from pathlib import Path text = Path("/path/to/fizz.txt").read_text(encoding="utf-8") 書き込み from pathlib import Pa…
概要 数年ぶりにリーダブルコードを読んだ。www.amazon.co.jp前から順番にガッツリ読んだ訳ではなくて、パラパラ流し読みしつつ、引っかかったトピックを重点的に読んだ。前回読んだのは、恐らくもう5年以上前で、まだ就職する前で大学生でアルバイトでエン…