React+Reduxによる状態管理とフロントエンドの技術的負債 ─ 長く継続するサービスのアプリケーション設計 遷移なく表示コンテンツを変更できるシングルページアプリケーションでは、ページの状態管理が重要になります。現在はReactによるUI構築とReduxによる状態管理を選択しているChatworkは、jQueryなどの技術的負債と共存しながら、フロントエンド設計の見直しを重ねてきました。クライアントサイド・アーキテクトの火村智彦(@eielh)さんと、エンジニア採用広報の高瀬和之(@guvalif)さんによる解説です。 クラウド型ビジネスチャットツール「Chatwork」は、2011年3月にローンチされて10年以上にわたり開発を継続してきました。このように長く続くサービスがユーザーに価値を提供し続けるには、時間経過による変化に適応するため設計の見直しが必要になります。 しかし、設計を
React18のTransitionの動作確認をした。 useTransitionを使った例を用意し、React18のAPIを使わず同様の体験を提供すると、どのようになるかを確認する。また、startTransitionやuseDeferredValueでも同じことができるか確認する。 先に結論 Reactの18の新機能を使わずとも似たような表現はできるが体験は提供できない。即応性に大きな差がでる。また、useTransitionではisPendingが用意されているががstartTransitionやuseDeferredValueでもisPendingを実装できることも確認できた。 startTransitionが柔軟で表現力が高く、isPendingが不要ならstartTransitionで表記が単純にになるとも言えるし、isPendingを保持する必要があるためhookにする必要が
Scrum@Scaleの基本と実装 - Chatworkの実践に学ぶ「スケールするスクラム」の導入戦略 スクラムのスケーリング手法であるScrum@Scale(スクラムアットスケール)の基本的な概念、そして企業内での実践例を粕谷大輔(daiksy)さんが解説します。実践例では、Scrum@Scaleにおいて「だれが」「なにをやるのか」を、1週間のタイムスケジュールとともに解説します。 2001年にアジャイルソフトウェア開発宣言 が発表されてから20年。日本のソフトウェア開発の現場でもアジャイルはずいぶん一般的に扱われるようになってきました。そのうちの手法の1つであるスクラムについても、導入事例を多く見聞きします。 スクラムは原則的に少人数のチームに適用されることを前提としている手法ですが、さまざまな現場で扱われるようになるにつれ、規模の大きなチームへと拡張されるニーズも高まってきました。現
こんにちはー。突然ですが、聞いてくださいよー。 Babelのバージョンアップしたら「Chatworkのルーム切り替えが重くなった」と社内で言われてしまいました。 みんなの仕事の効率を悪くするわけにもいかないので、戻すしかありません。Babelの更新って、本当に怖いですよねー。 そんなわけで、こんにちは。フロントエンド開発部のひむら(id:eiel)です。 さて、この話自体は少し前のことなのですが、その際に原因を特定する余裕がなく、Babelの更新は後回しになっていました。 ルーム切り替え自体が歴史的経緯もあって、「とーっても」*1難易度が高くなっていて、最悪これを改善すれば更新できるだろうと期待もしてたりもしました。 ところが、うっかり再発させてしまったので、ここで気合をいれて改善することにしました。 今日はその話を記録しておきます。 要約 経緯 原因の特定 試しにIE11をターゲットから
こんにちは、守谷(@emim)です。 今までWebアクセシビリティについて、デザイン部*1内で勉強会を実施したり、クリエイティブ職以外への啓蒙活動などを社内でちょこちょこ開催してきました。 実施内容すべて漏れなくは報告できていませんが、このCreator's Noteでも私以外の複数のメンバーもブログ記事にまとめてくれています(Accessibilityあるいはa11yというタグで、閲覧いただけます)。 そんな中しばらく私を悩ませていたのは、いくら自分自身(デザイナー)が知識を貯めて啓蒙を進めたところで、実際プロダクトの設計フローに「アクセシビリティ施策実施」という要件が乗らない限り、永遠に改善を深部まで進められない……という現実とのジレンマでした。 そんな中! 今夏やっと、プロダクトに改善施策を反映していくためのチームを立ち上げることができました!!!👏🏻 名付けて……と思ってはいた
こんにちは、フロントエンド開発部の西口 (cw_nishiguchi) です。 Chatwork はおかげさまで、サービス開始から来年で 10 年を迎えようとしています。 この記事は、その歳月においての Web クライアントのアーキテクチャの変遷をたどるお話になります。 アーキテクチャの変遷 これまでのアーキテクチャを大まかに分けると、 サービス開始当初の jQuery 期 React 導入期 Redux 導入期 となり、現在は Redux へ移行中というステータスです。 便宜的に 3 期に分けて書きましたが、実際には jQuery 期のコードも部分的にですが、まだ現役で動いています。 アーキテクチャの刷新を実際におこなうには、それなりのコストが発生します。また、その間機能開発を止めるわけにもいかないので、エイやで一度に置き換えられないため、部分的に少しずつ機能開発と並行して進めています。
こんにちはー。 フロントエンド開発部の火村(ひむら/id:eiel)です。前回までは id:cw-himura で記事を書いていましたが、個人アカウントに切り替わりました。 よろしくおねがいします。 以前はサーバーサイド開発部に所属していましたが、2019年6月ぐらいからフロントエンドチームにヘルプとして無期限レンタル移籍中です。 主な担当している業務は「難しいバグ対応」と「これからChatworkのウェブフロントエンドをどうするかを考える」です。 昨日は期待の新人であるレオくんの入社して3ヶ月の熱烈な想いでした。アツいです。 さて、今回のお題は「レガシーフロントエンド脱却への挑戦」と雑に上から投げられたのですが、未来のことを考える作業をしているので書きやすいネタがありません。 あってもオチがつきません。 ということで、設計に役立つかもしれない話をラフに書くことにしました。 アプリケーショ
こんにちは。@eielhです。 id:cw-hayashiが投稿した記事である 「チャットワークのWebhookの署名検証を各言語で実装してみた」があります。 しかし、自分が利用しているプログラミング言語が網羅されていなかったので、続きがないのか確認してみたところ「自分でやってください」*1と言われてしまいました。 というわけで、早速挑戦してみました。 準備するもの Elixir 参考 Rust 参考 Haskell 参考 まとめ 準備するもの 必要な準備物は「チャットワークのWebhookの署名検証を各言語で実装してみた」を参照ください。 creators-note.chatwork.com Elixir 弊社ではAkkaを利用していますが、アクタープログラミングに挑戦してみるにはScalaはなかなかヘビーです。 そんな時でも、Elixirはライトに使えてアクタープログラミングの学習にも
年末年始のテレビ番組を見ていたら空しくなってきたのです。 とにかく、めでてえ名前にしていただきたくて。 鶴は千年生きるという。鶴之助はどうじゃな? 千年生きるとめでてえんですか? そうじゃなあ、千年生きたとしても、千年後には地球の気候が大きく変動して大変なことになる、と言われておるなあ。。 じゃあ、そうならないように、めでてえ名前をつけてもらえませんか? 三遊亭円丈「新寿限無」では「クローンのすりきれ」になっていますが、2008年バージョン「寿限無マイナス六パーセント」では 「炭素炭素をオフセット」 「くうねるところはソーラーパワー」 になっているらしいです。
執行役員 CPO (Chief Productivity Officer)の @hsbt です。 2017年9月18日(月)から20日(水)の期間、広島国際会議場で開催される RubyKaigi 2017 に私 @hsbt が以下の発表で登壇します。 日時 9/18(月) 14:40-15:20 場所: ホール Dahlia 発表タイトル: Gemification for Ruby 2.5/3.0 本エントリでは、発表内容の事前知識として、 Ruby のスタンダードライブラリの現状についてご紹介します。 Ruby の標準添付ライブラリ プログラミング言語 Ruby には、ネットワーク通信、CSV/XML などのフォーマットのファイルの操作、ffi や openssl などのミドルウェアのラッパーなど様々な種類のライブラリが付属しています。これらのライブラリはインストール直後から使えます。
毎月スライドが公開されてたブログが突然と更新されなくなって驚かれたかもしれませんが、3月20日から4ヶ月ほど病院に入院していました。 せっかくなので、入院している中で感じたことを書き下しておきたいと思います。 (しかし、この記事は書き始めて1ヶ月後に公開されたため、ある程度日常生活をした上で書かれている) 本記事を結論を述べておくと「プログラマはこんな体でも世の中に貢献できる可能性がある」と感じた。 座っていて作業できて、リモートワークできる。努力しだいでは、世界で活躍するのも可能だ。 (世界で活躍はできていないけど) ざっくり目次 一体なにがあったのか 入院中に感じたこと 入院生活で改善したいこと 今後のこと まとめ 一体何があったか 心臓の血液を全身に流すチカラが弱くなってしまった。 もともと弱くなっていることはわかっていたが、これが悪化してしまい日常生活ができなくなりました。 そこで
javascriptは初心者なのですが、 サンプルコードなどを組み合わせながらwebアプリを作っています。 その中でのファイル読み込みについての質問です。 htmlで <input type="file" class="input_02_file" multiple/> と書き、.js内で var B = doc.querySelector(".input_02_file").files とするとblob型のファイルリストがBに入ります。 しかし、毎回ファイル指定する必要があり面倒です。 なので、スクリプトと同じディレクトリにファイルを置き、読み込めたらと考えました。 希望はBが自動で読み込まれることなのですが、できるでしょうか。 いろいろ調べてみましたが、分からず質問させていただきました。 ヒントでも頂ければ幸いです。宜しくお願い致します。 追記 コメントありがとうございます。アプリは、
I'm trying to help developing a library and for it I'm trying to work with page loading. In the process I want to make the library completely compatible with the use of defer and async. What I want is simple: How can I know that DOMContentLoaded was fired by the time the file is executed? Why is this so difficult? In IE, document.readyState show interactive before DOMContentLoaded. I won't use bro
170303 hirofro-nishimoto-v1 1. スクリーンリーダーと 点字ディスプレイの話 Web + Windows ナレーター + NVDA 西本卓也 @24motz 2017-03-03 広島フロントエンド勉強会 1 2. Python Boot Camp in 広島 • 3月11日(土曜)午後 • 会場:広島駅から徒歩10分くらい • 夜は懇親会 • 講師 • 鈴木たかのりさん(ビープラウド/PyConJP) • 内容 • Pythonの環境構築 • 文法の基本 • ライブラリの利用、スクレイピング • ハッシュタグ #pycamp 申し込みは connpass 2 3. Windowsキーを使う操作 • Win+B • Win+T • Win+D • Win+M • Win+数字 • Win+R • Win+スペース • Win+X, Win+A, Win+S, W
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く