Toyokumo Tech Blog

https://tech.toyokumo.co.jp/

トヨクモ株式会社の開発本部のブログです。

フィード

記事のアイキャッチ画像
背景色と文字色でどの色の組み合わせが見やすいか?Webデザイナもプログラマも迷わなくなる方法
はてなブックマークアイコン 1
Toyokumo Tech Blog
北川です。 先日、任意の色の背景がある時、テキストの文字色を黒か白どちらを使うのが適当か?という問題に当たりました。最終的にまあまあ満足のいく結果が得られたので記事にしました。 背景色と文字色の問題 人間が文字色を決めた これは色々な背景色について黒か白の文字色の選択を筆者の主観に基づき決めた画像です。社内でフィードバックを求めたところ「黄緑や水色が見にくい」と不評でした。 このように当人としては見やすいと思っても、他の人から見やすいとは限りません。 またよくある問題として、一律黒文字テキストでスタイリングしていたがボタンの塗りつぶしが濃い色のときに見辛くなってしまった、ということもあると思い…
6時間前
記事のアイキャッチ画像
4月のTokyo Clojure会を開催しました!
Toyokumo Tech Blog
自己紹介 こんにちは!アーロンと申します。4月1日にトヨクモのエンジニアとして入社させていただいて主にClojureについてブログを書いてる人です。アメリカ人で純粋な日本語話者ではないのでよろしくお願いします! Github - aburd (Aaron B) · GitHub 概要 4月11日にトヨクモのオフィスで4月のTokyo Clojure会を開催させていただきました! 元々の開催者はPaul Chunという方なんですが、開催することはできなくなりました。このグループで僕はClojure勉強できたので、無くなったら残念に思ってグループの管理者の責任を渡してもらいました。ちょうど僕がトヨ…
23日前
記事のアイキャッチ画像
Clojureを静的型付け言語にする
Toyokumo Tech Blog
Clojureをschema.coreの型解析を静的に行うことで静的型付け言語のようにしていく方法を紹介します!
1年前
記事のアイキャッチ画像
Babashka pods から使う clj-kondo
Toyokumo Tech Blog
開発本部の飯塚です。 この記事は Clojure Advent Calendar 2022 5日目の穴埋めに向けた記事です。 今回は clj-kondo を Babashka pods として利用する方法を簡単に解説したいと思います。 用語の説明 clj-kondo Babashka Babashka pods Babashka pods としての clj-kondo 準備 プロジェクトの解析 public な var の抽出 結果の出力 最後に 用語の説明 clj-kondo clj-kondo とは何か、どう使うのかについては以下の記事でまとめているので もし知らなければ先にこちらを参照す…
1年前
記事のアイキャッチ画像
Thanks OSS Award というサイトを公開しました
Toyokumo Tech Blog
Thanks OSSチーム チームリーダーの飯塚です。 タイトルの通りですがこの度、Thanks OSS Award というサイトをついに公開できたのでその紹介です。 Thanks OSS Award とは 究極の目標 活動裏話 GitHub Sponsors が有効でない GitHub Sponsors の任意金額の開放 最後に Thanks OSS Award とは Thanks OSS Award とは私達の製品開発で使用しているライブラリ/ツールなどにおいて、 年度単位で選出した開発者の方々にその開発の継続を金銭的に支援しましょうという活動です。 oss.toyokumo.co.jp …
2年前
記事のアイキャッチ画像
シンプルな例で理解するWASMの基礎の基礎
Toyokumo Tech Blog
こんにちは。開発本部の松尾です。 今回は、趣味でWebAssemblyをターゲットにしたコンパイラを作った知見を元に、WebAssemblyについての解説記事を書きました。 WASMとは? WASMの用途やメリット 今回やること テキスト形式について Real World WASM WASMとは? WebAssemblyの略で、Webプラットフォーム上で実行出来るように設計された、命令セット及び言語のことです。 Webにおいて広く使われている JavaScriptが、文字列からパースされて動的に実行されているのに対して、 WASMは、機械語に近い状態にコンパイルされたコードをバイナリ形式で配信…
2年前
記事のアイキャッチ画像
Clojureで作るAPI RESTful APIを追加する
Toyokumo Tech Blog
[連載]Clojureで作るAPIの12記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 前回記事ではRing Middlewareを追加してAPIとしての体裁を整えました。 今回はRESTful APIとして振る舞うために足りない仕組みの整備をしていきます。 RESTful APIに必要な残りの要素 パスパラメーターの制御 バリデーション おわりに RESTful APIに必要な残りの要素 実際のところこれまでの実装によって、ルーティングやJSONのエンコード/デコードなどAPIとしては十分な機能を備えるようになってきました。 その上でRESTful APIとし…
2年前
記事のアイキャッチ画像
Clojureで作るAPI RingMiddlewareを追加してAPIらしくする
Toyokumo Tech Blog
[連載]Clojureで作るAPIの11記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 前回記事ではルーターを追加して設定しました。 今回はその上にRing Middlewareを追加してAPIとしての体裁を整えていきます。 なお、Ring Middlewareについては次の記事で詳細に解説しています。 以降では次の記事をご理解いただいた前提で進めていきますので、まだの方は目を通しておいてください。 tech.toyokumo.co.jp APIリクエストをロギングする 定番のMiddlewareをまとめて入れる JSONの入出力に対応する おわりに APIリク…
2年前
記事のアイキャッチ画像
Clojureで作るAPI ルーターを追加する
Toyokumo Tech Blog
[連載]Clojureで作るAPIの10記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp これまでWebアプリケーションの開発をするための準備をしてきましたが、これからは実際にWebアプリケーションとしての機能を追加していきます。 今回の記事ではWebアプリケーションにルーターを追加していきます。 ルーターの必要性 reititを追加する Handlerを追加する Routerを定義する RouterからRing Handlerを作る 開発生産性を引き上げる 評価のし忘れを防ぐ Systemの再起動を減らす おわりに ルーターの必要性 今まで作ってきたアプリケーシ…
2年前
記事のアイキャッチ画像
Clojureで作るAPI テストできるようにする
Toyokumo Tech Blog
[連載]Clojureで作るAPIの9記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp 現在開発しているプロジェクトにはテスト対象自体がまださほどありませんが、先にテストを書ける環境を整えておくことは今後の開発の健全性のために重要です。 そこでこの記事では、テストを実行できる環境を整えていきます。 最初のテスト テストランナー Makefileに追加 おわりに 最初のテスト テスティングライブラリには公式のclojure.testを使っていきます。 かんたんに設定を読み込む関数のテストを書いてみます。 ;; ./test/cljapi/config_test.cl…
2年前
記事のアイキャッチ画像
Clojureで作るAPI ロギングできるようにする
Toyokumo Tech Blog
[連載]Clojureで作るAPIの8記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではロギングをできるようにしていきます。 Javaのロギングの歴史的経緯と現在 unilogを使って設定する Systemと統合する おわりに Javaのロギングの歴史的経緯と現在 Clojureアプリケーションは多くの部分でJavaのライブラリに依存していることから、ClojureアプリケーションのロギングにJavaのロギングの歴史的経緯が関わってきます。 Javaのロギングの歴史的経緯は複雑です。この項ではそれを必要最低限理解するための情報を提供したいと思います。 …
2年前
記事のアイキャッチ画像
Clojureのリンターclj-kondoの使い方
Toyokumo Tech Blog
開発本部の飯塚です。 今回は Clojure のリンターである clj-kondo の使い方をちょっと踏み込んだところまで説明できたらと思います。 github.com Clojure でプログラムを書いている人であればすでにほとんどの方は使っているのではと思うのですが、 もし使っていなければ使う手助けに、使っている場合はこんな事もできるかという発見に繋がれば良いなと思います。 なお clojure-lsp は clj-kondo を使っていて、Calva は clojure-lsp を使っているので、直接 clj-kondo を使っていなくても恩恵に預かってる方も多いかと思います。 導入 使…
2年前
記事のアイキャッチ画像
Toyokumoでやったこと・学んだことまとめ
Toyokumo Tech Blog
こんにちは、開発本部の石井です。個人的に関心のある分野に転向するために2022年の7月で退職することになったのですが、これは弊社でやったこと・学んだことをまとめておく良いタイミングなのでは?と思い、退職エントリの形でまとめてみることにしました。 やったこと メール認証の導入 新型コロナウイルスワクチン予約への対応 Toyokumo kintoneApp認証 公開ビュー/公開フォームのカスタムURL 学び 関係者の目線に立つことについて 目的をもった勉強について 過度な情報共有と注意すべきことについて やったこと 入社してから現在までに弊社でやったことについてまとめてみたいと思います。 入社時点…
2年前
記事のアイキャッチ画像
Clojureで作るAPI 設定をednで管理する
Toyokumo Tech Blog
[連載]Clojureで作るAPIの7記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではアプリケーションの設定をClojureのソースではない設定ファイルで管理できるようにしていきます。 なぜ設定ファイルで管理する必要があるのか aeroを追加 設定ファイルの追加 設定の読み込み Systemとの統合 おわりに なぜ設定ファイルで管理する必要があるのか 実際のアプリケーションでは、開発環境・ステージング環境・本番環境と複数の環境で動くようにしなければいけません。 DBの接続先や外部のAPIキーなど、動作環境によって切り替えたい値は複数あります。 設定値…
2年前
記事のアイキャッチ画像
Clojureで作るAPI ビルドして実行できるようにする
Toyokumo Tech Blog
[連載]Clojureで作るAPIの6記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではビルドしてJARファイルを生成し、 java コマンドでアプリケーションを実行できるようにしていきます。 JARファイルとは tools.buildを使う Makefileに追記 おわりに JARファイルとは まずJARファイルとは、Javaのライブラリやアプリケーションを配布するためにJavaクラスファイル、メタデータ、リソース(textや画像など)を1つのファイルにまとめた物です。 詳細については英語版のWikipediaをご覧ください。 en.wikipedi…
2年前
記事のアイキャッチ画像
Clojureで作るAPI 開発用のコードを分離する
Toyokumo Tech Blog
[連載]Clojureで作るAPIの5記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事では開発用のコードと実際のコードとを分離し、開発用の関数が評価された状態でREPLが起動されるようにすることで、今後の生産性を上げるようにします。 aliasを追加 user.clj おわりに aliasを追加 今のところdeps.ednで :paths ["src"] と指定しているので、ライブラリ以外でクラスパスに含まれるファイルはsrc以下のものです。 しかしsrc以下に開発のためのコードを含めてしまうと、それらもビルドの対象になってしまうので避けたいです。 そこ…
2年前
記事のアイキャッチ画像
Clojureで作るAPI ライフサイクルと依存関係を管理できるようにする
Toyokumo Tech Blog
[連載]Clojureで作るAPIの4記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではREPLを再起動することなくWebサーバーを再起動できるようにしていきます。 なぜ再起動できる必要があるのか 使用するライブラリを追加 Componentを実装 Systemを構築する おわりに なぜ再起動できる必要があるのか そもそもなんでそんなことが必要なのかというと、コードを書き換えた後で、REPLに持たせている状態を今のコードに合わせて即座に置き換えたいからです。 前回の記事で (jetty/run-jetty ring-handler {:port 800…
2年前
記事のアイキャッチ画像
Clojureで作るAPI Web サーバーを立ち上げる
Toyokumo Tech Blog
[連載]Clojureで作るAPIの3記事目です。 前回の記事はこちらです。 tech.toyokumo.co.jp この記事ではWebサーバーを立ち上げていきます。 Webサーバーのライブラリを追加 まずは依存関係にWebサーバーのライブラリを追加します。 deps.edn を次のようにしてください。 {:paths ["src"] :deps {org.clojure/clojure {:mvn/version "1.11.1"} info.sunng/ring-jetty9-adapter {:mvn/version "0.17.6" :exclusions [org.slf4j/slf…
2年前
記事のアイキャッチ画像
Clojure で作るAPI 開発環境を構築する
Toyokumo Tech Blog
[連載]Clojureで作るAPIの2記事目です。 まずは開発環境を作るところからやっていきましょう。 要件 インストール REPLを動かす First commit フォーマッターの設定 リンターの設定 Makefileにまとめる おわりに 要件 今回は次の要素を必須の要件として構築を進めます。 REPLが動いて、エディタ上から式を評価して結果を見ることができる ファイル保存時に自動でフォーマットされる コードを書いているときに自動でリンターが走る 特にフォーマッターとリンターは最初から自動的に動作するようにしておくと後で楽です。 インストール JDK11 Clojure cljstyle …
2年前
記事のアイキャッチ画像
Clojureで作るAPI はじめに
Toyokumo Tech Blog
これから、「Clojureで作るAPI」と題して、Clojureを使ってAPIを作る方法をステップバイステップで解説していきたいと思います。 内容としては開発環境の構築から始め、必要な事柄を理解しながら徐々に機能を足していき、最終的には本番環境で使えるようなAPIを作れるところまで到達したいと思っています。 作っていくものも、本番で使うことができないようなものではなく、実際に弊社が本番環境で行なっていることに近い構成を取りながら、認証・認可といった機能も持ち、今後何をしていけば自分が必要な機能を足していくことができるのかわかる水準を目指します。 本筋と関係のない必要な知識も適宜リンクを提示して…
2年前
記事のアイキャッチ画像
昇給によって年収1000万円を超えるエンジニアを産み出すという目標の達成報告
Toyokumo Tech Blog
こんにちは。CTOの木下です。 「昇給によって年収1,000万円を超えるソフトウェアエンジニアを産み出す」という目標の達成報告をしたいと思います。 実は初めて達成してからかなり時間が経ってしまっているのですが、これまで、そしてこれからの取り組みによってさらに多くのメンバーが達成していく見込みであることを受け、区切りとして記事に残しておきたいなと考えてこの記事を書くことにしました。 遠い目標 賞与の導入と増額へ 昇給の推移 目標達成 なぜ昇給にこだわったのか? これから 遠い目標 私が入社したのは2016年3月なのですが、当時CTOの落合は「昇給によって年収1,000万円を超えるエンジニアを産み…
2年前
記事のアイキャッチ画像
Clojure記事まとめ
Toyokumo Tech Blog
弊社で書いたClojure関連記事をまとめます。 リンクになっていないものは今後執筆予定です。 開発環境 エディター フォーマッター リンター プロジェクト Clojure基礎知識 Clojureを使ったWebアプリケーション開発のための基礎知識 [連載]Clojureで作るAPI ライブラリ活用 その他 まとめ 開発環境 エディター Spacemacsで始めるClojure開発 Cursive(Intellij)で始めるClojure開発 VSCodeで始めるClojure開発 Vimで始めるClojure開発 フォーマッター Clojureのフォーマッターcljstyleの使い方 リンター…
2年前
記事のアイキャッチ画像
Spacemacsで始める Clojure 開発
Toyokumo Tech Blog
こんにちは。開発本部の木下です。 先日ClojureアプリケーションをLSPで開発するための方法について書きました。 tech.toyokumo.co.jp そこで本記事では上記のような Clojure アプリケーションをSpacemacsで開発するための設定について記載します。 なお、Spacemacs は現在のメインブランチである develop ブランチを使用していることを前提としています。 共通設定 プロジェクト固有の設定 ケース 1: alias を指定した REPL への接続 ケース 2: shadow-cljs と deps.edn を組み合わせて使っている場合 まとめ 共通設定…
2年前
記事のアイキャッチ画像
プリントクリエイターに縦書き機能を実装しました
Toyokumo Tech Blog
こんばんは。開発本部の石川です。 今回は、弊社のkintone連携製品の一つであるプリントクリエイターに「縦書き出力機能」*1*2を追加した軌跡を備忘録として書き残しておこうと思います。 プリントクリエイターとは 縦書きに対応したライブラリが無い問題 縦書きを実現する方法の検討 TCPDF改造案 -> ボツ 文字列の描画方向を変更する 縦書き用の記号を利用するように 非埋め込みフォントで縦書きする 縦書き用TCPDF独自フォントデータを作成する 文字列を1文字ずつ分割して縦に並べる -> 採用 まとめ プリントクリエイターとは サイボウズ社が提供するkintoneに連携するWebサービスで、k…
2年前
記事のアイキャッチ画像
モノレポなClojureプロジェクトをClojure LSPで開発するための設定方法
Toyokumo Tech Blog
こんにちは。開発本部の木下です。 Visual Studio Codeの普及と同じくしてLSP(Language Server Protocol)を開発で使用することは普通のこととして浸透したように思います。 LSP があれば、Intellij IDEAに代表される IDE が提供してきたような開発体験を VSCode や Vim や Emacs といった普段から自分が使用しているエディタで得られることができるようになります。 しかしながら弊社の Clojure アプリケーションで LSP を使った開発を生産的に行うには 1 つ問題がありました。 この記事ではどういった問題なのかということと、…
2年前
記事のアイキャッチ画像
大学休学 => ゲーム業界でインターン => トヨクモに就職しました
Toyokumo Tech Blog
ゲームプログラマを志して情報系の大学に進学してから、大学を休学し、Webプログラマとして就職するに至った、その経緯と心の内や初心を書き残しました。
2年前
記事のアイキャッチ画像
医学部を卒業後、トヨクモに就職して1年が経ちました
Toyokumo Tech Blog
初めまして、開発本部の細木です。 21年度新卒でトヨクモに入社し1年が経ちました。 今回は就職から1年経って今までの経験などを振り返ってみたいと思います。 就職までの経緯 医師以外の道 ITエンジニアという職業 内定を得るまで Progate(5年生の10月頃〜) AtCoder(5年生の11月頃〜) Web開発 就職活動 入社後にやったこと 4〜5月 スケジューラーチームに配属 6〜9月 React Query導入 バックエンド入門 仕事の仕方について 10〜11月のファーストリリースまで 11月ファーストリリース後〜3月 Zoom連携機能 予定詳細ポップアップの全画面表示 最近 応用情報技…
2年前
記事のアイキャッチ画像
OSSへの寄付活動について
Toyokumo Tech Blog
開発本部の飯塚です。 弊社ではオープンソースソフトウェア(以下、OSS)に対して継続的な寄付という形で開発の支援を行っています。 この件について今まで特にアウトプットがなかったので、これを機にトヨクモがOSSをどう思っているのか、なぜ寄付をしているのかをアウトプットしてみたいと思います。 トヨクモの思い OSSへの思い 弊社では製品を開発する中で様々なOSSを利用しています。 その中には企業で作られたものもあれば個人で作られたものも当然あります。 それらOSSは弊社製品を形作る重要なピースです。 欠けてしまうと代替の有無に関わらず製品の品質を保つための改修が必須となってしまいます。 つまり利用…
3年前
記事のアイキャッチ画像
トヨクモ株式会社を退職します
Toyokumo Tech Blog
開発本部の齊藤です。2021年の1月で退職することになりました。業務内容の紹介も兼ねて今まで何をやってきたか、これから何をするかについて書きます。 入社までの経緯 入社してからやったこと kintone-query-builder (2019年4月) pc-auto-save (2019年5月) kMailer (2019年6月~10月) 新製品DataCollect (2019年11月~2020年5月) 別の新製品開発 (2020年6月~) 会社員生活の感想 なぜ退職するのか 入社までの経緯 私はもともと大学の学部を卒業した後に大学院の修士課程に進学する予定でしたが、卒論があまりうまく行きま…
3年前
記事のアイキャッチ画像
メール送信ライブラリ tarayo のすすめ
Toyokumo Tech Blog
開発本部の飯塚です。 今回は担当している製品で利用しているメール送信ライブラリを自社製のものに移行した経緯や利点などをまとめてみました。 概要 kMailer というサービスの開発/運用を行っている コア機能であるメール送信のライブラリとして postal を使っていたが問題点がいくつかあった その問題点を解決しているライブラリが他になかったので開発し、移行した kMailer とは? kMailer は kintone 内に登録されているデータを利用してメール送信するというサービスです。 コア機能であるメール送信をする方法としては現状、以下2つの方法を提供しています。 お客様のSMTPサーバ…
4年前