Clojure
Clojureをschema.coreの型解析を静的に行うことで静的型付け言語のようにしていく方法を紹介します!
開発本部の飯塚です。 この記事は Clojure Advent Calendar 2022 5日目の穴埋めに向けた記事です。 今回は clj-kondo を Babashka pods として利用する方法を簡単に解説したいと思います。 用語の説明 clj-kondo Babashka Babashka pods Babashka pods とし…
[連載]Clojureで作るAPIの12記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 前回記事ではRing Middlewareを追加してAPIとしての体裁を整えました。 今回はRESTful APIとして振る舞うために足りない仕組みの整備をしていきます。 RESTful APIに…
[連載]Clojureで作るAPIの11記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 前回記事ではルーターを追加して設定しました。 今回はその上にRing Middlewareを追加してAPIとしての体裁を整えていきます。 なお、Ring Middlewareについては次の記…
[連載]Clojureで作るAPIの10記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp これまでWebアプリケーションの開発をするための準備をしてきましたが、これからは実際にWebアプリケーションとしての機能を追加していきます。 今回の記事ではWebア…
[連載]Clojureで作るAPIの9記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 現在開発しているプロジェクトにはテスト対象自体がまださほどありませんが、先にテストを書ける環境を整えておくことは今後の開発の健全性のために重要です。 そこで…
[連載]Clojureで作るAPIの8記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではロギングをできるようにしていきます。 Javaのロギングの歴史的経緯と現在 unilogを使って設定する Systemと統合する おわりに Javaのロギングの歴史的経…
開発本部の飯塚です。 今回は Clojure のリンターである clj-kondo の使い方をちょっと踏み込んだところまで説明できたらと思います。 github.com Clojure でプログラムを書いている人であればすでにほとんどの方は使っているのではと思うのですが、 もし使…
[連載]Clojureで作るAPIの7記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではアプリケーションの設定をClojureのソースではない設定ファイルで管理できるようにしていきます。 なぜ設定ファイルで管理する必要があるのか aeroを追加 …
[連載]Clojureで作るAPIの6記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではビルドしてJARファイルを生成し、 java コマンドでアプリケーションを実行できるようにしていきます。 JARファイルとは tools.buildを使う Makefileに追記…
[連載]Clojureで作るAPIの5記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事では開発用のコードと実際のコードとを分離し、開発用の関数が評価された状態でREPLが起動されるようにすることで、今後の生産性を上げるようにします。 alias…
[連載]Clojureで作るAPIの4記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではREPLを再起動することなくWebサーバーを再起動できるようにしていきます。 なぜ再起動できる必要があるのか 使用するライブラリを追加 Componentを実装 Sy…
[連載]Clojureで作るAPIの3記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではWebサーバーを立ち上げていきます。 Webサーバーのライブラリを追加 まずは依存関係にWebサーバーのライブラリを追加します。 deps.edn を次のようにして…
[連載]Clojureで作るAPIの2記事目です。 まずは開発環境を作るところからやっていきましょう。 要件 インストール REPLを動かす First commit フォーマッターの設定 リンターの設定 Makefileにまとめる おわりに 要件 今回は次の要素を必須の要件として構築…
これから、「Clojureで作るAPI」と題して、Clojureを使ってAPIを作る方法をステップバイステップで解説していきたいと思います。 内容としては開発環境の構築から始め、必要な事柄を理解しながら徐々に機能を足していき、最終的には本番環境で使えるようなAP…
弊社で書いたClojure関連記事をまとめます。 リンクになっていないものは今後執筆予定です。 開発環境 エディター フォーマッター リンター プロジェクト Clojure基礎知識 Clojureを使ったWebアプリケーション開発のための基礎知識 [連載]Clojureで作るAPI …
こんにちは。開発本部の木下です。 先日ClojureアプリケーションをLSPで開発するための方法について書きました。 tech.toyokumo.co.jp そこで本記事では上記のような Clojure アプリケーションをSpacemacsで開発するための設定について記載します。 なお、Sp…
こんにちは。開発本部の木下です。 Visual Studio Codeの普及と同じくしてLSP(Language Server Protocol)を開発で使用することは普通のこととして浸透したように思います。 LSP があれば、Intellij IDEAに代表される IDE が提供してきたような開発体験を VSC…
初めまして、開発本部の細木です。 21年度新卒でトヨクモに入社し1年が経ちました。 今回は就職から1年経って今までの経験などを振り返ってみたいと思います。 就職までの経緯 医師以外の道 ITエンジニアという職業 内定を得るまで Progate(5年生の10月頃〜)…
開発本部の飯塚です。 弊社ではオープンソースソフトウェア(以下、OSS)に対して継続的な寄付という形で開発の支援を行っています。 この件について今まで特にアウトプットがなかったので、これを機にトヨクモがOSSをどう思っているのか、なぜ寄付をしている…
開発本部の飯塚です。 今回は担当している製品で利用しているメール送信ライブラリを自社製のものに移行した経緯や利点などをまとめてみました。 概要 kMailer というサービスの開発/運用を行っている コア機能であるメール送信のライブラリとして postal を…
開発本部の飯塚です。 業務で Babashka を使う機会を無理矢理作ってみたので、その副産物を公開してみます。 動機 CloudWatch Logs からログを抽出して調査したい AWS CLI を使ってもいいが、クエリの発行、クエリの完了待ち、結果取得が面倒 良い感じにラッ…
Vim/Neovim 向けに Clojure の開発環境を提供するプラグイン vim-iced を使って Clojure 開発環境の構築をしてみましょう。 なお vim-iced は個人的に開発している拙作の Vim プラグインで、実際に私が業務で(勝手に)利用しているという実績があります。 前…
こんにちは。開発本部の江口(@egs33)です。 弊社ではClojure製の製品を開発していますが、ClojureのフォーマッターとしてOSSのcljstyleを利用しています。 利用するにあたって機能の追加やバグの修正などのコントリビュートも行いました。 tech.toyokumo.co.…
これはClojure Advent Calendar 2019の21日目の記事です。 そして、こちらの記事の続きにもなっています。 tech.toyokumo.co.jp 本記事では、RingのMiddlewareについて解説していきます。 基本的に上記の記事を理解いただいた前提で話を進めていこうと思いま…
北川です。 Clojure 始めました。 Clojure のお勉強をするにあたり何か良い題材はないかと探していたところ greglook/cljstyle というツールが目につきました。 以前からフォーマッターや linter の実装に興味があったということもあり、ちょうど良いのでこ…
これはClojure Advent Calendar 2019 - Qiitaの二日めの記事です。nil punningが難しいなあと個人的に感じているので、なぜリッチヒッキーさんはnil punningを選択したのだろうか、nil punningが優れている点は何か、ということを調べて書こうと思います。調…
こんにちは。 @makinoshi です。 トヨクモでは製品の外形監視などに、Clojureで作成したWebアプリケーションを使っています。 E2E監視に使うためにサーバー上でChrome Driverなどを動かす必要がありましたが、その環境を構成管理ツールでも、ましてや手動で…
こんにちは。開発本部の @makinoshi です。 トヨクモではメインの開発言語としてClojureを採用しています。 Clojureの文法は簡潔でデータ型も少なく、比較的覚えやすい言語だと思います。 一方でWeb開発においては、Symfony/LaravelやRuby on Railsのような…