Chatwork Creator's Note

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

ビジネスチャット「Chatwork」のエンジニアとデザイナーのブログです。

読者になる

品質管理担当者としてSonarCloudさんがジョインしました!

こんにちは。都志(@louvre2489)です。

突然ですが、みなさんの開発/保守しているシステムのソースコードは読みやすいですか?それとも読みにくいですか?

自信を持って「読みやすいです!」と答えたいところですが、「う〜ん・・・」となってしまう方は多いのではないでしょうか?

私たちも同様の悩みを抱えています。ソースコードはどれだけ責務分割を意識して丁寧に書いても、長年の開発/保守の中で徐々に複雑化し、読みにくくなっていってしまうと思います。

そのような悩みを抱える中で、Chatworkでは全社的にSonarCloudを導入することにしました。まだ導入したばかりなので手探りで運用している点もありますが、本ブログではChatworkでのSonarCloud運用事例をご紹介したいと思います。

「SonarCloud(または後述するSonarQube)」は日本語の情報も少なく、決して馴染みのあるツールではないと思いますので、本ブログを通してSonarCloudのメリットを知っていただいて導入検討のきっかけになれば、と思います。

続きを読む

ULID生成器をScalaで実装してみた

おはこんにちは、かとじゅん(@j5ik2o)です。 今回の記事は、IDフォーマットの一種であるULIDの実装についての記事です。

ULIDよーわからんという人は、以下の僕の記事を参照してみてください。 zenn.dev

ID生成をどうするか議論によくなりますが、最近はソート可能なUUIDとしてULIDが話題にあがります。128ビットでかつ文字列型のキーが許容できるのであれば、ULIDはよい選択肢になりそうです。

続きを読む

簡単!Chrome拡張でオレオレChatwork!

自己紹介

こんにちは。竹川です。@tttyya
2020年4月1日より新卒としてChatworkに入らせていただきました。
サーバーサイド開発部(Scala)にて、やらせてもらってます。

Chrome拡張作り始めたキッカケ

同じScalaチームの先輩と、
「Chatworkに新機能が付くならどんな機能が欲しい?」という雑談をしていました。

とある機能の話になったとき、
「この機能、軽くChrome拡張で実装してみたことあるんですけど」
と涼しい顔で画面共有しながら自慢してきました。
「軽く!!!????Chrome拡張で機能を追加!!!??」とビックリ仰天。
それは、機能としてしっかり動作していて、こんな立派なものが軽く作れるの???Chrome拡張スゲーーーー!!!と思いました。

何を隠そう、わたくし竹川、フロントエンドは知識も経験もほぼ一切ないのです。
どれくらいの工数で、どれくらいの苦労で実装されたのか。そう軽く作れるものなのか。
わからない…わからないならやってみよう。
さぁ竹川も軽くChrome拡張を作ってみよう。というのがキッカケです。

続きを読む

対象別 アクセシビリティ啓蒙例

こんにちは、守谷(@emim)です。

当Creator's noteでは茶藤さんというキャラクターも爆誕し、今月はCreator's Note強化月間!となっているのですが、守谷個人的には週末におこなわれるイベントに照準を合わせて、ひとりWebアクセシビリティ強化月間!開催中です。

あ、ぜひ、Webアクセシビリティの学校 オンライン特別授業(デザイナー特集)もどうぞ〜。現在最終調整真っ只中です✊🏻

a11yschool.doorkeeper.jp

さてさて今回は、前回のエントリー祝 🎉 アクセシビリティ改善チームができました! - Chatwork Creator's Noteに入りきれなくなって泣く泣く断念した、「エンジニア以外向け」におこなったWebアクセシビリティの啓蒙施策を紹介します。

ポイントは「私が知ってる情報を全員が知っているわけではない。」という前提を忘れず、いつでも疑問に応えられる知識を蓄えつつ、対象に合ったアプローチをする、というところです。

続きを読む

iOS アプリのタイムラインで info タグを表示する実装について

こんにちは。モバイルアプリケーション開発部の iOS アプリエンジニア、安宅 (@at_aka) です。

Chatwork の iOS アプリは現在、絶賛 Swift 化の真っ最中です。私もメインのプロジェクトの傍ら、タイムラインのメッセージ表示回りの Swift 化をやっています。これが少し手の込んだことをしているので、本日は Chatwork の iOS アプリがどのようにして info タグを表示するのか説明してみようと思います。

エッジケースのケアまで含めると話が大きく広がります。それに Swift のコードを読んでも面白くないでしょう。ですので、デザイナーの皆さんにも分かるように Swift のソースコードは極力出さずにエッセンスを書いてみます。

なお、Swift 化の前と後とでは、実装方法に少なからず違いが出ています。Swift 化したメッセージ表示はまだリリースされていませんが、ここは Sneak Preview ということで Swift 版での実装をベースに話を進めます。

続きを読む

リアクティブは難しいが役に立つ

お久しぶりです、かとじゅん(@j5ik2o)です。テックブログを書くのは何年ぶりか…。

サービスが停止したり応答性が低下すると、お叱りや逆に励ましをいただきますが、エンジニアとして設計レベルからそういった問題に対処するにはどうするか、日々精進しているところですmm。この記事はそういう論点で注目されている「リアクティブ原則」についてまとめてみたいと思います。

それなりのボリュームになってしまったので、時間があるときに読んでいただければと思います。

さて、Linux Foundation内の新たなトップレベルプロジェクトであるReactive Foundationが主催する、Reactive Summit 2020が11月10日にオンラインで開催されたので参加しました。

www.reactivesummit.org

参加されていたスピーカーはLightbendをはじめ、Netflix, Facebook, Red Hat, Pivotal, IBM, Tesla などなど、錚々たる企業のエンジニアが登壇されていました。

www.reactivesummit.org

続きを読む

Migrating our PHP Legend System from EC2 to Kubernetes, Part 3: Cluster Structuring in Chatwork and Update Strategies

Hello! I’m cw-ozaki from the SRE Group.

This is a continuation of the Part 2 article. Assuming that migrating from EC2 to Kubernetes is fine, I will discuss how Chatwork’s Kubernetes clusters are structured and how the updates are strategized.

creators-note.chatwork.com

creators-note.chatwork.com

These topics don’t come up very often. I hope this can be an opportunity to hear a little more about how other companies are doing it.

  • Chatwork’s Kubernetes Cluster Structures and Update Strategy
  • Kubernetes Cluster Update Interval
  • Single-tenant vs. multi-tenant
    • Single-tenant
    • Multi-tenant
  • In-place vs. Blue/Green Deploy
  • Summary
続きを読む