ユニファ開発者ブログユニファ開発者ブログユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。2021の10日目の記事です。adventar.orgこんにちは!ユニファでインターンをしている濱口です。普段は開発の部署ではなく、システム企画課というところで社内の業務システムの構築や開発のお仕事をしています。いわゆる情報システム部門のような部署です。Calendarに参加させて頂いています!システム企画課については2日前の田辺さんの記事で紹介しているのでそちらをご覧ください。tech.unifa-e.comはじめに何を書いたらいいか悩みましたが、情シス視点でのテックブログということで社内で導入しているkintoneアプリの開発についてお話ししたいと思います。プライベートではAndroidアプリやWebアプリの開発をしていることもあり、社内ではkintoneのJavaScriptカスタマイズなどコードを書く仕事をよく担当しています。今年の1月から夏頃にかけてアサインされていたプロジェクトで、kintoneを使った業務基幹システムの設計と開発を担当しました。その際に構築したアプリの開発からリリースまでの一連のプロセスを紹介したいと思います。kintoneに精通しているわけではないので、そんなやり方もあるのか~という感じで暖かく見守っていただけるとありがたいです。kintoneアプリ開発の本来あるべき姿kintoneはサイボウズが提供するクラウド型のグループウェアです。開発に関する知識がなくても、誰でも簡単にアプリを作ることができるのが大きなメリットです。そのため社内の情シス的な部署や専門の知識を持った人がアプリを作るのではなく、普段業務を行う方々が自分たちでkintoneアプリを作成して、ボトムアップでIT化やDXを進めるのが理想的な姿です。(実際ここまで理想的な運用ができている企業はほとんどないようです...)kintoneのアプリ開発のセオリーは以下の3つです。足りない機能はプラグインで補完JavaScriptのカスタマイズは最後の砦kintoneを使って継続的に業務改善を行うためのノウハウがサイボウズから提供されています。kintoneをお使いの方はぜひ一度のぞいてみてください。kintone.cybozu.co.jp社内のkintoneアプリ開発の一例それでは実際に構築したkintoneアプリの開発プロセスについてご紹介します。開発したkintoneアプリは社内のあるチームが使う業務基幹システムで、1つのメインアプリを中心として約10のアプリが連携して動いています。「JavaScriptのカスタマイズは最後の砦」と書きましたが、標準機能やプラグインよりJavaScriptで開発した機能の方が圧倒的に多いです。(つまりkintoneらしくない、かなりイレギュラーな使い方をしています。)アプリは社内の業務で使用しており運用を止めると業務が滞るため、本番環境と開発環境の2つのアプリを用意しています。開発環境でユニットテストから一気通貫のテストまで行い、問題なく動くことを確認してから本番環境に反映させるようにしています。ここで問題となるのが開発環境から本番環境への設定の反映方法です。大きく分けてkintone標準機能、プラグイン設定、JavaScript/CSSカスタマイズの3つがあります。開発環境のアプリをコピーして本番環境のアプリを作ることは簡単ですが、すでに運用している本番環境のアプリに開発環境の設定を1つ1つ手作業で反映させるのはとても大変です。Deploitというツールを使うとこれらを簡単に行うことができますが、本番環境と開発環境のアプリを既に運用をしている状態から導入することはできません。kintone標準機能、プラグイン設定、JavaScript/CSSカスタマイズの3つの設定をリポジトリ中心で管理を行う方法もあります。導入のハードルが高いのでユニファでは採用していませんが、最後に紹介しているので気になる人はチェックしてみてください。今回開発したアプリはJavaScriptでの開発がメインで、なおかつ属人化せずチームで保守・管理が行えるように下の図のような開発プロセスを構築しました。JavaScript/CSSのデプロイは以下の手順で行い、それ以外の設定は手作業で反映をさせています。フローとしてはそんなに複雑ではありません。uploaderを使ってアプリにカスタマイズファイルを反映させています。ローカルにあるコードをgit/Bitbucketを使って管理しています。複数人で同時にチーム開発を行うことはありませんが、最低限のコーディングルールやブランチ戦略は定めています。ここまで複雑な開発が必要になったのか?kintoneのメリットは、開発の知識がなくても簡単にアプリを作れることです。複数のアプリを組み合わせてRDB的な使い方をすることは想定されていません。APIをたくさん呼んでいます。オリジナルで開発したプラグイン開発環境と本番環境で分けて運用すると、それぞれの環境で連携するアプリのIDやカスタマイズをするビューのIDが異なるため環境変数を設定したいというケースがあります。そんな場面で使えるプラグインを自分で開発して社内のアプリでも使用しています。環境変数を設定するだけでなく、コード上でのハードコーディングを回避するという目的でも使用することができるため、何かパラメータやフィールド名を指定したい、頻繁に変更する項目があるときにも便利に使うことができます。プラグインは公開しているので気になる方はぜひ使ってみてください。github.comもっと本格的な開発プロセスを組みたい方は...kintoneのアプリ開発をサービスシステムライクに管理したい方にはKDXというツールをオススメします。このKDXを使うと、kintone標準機能、プラグイン設定、JavaScript/CSSカスタマイズの管理をリポジトリ中心で行うことができ、デプロイ操作をコマンドで行うことができます。(間違ってたらごめんなさい。)以下が開発の方が書かれている記事なので気になる方はぜひチェックしてみてください。qiita.comSalesforceは公式からこういったツール(SFDX)が提供されているようですが、kintoneは公式からこのようなツールは提供されていません。社内の体制が整ったらKDXを導入するのもありかなと思ったりしています。Calendarで記事を書きましたが楽しんでいただけましでしょうか?業務システムの構築はサービスシステムの開発とは少し性質が異なりますが、ある程度高度な内製と保守管理ができるよう徐々に体制を整えていきたいと考えています。2023の11日目の記事です。V2を使ってみた!こんにちは。コーポレートエンジニ...2023-05-15ユニファに入社して3ヶ月間で感じたことこんにちは。プロダクトマネージャーのしんせいです。12引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。