Java

本番に近い状況でクラスをテストする

初めに kintoneチームの前田です。 kintoneはリリースから10年以上経過しSeleniumテストの数が膨大になっており、開発プロセスに重くのしかかってきています。 そこで、本物のDBや、本物のサービスと同等の振る舞いをするフェイクを使った新しいテストを最近…

JJUG CCC 2023 Springで登壇しました!

kintoneチームの前田です。 2023年6月4日に開催されたJJUG CCC 2023 Springに、サイボウズはスポンサーとして協賛しました。 さらに、スポンサーセッションとして「複雑性に立ち向かうためのサーバーサイドコード分割」というタイトルで登壇させていただきま…

複雑性に立ち向かうためのサーバーサイドコード分割

初めに kintoneチームの前田です。 kintoneはサーバーサイドがJavaで書かれていて、最近ではこれが結構な分量になっており開発上の障壁となっています。 その解消のため、kintoneチームではコード分割を進めています。 今回は、コード分割の目的や具体的方針…

UrlRewriteFilterによるURL書き換え処理をSpring Frameworkの機能に移行する

初めに こんにちは! kintone開発チームでソフトウェアエンジニアをしている池田 (@motacapla) です。 今回が初投稿となります、よろしくお願いいたします! kintoneではHTTPリクエストのURLをルールベースで処理して書き換えたり、特定の属性値を設定するた…

Hyrumの法則とレガシ―コード置き換えの実践

こんにちは。開発部の[yokotaso][yokotaso-github] です。 アプリケーションの基礎的な部分で3rd-partyライブラリが大量に使われているとき[Hyrumの法則][hyrumslaw]はよい気付きを与えてくれます。 With a sufficient number of users of an API, it does n…

kintone のテストを JUnit 5 に移行した話

こんにちは、kintone 開発チームの @hikoma です。kintone のテストを JUnit 4 から JUnit 5 に移行した話を公開したいと思います。

typescript-generatorを利用して、HTML に埋め込んだ JSON データをフロントエンドで型安全に扱う

こんにちは!kintone フロントエンドリアーキテクチャチーム (フロリア) の西川 @nissy_dev です。 最近のフロントエンド開発で導入されることの多い TypeScript ですが、開発期間の長いプロジェクトに導入する際にはバックエンドとの結合部分の型定義をどう…

Navigation Component のニッチな落とし穴から得た Android アプリ開発の学び

あけましておめでとうございます! (遅すぎ) モバイルチームの向井田 (@mr_mkeeda) です。 モバイル系の 2020 年最初のブログは Android について書いていこうと思います! 皆さん、Android Jetpack の Navigation Component は使っていますか? Navigation …

ASTを活用してコードの自動修正に挑戦してみよう

どうも!アプリケーション基盤チームの@yokotaso です。 単純だけど、大量のソースコードの修正が必要な場合、みなさんはどうやって修正していますか? Junit4からJunit5の移行調査をしていたときに、例外を検証する@Testの expected がJunit5では消えている…

ざっくりわかった気になるモダンGC入門

どうも!@yokotaso です! 2018/05/26のJJUG CCC 2018で「ざっくりわかった気になるモダンGC入門」というタイトルで登壇させていただきました。 現在開発中の新しいGCアルゴリズムをざっくり理解することをテーマに発表しました。 発表練習用に作ったカンペ…

JMX で快適モニタリング環境を作ろう

こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 今回は Java アプリケーションのモニタリング等で活躍する JMX について記します。JMX を用いれば、きめ細やかでかつ手軽にモニタリングすることができます。もちろんサイボウズが提供す…

サイボウズ Live アクセス障害の裏で起こっていたこと

どうも!アプリケーション基盤チームの@yokotaso です。 2017/11/13 にサイボウズLiveの長時間にわたる障害が発生しご迷惑をおかけしました。 技術的な調査が一段落し、対応を進めております。 障害にいたった原因と対応のお話をさせていただきます。 簡単な…

Java Security Manager でセキュアなサービスを構築しよう

こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 今回は Java アプリケーションをセキュアに運用する仕組みである Java Security Manager について紹介しようと思います。この仕組みは Linux の強制アクセス制御機構(SELinux や AppArmo…

スレッド名にデバッグ情報を埋め込むと激しく捗る件

こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。 今回、Java のちょっとしたデバッグテクニックを紹介したいと思います。Java で運用中何かトラブルが発生した場合、スレッドダンプを取得することはしばしばあると思いますが、スレッドダ…

「障害に捨てるところなし」というお話をしました

3月11日にBattle Conference U30というイベントでお話をさせていただきました。 発表のためにカンペをを準備していたので、公開します。 #bcu30

我々はいかにして技術選択を間違えたのか? 2016

S2Daoからhibernateにお引越ししたときの失敗談です!

Javaの謎のパフォーマンス劣化現象との戦い

こんにちは。アプリケーション基盤チームの横田です。 Javaの謎のパフォーマンス劣化にまつわる調査をしていたのですが、1ヶ月の苦労の末に原因がわかりましたので、報告させていただきます! 公開後に頂いたはてなブックマークでのご指摘・社内でのタイポ・…

サイボウズLiveの新アプリのAndroid版が公開になりました

こんにちは。サイボウズLiveチームの山川です。 12月14日に公開となったサイボウズLiveの新アプリ「サイボウズLive TIMELINE」のAndroid版の設計および実装を担当しました。 サイボウズLive TIMELINE - Google Play の Android アプリ Androidユーザーの方は…

Java トラブルシューティングガイド

こんにちは。ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は藤岡弘の弟子になることです。 Cybozu では多くの Java アプリケーションが稼働しており、トラブルも発生します。僕はトラブル対応をすることが多く、今まで大小様々なトラブルを見…

遅いッ!遅すぎるッ!Java の正規表現のお話。

こんにちは、ミドルウェア開発チームの青木です。 先日、アプリケーションサーバーが応答を返さなくなるトラブルに遭遇しました。 今回はその時のトラブルの原因と対策の顛末についてお話しようと思います。

恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!!

こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという…

IntelliJ IDEAを使ってJava6のコードをJava7に変換する

こんにちは、kintone開発チームの田中裕一(@yuichielectric)です。 新MacBook Airを買ったら、奥様になんでRetinaじゃないのに買ったのと詰められる毎日です。 さて、kintoneプロジェクトでは、つい先日JDKのバージョンを6から7に上げる作業を行いました。