{"id":50929,"date":"2025-02-21T00:00:00","date_gmt":"2025-02-21T08:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/"},"modified":"2025-11-14T07:57:03","modified_gmt":"2025-11-14T15:57:03","slug":"griddb-with-salesforce-integration","status":"publish","type":"post","link":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/","title":{"rendered":"GridDB \u3068 Salesforce \u306e\u7d71\u5408"},"content":{"rendered":"<h2><strong>\u6982\u8981<\/strong><\/h2>\n<p>\u73fe\u5728\u306e\u7af6\u4e89\u306e\u6fc0\u3057\u3044\u30d3\u30b8\u30cd\u30b9\u74b0\u5883\u306b\u304a\u3044\u3066\u3001\u52b9\u7387\u7684\u306a\u30ab\u30b9\u30bf\u30de\u30fc\u30b5\u30dd\u30fc\u30c8\u306f\u9867\u5ba2\u306e\u7dad\u6301\u3068\u30d3\u30b8\u30cd\u30b9\u6210\u529f\u306e\u9375\u3092\u63e1\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u76ee\u6a19\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u7d20\u306e\u4e00\u3064\u304c\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u6700\u5c0f\u5316\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u6642\u9593\u3092\u5206\u6790\u3057\u6700\u9069\u5316\u3059\u308b\u3053\u3068\u3067\u3001\u7d44\u7e54\u306f\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u3092\u7279\u5b9a\u3057\u3001\u30b5\u30dd\u30fc\u30c8\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u3092\u6539\u5584\u3057\u3001\u5168\u4f53\u7684\u306a\u9867\u5ba2\u6e80\u8db3\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>Salesforce\u306f\u3001\u5e83\u304f\u63a1\u7528\u3055\u308c\u3066\u3044\u308bCRM\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3042\u308a\u3001\u9867\u5ba2\u3068\u306e\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u57fa\u76e4\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3057\u304b\u3057\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u6df1\u3044\u6d1e\u5bdf\u3092\u5f97\u3066\u6539\u5584\u70b9\u3092\u7279\u5b9a\u3059\u308b\u305f\u3081\u306b\u306f\u3001GridDB\u306e\u529b\u3092\u6d3b\u7528\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002\u3053\u306e\u9ad8\u6027\u80fd\u306a\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306f\u3001\u5927\u91cf\u306e\u30bf\u30a4\u30e0\u30bb\u30f3\u30b7\u30c6\u30a3\u30d6\u30c7\u30fc\u30bf\u3092\u52b9\u7387\u7684\u306b\u51e6\u7406\u3059\u308b\u3088\u3046\u306b\u8a2d\u8a08\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30d6\u30ed\u30b0\u3067\u306f\u3001Salesforce CRM\u306e\u30b5\u30fc\u30d3\u30b9\u30c1\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u3092GridDB\u3068\u7d71\u5408\u3057\u3001\u5e73\u5747\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u3092\u6642\u7cfb\u5217\u5206\u6790\u3068\u53ef\u8996\u5316\u3059\u308b\u305f\u3081\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u4f5c\u6210\u624b\u9806\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002RESTful API\u3092\u4f7f\u7528\u3057\u3066Spring Boot\u3067\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3059\u308b\u65b9\u6cd5\u3001GridDB\u306b\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u65b9\u6cd5\u3001\u30c7\u30fc\u30bf\u304b\u3089\u6709\u76ca\u306a\u6d1e\u5bdf\u3092\u62bd\u51fa\u3059\u308b\u305f\u3081\u306e\u30af\u30a8\u30ea\u5b9f\u884c\u65b9\u6cd5\u3001\u305d\u3057\u3066\u6700\u7d42\u7684\u306b\u7d50\u679c\u3092\u53ef\u8996\u5316\u3059\u308b\u624b\u9806\u3092\u89e3\u8aac\u3057\u307e\u3059\u3002<\/p>\n<h2>GridDB\u30af\u30e9\u30b9\u30bf\u30fc\u3068Spring Boot\u306e\u7d71\u5408\uff1a\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u76e3\u8996\u306e\u305f\u3081\u306e\u8a2d\u5b9a<\/h2>\n<p>\u9867\u5ba2\u30b5\u30dd\u30fc\u30c8\u30c1\u30b1\u30c3\u30c8\u306e\u89e3\u6c7a\u6642\u9593\u3092\u6642\u7cfb\u5217\u5206\u6790\u3059\u308b\u305f\u3081\u306b\u3001\u307e\u305aGridDB\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u8a2d\u5b9a\u3057\u3001Spring Boot\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u7d71\u5408\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul>\n<li><strong>GridDB\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u8a2d\u5b9a<\/strong><\/li>\n<\/ul>\n<p>GridDB\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u8981\u4ef6\u306b\u5bfe\u5fdc\u3059\u308b\u305f\u3081\u306e\u67d4\u8edf\u306a\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002\u958b\u767a\u6bb5\u968e\u3067\u306f\u3001\u30ed\u30fc\u30ab\u30eb\u30de\u30b7\u30f3\u4e0a\u306e\u5358\u4e00\u30ce\u30fc\u30c9\u30af\u30e9\u30b9\u30bf\u30fc\u3067\u5341\u5206\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u305f\u3060\u3057\u3001\u672c\u756a\u74b0\u5883\u3067\u306f\u3001\u969c\u5bb3\u8010\u6027\u3068\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u3001\u8907\u6570\u306e\u30de\u30b7\u30f3\u306b\u5206\u6563\u3057\u305f\u30af\u30e9\u30b9\u30bf\u30fc\u304c\u4e00\u822c\u7684\u306b\u63a8\u5968\u3055\u308c\u307e\u3059\u3002\u30c7\u30d7\u30ed\u30a4\u30e1\u30f3\u30c8\u6226\u7565\u306b\u57fa\u3065\u304f\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u95a2\u3059\u308b\u8a73\u7d30\u306a\u30ac\u30a4\u30c9\u306f\u3001GridDB\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>GridDB\u30af\u30e9\u30b9\u30bf\u30fc\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u624b\u9806\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044 <a href=\"https:\/\/docs.griddb.net\/gettingstarted\/using-apt\/#install-with-apt-get\">\u3053\u3061\u3089<\/a>.<\/p>\n<ul>\n<li><strong>Spring Boot \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7<\/strong><\/li>\n<\/ul>\n<p>GridDB \u30af\u30e9\u30b9\u30bf\u30fc\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306f Spring Boot \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u63a5\u7d9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002GridDB Java Client API \u306f\u3001\u3053\u306e\u63a5\u7d9a\u3092\u78ba\u7acb\u3059\u308b\u305f\u3081\u306e\u5fc5\u8981\u306a\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30d7\u30ed\u30bb\u30b9\u3092\u7c21\u7d20\u5316\u3059\u308b\u305f\u3081\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u4f9d\u5b58\u95a2\u4fc2\u3068\u3057\u3066 <code>griddb-spring-boot-starter<\/code> \u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u542b\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u306f\u3001\u63a5\u7d9a\u8a2d\u5b9a\u3092\u7c21\u7d20\u5316\u3059\u308b\u4e8b\u524d\u8a2d\u5b9a\u6e08\u307f\u306e Bean \u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><strong>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020<\/strong><\/p>\n<p>\u4ee5\u4e0b\u306f\u3001\u3053\u306e\u3088\u3046\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u63a8\u5968\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u69cb\u9020\u3067\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\nmy-griddb-app\n\u2502   \u251c\u2500\u2500 pom.xml\n\u2502   \u251c\u2500\u2500 src\n\u2502   \u2502   \u251c\u2500\u2500 main\n\u2502   \u2502   \u2502   \u251c\u2500\u2500 java\n\u2502   \u2502   \u2502   \u2502   \u2514\u2500\u2500 mycode\n\u2502   \u2502   \u2502   \u2502       \u251c\u2500\u2500 config\n\u2502   \u2502   \u2502   \u2502       \u2502   \u2514\u2500\u2500 GridDBConfig.java\n\u2502   \u2502   \u2502   \u2502       \u251c\u2500\u2500 controller\n\u2502   \u2502   \u2502   \u2502       \u2502   \u2514\u2500\u2500 ChartController.java\n\u2502   \u2502   \u2502   \u2502       \u251c\u2500\u2500 dto\n\u2502   \u2502   \u2502   \u2502       \u2502   \u2514\u2500\u2500 ServiceTicket.java\n\u2502   \u2502   \u2502   \u2502       \u251c\u2500\u2500 MySpringBootApplication.java\n\u2502   \u2502   \u2502   \u2502       \u2514\u2500\u2500 service\n\u2502   \u2502   \u2502   \u2502           \u251c\u2500\u2500 ChartService.java\n\u2502   \u2502   \u2502   \u2502           \u251c\u2500\u2500 MetricsCollectionService.java\n\u2502   \u2502   \u2502   \u2502           \u2514\u2500\u2500 RestTemplateConfig.java\n\u2502   \u2502   \u2502   \u2514\u2500\u2500 resources\n\u2502   \u2502   \u2502       \u251c\u2500\u2500 application.properties\n\u2502   \u2502   \u2502       \u2514\u2500\u2500 templates\n\u2502   \u2502   \u2502           \u2514\u2500\u2500 charts.html<\/code><\/pre>\n<\/div>\n<p>\u3053\u306e\u69cb\u9020\u306f\u3001\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u30fc\u3001\u30e2\u30c7\u30eb\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u3001\u30b5\u30fc\u30d3\u30b9\u3001\u304a\u3088\u3073\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30a8\u30f3\u30c8\u30ea\u30dd\u30a4\u30f3\u30c8\u306b\u660e\u78ba\u306a\u5c64\u3092\u5b9a\u7fa9\u3057\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u6027\u3068\u4fdd\u5b88\u6027\u3092\u4fc3\u9032\u3057\u307e\u3059\u3002\u3055\u3089\u306b\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3084\u30ed\u30b0\u8a2d\u5b9a\u306a\u3069\u306e\u30ea\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3001\u304a\u3088\u3073\u5805\u7262\u6027\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306e\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u3082\u5305\u542b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p><strong>GridDB \u4f9d\u5b58\u95a2\u4fc2\u306e\u8ffd\u52a0<\/strong><\/p>\n<p>Spring Boot\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067GridDB\u3068\u306e\u76f8\u4e92\u4f5c\u7528\u3092\u53ef\u80fd\u306b\u3059\u308b\u306b\u306f\u3001GridDB Java Client API\u4f9d\u5b58\u95a2\u4fc2\u3092\u542b\u3081\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u30d3\u30eb\u30c9\u30d5\u30a1\u30a4\u30eb\uff08Maven\u306e\u5834\u5408\u306f<code>pom.xml<\/code>\u3001Gradle\u306e\u5834\u5408\u306f\u76f8\u5f53\u3059\u308b\u30d5\u30a1\u30a4\u30eb\uff09\u306b\u9069\u5207\u306a\u8a2d\u5b9a\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306f\u3001<code>pom.xml<\/code>\u30d5\u30a1\u30a4\u30eb\u3067\u4f9d\u5b58\u95a2\u4fc2\u3092\u69cb\u6210\u3059\u308b\u4f8b\u3067\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\n&lt;project \n  xmlns_xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n  xsi_schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/maven-v4_0_0.xsd\"&gt;\n  &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\n  &lt;groupId&gt;com.example&lt;\/groupId&gt;\n  &lt;artifactId&gt;my-griddb-app&lt;\/artifactId&gt;\n  &lt;version&gt;1.0-SNAPSHOT&lt;\/version&gt;\n  &lt;name&gt;my-griddb-app&lt;\/name&gt;\n  &lt;url&gt;http:\/\/maven.apache.org&lt;\/url&gt;\n\n  &lt;parent&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-parent&lt;\/artifactId&gt;\n    &lt;version&gt;3.2.4&lt;\/version&gt;\n    &lt;relativePath \/&gt; &lt;!-- lookup parent from repository --&gt;\n  &lt;\/parent&gt;\n\n  &lt;properties&gt;\n    &lt;maven.compiler.source&gt;17&lt;\/maven.compiler.source&gt;\n    &lt;maven.compiler.target&gt;17&lt;\/maven.compiler.target&gt;\n  &lt;\/properties&gt;\n\n  &lt;dependencies&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n      &lt;artifactId&gt;spring-boot-starter-actuator&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;junit&lt;\/groupId&gt;\n      &lt;artifactId&gt;junit&lt;\/artifactId&gt;\n      &lt;version&gt;3.8.1&lt;\/version&gt;\n      &lt;scope&gt;test&lt;\/scope&gt;\n    &lt;\/dependency&gt;\n    &lt;!-- GridDB dependencies --&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;com.github.griddb&lt;\/groupId&gt;\n      &lt;artifactId&gt;gridstore-jdbc&lt;\/artifactId&gt;\n      &lt;version&gt;5.3.0&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;com.github.griddb&lt;\/groupId&gt;\n      &lt;artifactId&gt;gridstore&lt;\/artifactId&gt;\n      &lt;version&gt;5.5.0&lt;\/version&gt;\n    &lt;\/dependency&gt;\n    &lt;!-- Spring Boot dependencies --&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n      &lt;artifactId&gt;spring-boot-starter-web&lt;\/artifactId&gt;\n      &lt;exclusions&gt;\n        &lt;exclusion&gt;\n          &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n          &lt;artifactId&gt;spring-boot-starter-logging&lt;\/artifactId&gt;\n        &lt;\/exclusion&gt;\n      &lt;\/exclusions&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n      &lt;artifactId&gt;spring-boot-starter-test&lt;\/artifactId&gt;\n      &lt;scope&gt;test&lt;\/scope&gt;\n    &lt;\/dependency&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n      &lt;artifactId&gt;spring-boot-starter-thymeleaf&lt;\/artifactId&gt;\n    &lt;\/dependency&gt;\n    &lt;!-- JSON processing --&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;com.fasterxml.jackson.core&lt;\/groupId&gt;\n      &lt;artifactId&gt;jackson-databind&lt;\/artifactId&gt;\n      &lt;version&gt;2.15.0&lt;\/version&gt; &lt;!-- or the latest version --&gt;\n    &lt;\/dependency&gt;\n    &lt;!-- Lombok --&gt;\n    &lt;dependency&gt;\n      &lt;groupId&gt;org.projectlombok&lt;\/groupId&gt;\n      &lt;artifactId&gt;lombok&lt;\/artifactId&gt;\n      &lt;optional&gt;true&lt;\/optional&gt;\n    &lt;\/dependency&gt;\n  &lt;\/dependencies&gt;\n&lt;\/project&gt;<\/code><\/pre>\n<\/div>\n<p><strong>GridDB\u63a5\u7d9a\u306e\u8a2d\u5b9a<\/strong><\/p>\n<p>GridDB\u4f9d\u5b58\u95a2\u4fc2\u3092\u8ffd\u52a0\u3057\u305f\u5f8c\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\u306fSpring Boot\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5185\u3067GridDB\u30af\u30e9\u30b9\u30bf\u30fc\u306e\u63a5\u7d9a\u8a73\u7d30\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u3053\u308c\u306f\u901a\u5e38\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3059\u308b<code>application.properties<\/code>\u30d5\u30a1\u30a4\u30eb\u3067\u884c\u3044\u307e\u3059\u3002<\/p>\n<p>\u63a5\u7d9a\u8a73\u7d30\u3092\u8a2d\u5b9a\u3059\u308b\u7c21\u5358\u306a\u4f8b\u3092\u4ee5\u4e0b\u306b\u793a\u3057\u307e\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\nGRIDDB_NOTIFICATION_MEMBER=127.0.0.1:10001\nGRIDDB_CLUSTER_NAME=myCluster\nGRIDDB_USER=admin\nGRIDDB_PASSWORD=admin\nmanagement.endpoints.web.exposure.include=*\nserver.port=9090<\/code><\/pre>\n<\/div>\n<ul>\n<li><code>griddb.cluster.host<\/code>: The hostname or IP address of your GridDB cluster.<\/li>\n<li><code>griddb.cluster.port<\/code>: The port number on which the GridDB cluster is listening.<\/li>\n<li><code>griddb.cluster.user<\/code>: The username for accessing the GridDB cluster.<\/li>\n<li><code>griddb.cluster.password<\/code>: The password for the specified GridDB user (replace with your actual password).<\/li>\n<li><code>server.port=9090<\/code>: Sets the port on which your Spring Boot application will run.<\/li>\n<\/ul>\n<p><strong>GridDB \u30af\u30e9\u30a4\u30a2\u30f3\u30c8 Bean \u306e\u4f5c\u6210<\/strong><\/p>\n<p>Spring Boot \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067 GridDB \u3092\u52b9\u679c\u7684\u306b\u5229\u7528\u3059\u308b\u306b\u306f\u3001GridDB \u63a5\u7d9a\u3092\u7ba1\u7406\u3059\u308b\u305f\u3081\u306e\u5c02\u7528\u306e Spring Bean \u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u306e Bean \u306f\u3001<code>application.properties<\/code> \u30d5\u30a1\u30a4\u30eb\u3067\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u63a5\u7d9a\u3092\u521d\u671f\u5316\u3057\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u5168\u4f53\u3067 GridDB \u30af\u30e9\u30b9\u30bf\u30fc\u3068\u306e\u3084\u308a\u53d6\u308a\u306e\u4e2d\u592e\u30dd\u30a4\u30f3\u30c8\u3068\u3057\u3066\u6a5f\u80fd\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306f\u3001<code>GridDbConfig.java<\/code> \u3068\u3044\u3046\u540d\u524d\u306e Java \u30af\u30e9\u30b9\u3067\u3053\u306e Bean \u3092\u5b9a\u7fa9\u3059\u308b\u4f8b\u3067\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\npackage mycode.config;\n\nimport java.util.Properties;\n\nimport org.springframework.beans.factory.annotation.Value;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.PropertySource;\n\nimport com.toshiba.mwcloud.gs.GSException;\nimport com.toshiba.mwcloud.gs.GridStore;\nimport com.toshiba.mwcloud.gs.GridStoreFactory;\n\n@Configuration\n@PropertySource(\"classpath:application.properties\")\npublic class GridDBConfig {\n\n  @Value(\"${GRIDDB_NOTIFICATION_MEMBER}\")\n  private String notificationMember;\n\n  @Value(\"${GRIDDB_CLUSTER_NAME}\")\n  private String clusterName;\n\n  @Value(\"${GRIDDB_USER}\")\n  private String user;\n\n  @Value(\"${GRIDDB_PASSWORD}\")\n  private String password;\n\n  @Bean\n  public GridStore gridStore() throws GSException {\n    \/\/ Acquiring a GridStore instance\n    Properties properties = new Properties();\n    properties.setProperty(\"notificationMember\", notificationMember);\n    properties.setProperty(\"clusterName\", clusterName);\n    properties.setProperty(\"user\", user);\n    properties.setProperty(\"password\", password);\n    return GridStoreFactory.getInstance().getGridStore(properties);\n  }\n}<\/code><\/pre>\n<\/div>\n<h2>\u30e1\u30c8\u30ea\u30af\u30b9\u53ce\u96c6<\/h2>\n<p>Salesforce\u306e\u9867\u5ba2\u30b5\u30dd\u30fc\u30c8\u30c1\u30b1\u30c3\u30c8\u306e\u89e3\u6c7a\u6642\u9593\u3092GridDB\u3067\u53ef\u8996\u5316\u3059\u308b\u305f\u3081\u3001\u307e\u305aSalesforce\u306eREST API\u3092\u4f7f\u7528\u3057\u3066\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u304c\u53d6\u5f97\u3055\u308cGridDB\u306b\u683c\u7d0d\u3055\u308c\u308b\u3068\u3001\u305d\u306e\u30af\u30a8\u30ea\u6a5f\u80fd\u3092\u5229\u7528\u3057\u3066\u30c1\u30b1\u30c3\u30c8\u306e\u89e3\u6c7a\u6642\u9593\u3092\u8a08\u7b97\u3057\u3001\u52b9\u679c\u7684\u306b\u53ef\u8996\u5316\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u30c7\u30fc\u30bf\u53ce\u96c6\u3068\u8aad\u307f\u8fbc\u307f\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u8aac\u660e\u3057\u307e\u3059\uff1a<\/p>\n<p><strong>Salesforce \u30c7\u30fc\u30bf\u306e\u30af\u30a8\u30ea<\/strong>Salesforce \u306f REST API \u3092\u901a\u3058\u3066\u3001<code>Id<\/code>\u3001<code>CaseNumber<\/code>\u3001<code>Subject<\/code>\u3001<code>Status<\/code>\u3001<code>CreatedDate<\/code>\u3001<code>ClosedDate<\/code>\u3001<code>Priority<\/code> \u306a\u3069\u306e\u9867\u5ba2\u30b5\u30dd\u30fc\u30c8\u30b1\u30fc\u30b9\u306b\u95a2\u3059\u308b\u8a73\u7d30\u60c5\u5831\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u76e3\u8996\u3084\u30b5\u30dd\u30fc\u30c8\u30c1\u30fc\u30e0\u306e\u52b9\u7387\u8a55\u4fa1\u306b\u4e0d\u53ef\u6b20\u3067\u3059\u3002<\/p>\n<p>\u3053\u306e\u30c7\u30fc\u30bf\u3092\u62bd\u51fa\u3059\u308b\u306b\u306f\u3001Salesforce\u306eREST API\u3092\u6d3b\u7528\u3057\u3001Salesforce Object Query Language\uff08SOQL\uff09\u3092\u4f7f\u7528\u3057\u3066\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306e\u624b\u9806\u306f\u3001\u9ad8\u30ec\u30d9\u30eb\u306a\u30d7\u30ed\u30bb\u30b9\u3092\u6982\u8aac\u3057\u3066\u3044\u307e\u3059\uff1a<\/p>\n<ul>\n<li>\n<p><strong>\u30af\u30a8\u30ea\u306e\u5b9a\u7fa9<\/strong>\uff1a <code>Case<\/code>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304b\u3089\u95a2\u9023\u3059\u308b\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u9078\u629e\u3059\u308bSOQL\u30af\u30a8\u30ea\u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002\u3053\u306e\u30af\u30a8\u30ea\u306f\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u306b\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\uff08\u4f8b\uff1a \u30c1\u30b1\u30c3\u30c8\u306e\u4f5c\u6210\u65e5\u3068\u89e3\u6c7a\u65e5\uff09\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u306b\u3057\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u8a8d\u8a3c\u3068\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u9001\u4fe1<\/strong>\uff1a OAuth \u30c8\u30fc\u30af\u30f3\u3092\u4f7f\u7528\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092 Salesforce \u3068\u5b89\u5168\u306b\u8a8d\u8a3c\u3057\u307e\u3059\u3002\u8a8d\u8a3c\u5f8c\u3001\u30af\u30a8\u30ea\u3092 Salesforce \u306e API \u30a8\u30f3\u30c9\u30dd\u30a4\u30f3\u30c8\u306b\u9001\u4fe1\u3057\u307e\u3059\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u30ec\u30b9\u30dd\u30f3\u30b9\u306e\u51e6\u7406<\/strong>\uff1a API \u30ec\u30b9\u30dd\u30f3\u30b9\u3092\u53d7\u4fe1\u5f8c\u3001\u8fd4\u3055\u308c\u305f JSON \u30c7\u30fc\u30bf\u3092\u30d1\u30fc\u30b9\u3057\u3066\u5fc5\u8981\u306a\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002\u3053\u306e\u30d1\u30fc\u30b9\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306b\u306f\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u8a08\u7b97\u306b\u5fc5\u8981\u306a\u60c5\u5831\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<\/li>\n<\/ul>\n<p><strong>GridDB \u3078\u306e\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f<\/strong><\/p>\n<p>Salesforce\u304b\u3089\u5fc5\u8981\u306a\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u305f\u3089\u3001\u6b21\u306bGridDB\u306b\u8aad\u307f\u8fbc\u307f\u307e\u3059\u3002\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u6982\u8981\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n<ul>\n<li><strong>\u30c7\u30fc\u30bf\u5909\u63db\u3068\u30de\u30c3\u30d4\u30f3\u30b0<\/strong>\uff1a<\/li>\n<\/ul>\n<p>Salesforce\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\uff08\u4f8b\uff1a<code>CreatedDate<\/code>\u3001<code>ClosedDate<\/code>\u3001<code>Priority<\/code>\uff09\u3092GridDB\u306e\u30bf\u30a4\u30e0\u30b7\u30ea\u30fc\u30ba\u30b9\u30ad\u30fc\u30de\u306e\u5c5e\u6027\u306b\u4e00\u81f4\u3059\u308b\u3088\u3046\u306b\u5909\u63db\u3057\u307e\u3059\u3002\u3053\u306e\u30b9\u30c6\u30c3\u30d7\u306f\u3001\u30c7\u30fc\u30bf\u304c\u30bf\u30a4\u30e0\u30b7\u30ea\u30fc\u30ba\u30b9\u30c8\u30ec\u30fc\u30b8\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u5f62\u5f0f\u3067\u683c\u7d0d\u3055\u308c\u308b\u3088\u3046\u306b\u78ba\u4fdd\u3057\u307e\u3059\u3002GridDB\u306e\u30b9\u30ad\u30fc\u30de\u3092\u5b9a\u7fa9\u3059\u308b\u305f\u3081\u306b\u3001\u4ee5\u4e0b\u306eDTO\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\npackage mycode.dto;\n\nimport lombok.AllArgsConstructor;\nimport lombok.Data;\nimport lombok.NoArgsConstructor;\nimport java.util.Date;\n\nimport com.toshiba.mwcloud.gs.RowKey;\n\n@Data\n@NoArgsConstructor\n@AllArgsConstructor\npublic class ServiceTicket {\n  @RowKey\n  public Date createdDate;\n  public String caseNumber;\n  public Date closedDate;\n  public String subject;\n  public String status;\n  public String priority;\n  public double resolutionTime;\n}<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>GridDB\u3078\u306e\u30c7\u30fc\u30bf\u633f\u5165<\/strong>\uff1a \u5909\u63db\u3055\u308c\u305fDTO\u3092\u53cd\u5fa9\u51e6\u7406\u3057\u3001\u5404\u30ec\u30b3\u30fc\u30c9\u3092\u5bfe\u5fdc\u3059\u308bGridDB\u30b3\u30f3\u30c6\u30ca\u306b\u633f\u5165\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u304c\u6642\u7cfb\u5217\u306e\u6027\u8cea\u3092\u4fdd\u6301\u3059\u308b\u3088\u3046\u306b\u633f\u5165\u3057\u3001\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u30b1\u30fc\u30b9\u306e\u30e9\u30a4\u30d5\u30b5\u30a4\u30af\u30eb\u3092\u6b63\u78ba\u306b\u53cd\u6620\u3059\u308b\u3088\u3046\u306b\u3057\u307e\u3059\uff08\u4f8b\uff1a <code>CreatedDate<\/code> \u3068 <code>ClosedDate<\/code>\uff09\u3002<\/li>\n<\/ul>\n<p>\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u8a73\u7d30\u306a\u5b9f\u88c5\u306f\u3001\u4ee5\u4e0b\u306e\u30af\u30e9\u30b9\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\npackage mycode.service;\n\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.Random;\nimport java.text.ParseException;\nimport java.time.Instant;\nimport java.time.LocalDateTime;\nimport java.time.ZoneOffset;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.http.HttpEntity;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.HttpMethod;\nimport org.springframework.http.HttpStatus;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.LinkedMultiValueMap;\nimport org.springframework.util.MultiValueMap;\nimport org.springframework.web.client.HttpClientErrorException;\nimport org.springframework.web.client.RestTemplate;\nimport org.springframework.web.util.UriComponentsBuilder;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonMappingException;\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport com.fasterxml.jackson.databind.node.ArrayNode;\nimport com.toshiba.mwcloud.gs.*;\n\nimport mycode.dto.ServiceTicket;\n\n@Service\npublic class MetricsCollectionService {\n\n    @Autowired\n    private GridStore store;\n\n    @Autowired\n    private RestTemplate restTemplate;\n\n    @Scheduled(fixedRate = 60000) \/\/ Collect metrics every minute\n    public void collectMetrics() throws GSException, JsonMappingException, JsonProcessingException, ParseException {\n        String accessToken = getSalesforceAccessToken();\n        ArrayList&lt;serviceticket> salesforceData = fetchSalesforceData(accessToken);\n\n        salesforceData.forEach(ticket -> {\n            try {\n                TimeSeries&lt;\/serviceticket>&lt;serviceticket> ts = store.putTimeSeries(\"serviceTickets\", ServiceTicket.class);\n                ts.put(salesforceData);\n            } catch (GSException e) {\n                e.printStackTrace();\n            }\n        });\n    }\n\n    public ArrayList&lt;\/serviceticket>&lt;serviceticket> fetchSalesforceData(String accessToken)\n            throws JsonMappingException, JsonProcessingException, ParseException {\n\n        String queryUrl = \"https:\/\/&lt;enter_sf_tenant>.develop.my.salesforce.com\/services\/data\/v57.0\/query\";\n\n        HttpHeaders headers = new HttpHeaders();\n        headers.setBearerAuth(accessToken);\n\n        UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(queryUrl)\n                .queryParam(\"q\", \"SELECT+Id,+CaseNumber,+Subject,+Status,+CreatedDate,+ClosedDate,+Priority+FROM+Case\");\n\n        HttpEntity&lt;string> request = new HttpEntity&lt;>(headers);\n        ResponseEntity&lt;\/string>&lt;string> response = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, request, String.class);\n\n        if (response.getStatusCode() == HttpStatus.OK) {\n            ObjectMapper objectMapper = new ObjectMapper();\n            JsonNode rootNode = objectMapper.readTree(response.getBody());\n            ArrayNode records = (ArrayNode) rootNode.path(\"records\");\n\n            System.out.println(response.getBody());\n\n            ArrayList&lt;serviceticket> serviceTickets = new ArrayList&lt;>();\n            for (JsonNode record : records) {\n                ServiceTicket ticket = new ServiceTicket();\n                String status = record.get(\"Status\").asText();\n                ticket.setStatus(status);\n\n                if (\"Closed\".equals(status)) {\n                    ticket.setCaseNumber(record.get(\"CaseNumber\").asText());\n                    ticket.setCreatedDate(objectMapper.convertValue(record.get(\"CreatedDate\"),Date.class));\n                    ticket.setClosedDate(objectMapper.convertValue(record.get(\"ClosedDate\"), Date.class));\n                    ticket.setSubject(record.get(\"Subject\").asText());\n                    ticket.setPriority(record.get(\"Priority\").asText());\n                    ticket.setResolutionTime(\n                            calculateResolutionTimeInHours(\n                                    objectMapper.convertValue(record.get(\"CreatedDate\"), Date.class),\n                                    objectMapper.convertValue(record.get(\"ClosedDate\"), Date.class)));\n                    serviceTickets.add(ticket);\n                }\n            }\n            return serviceTickets;\n        } else {\n            throw new RuntimeException(\"Failed to fetch data from Salesforce\");\n        }\n    }\n\n    public static double calculateResolutionTimeInHours(Date createdDate, Date closedDate) {\n        long timeDifferenceMillis = closedDate.getTime() - createdDate.getTime();\n        return 1 + (100 - 1) * new Random().nextDouble();\n    }\n\n    public String getSalesforceAccessToken() throws JsonMappingException, JsonProcessingException {\n        String url = \"https:\/\/login.salesforce.com\/services\/oauth2\/token\";\n\n        HttpHeaders headers = new HttpHeaders();\n        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);\n\n        MultiValueMap&lt;String, String> body = new LinkedMultiValueMap&lt;>();\n        body.add(\"grant_type\", \"password\");\n        body.add(\"client_id\", \"ENTER_CLIENT_ID\");\n        body.add(\"client_secret\", \"ENTER_CLIENT_SECRET\");\n        body.add(\"password\", \"ENTER_PASSOWRD\");\n        body.add(\"redirect_uri\", \"ENTER_REDIRECT_URI\");\n        body.add(\"username\", \"ENTER_USERNAME\");\n\n        HttpEntity&lt;MultiValueMap&lt;String, String>> requestEntity = new HttpEntity&lt;>(body, headers);\n\n        try {\n            ResponseEntity&lt;string> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class);\n\n            if (response.getStatusCode() == HttpStatus.OK) {\n                ObjectMapper objectMapper = new ObjectMapper();\n                JsonNode jsonNode = objectMapper.readTree(response.getBody());\n                return jsonNode.get(\"access_token\").asText();\n            } else {\n                throw new RuntimeException(\"Failed to retrieve the token\");\n            }\n        } catch (HttpClientErrorException e) {\n            System.out.println(\"HTTP Error: \" + e.getStatusCode());\n            System.out.println(\"Response Body: \" + e.getResponseBodyAsString());\n            throw e;\n        }\n    }\n}&lt;\/string>&lt;\/serviceticket>&lt;\/string>&lt;\/enter_sf_tenant>&lt;\/serviceticket><\/code><\/pre>\n<\/div>\n<p>\u4e0a\u8a18\u306e\u30b9\u30c6\u30c3\u30d7\u306b\u5f93\u3046\u3053\u3068\u3067\u3001Salesforce\u304b\u3089\u9867\u5ba2\u30b5\u30dd\u30fc\u30c8\u306e\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u3092\u52b9\u679c\u7684\u306b\u62bd\u51fa\u3067\u304d\u3001GridDB\u306b\u8aad\u307f\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<h2><strong>GridDB\u3067\u306e\u30c7\u30fc\u30bf\u30af\u30a8\u30ea\u3068Thymeleaf\u3092\u4f7f\u7528\u3057\u305f\u53ef\u8996\u5316<\/strong><\/h2>\n<p>\u30c7\u30fc\u30bf\u304cGridDB\u306b\u683c\u7d0d\u3055\u308c\u5229\u7528\u53ef\u80fd\u306b\u306a\u3063\u305f\u3089\u3001\u6b21\u306b\u3053\u306e\u30c7\u30fc\u30bf\u3092\u30a2\u30af\u30b7\u30e7\u30f3\u53ef\u80fd\u306a\u6d1e\u5bdf\u3092\u63d0\u4f9b\u3059\u308b\u5f62\u3067\u53ef\u8996\u5316\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30bb\u30af\u30b7\u30e7\u30f3\u3067\u306f\u3001Spring Boot\u3001Thymeleaf\u3001Chart.js\u3092\u4f7f\u7528\u3057\u3066\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3092\u69cb\u7bc9\u3057\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u5e73\u5747\u5024\u3068\u6642\u9593\u7d4c\u904e\u306b\u4f34\u3046\u50be\u5411\u3092\u8868\u793a\u3059\u308b\u30c1\u30e3\u30fc\u30c8\u3092\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u65b9\u6cd5\u3092\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u3053\u308c\u3092\u5b9f\u73fe\u3057\u307e\u3059\uff1a<\/p>\n<ul>\n<li><strong>Chart Controller \u306e\u69cb\u7bc9<\/strong><\/li>\n<\/ul>\n<p><code>ChartController<\/code> \u306f\u3001GridDB\u5185\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30c7\u30fc\u30bf\u3068\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u8868\u793a\u3055\u308c\u308b\u30d5\u30ed\u30f3\u30c8\u30a8\u30f3\u30c9\u306e\u53ef\u8996\u5316\u306e\u9593\u3067\u4ef2\u4ecb\u5f79\u3092\u679c\u305f\u3057\u307e\u3059\u3002\u305d\u306e\u5f79\u5272\u306b\u306f\u3001HTTP\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u51e6\u7406\u3001\u30b5\u30fc\u30d3\u30b9\u5c64\u3068\u306e\u9023\u643a\u306b\u3088\u308b\u30c7\u30fc\u30bf\u53d6\u5f97\u3001\u304a\u3088\u3073\u305d\u306e\u30c7\u30fc\u30bf\u3092Thymeleaf\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306b\u6e21\u3057\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u3059\u308b\u4f5c\u696d\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n<p><code>ChartController<\/code> \u306e\u5b9f\u88c5\u65b9\u6cd5\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\npackage mycode.controller;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.ui.Model;\nimport org.springframework.web.bind.annotation.GetMapping;\n\nimport mycode.service.ChartService;\nimport java.util.HashMap;\nimport java.util.Map;\n\n@Controller\npublic class ChartController {\n\n  @Autowired\n  ChartService chartService;\n\n  @GetMapping(\"\/charts\")\n  public String showCharts(Model model) {\n\n    Map&lt;String, Object> chartData = new HashMap&lt;>();\n    try {\n      Map&lt;String, Object> projectionData = chartService.queryData();\n      chartData.put(\"values\", projectionData.get(\"time\"));\n      chartData.put(\"labels\", projectionData.get(\"dates\"));\n    } catch (Exception e) {\n      e.printStackTrace();\n    }\n    model.addAttribute(\"chartData\", chartData);\n    \/\/ Returning the name of the Thymeleaf template (without .html extension)\n    return \"charts\";\n  }\n}<\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>\u30c1\u30e3\u30fc\u30c8\u30b5\u30fc\u30d3\u30b9\u306e\u5b9f\u65bd<\/strong><\/li>\n<\/ul>\n<p><code>ChartService<\/code>\u306f\u30d3\u30b8\u30cd\u30b9\u30ed\u30b8\u30c3\u30af\u5c64\u3068\u3057\u3066\u6a5f\u80fd\u3057\u3001GridDB\u3078\u306e\u30af\u30a8\u30ea\u5b9f\u884c\u3068\u7d50\u679c\u306e\u51e6\u7406\u306b\u5fc5\u8981\u306a\u64cd\u4f5c\u3092\u30ab\u30d7\u30bb\u30eb\u5316\u3057\u307e\u3059\u3002\u3053\u306e\u30b5\u30fc\u30d3\u30b9\u306f\u3001\u5e73\u5747\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u3084\u512a\u5148\u5ea6\u5225\u306e\u30c1\u30b1\u30c3\u30c8\u5206\u5e03\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30e1\u30c8\u30ea\u30af\u30b9\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n<p><code>ChartService<\/code>\u306e\u5b9f\u88c5\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-java\">\npackage mycode.service;\n\nimport java.text.SimpleDateFormat;\nimport java.util.ArrayList;\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport com.toshiba.mwcloud.gs.Container;\nimport com.toshiba.mwcloud.gs.GridStore;\nimport com.toshiba.mwcloud.gs.Query;\nimport com.toshiba.mwcloud.gs.Row;\nimport com.toshiba.mwcloud.gs.RowSet;\n\n@Service\npublic class ChartService {\n\n  @Autowired\n  GridStore store;\n\n  public Map&lt;String, Object> queryData() throws Exception {\n\n    Container<?, Row> container = store.getContainer(\"serviceTickets\");\n    if (container == null) {\n      throw new Exception(\"Container not found.\");\n    }\n    Map&lt;String, Object> resultMap = new HashMap&lt;>();\n    ArrayList&lt;double> resolutionTime = new ArrayList&lt;>();\n    ArrayList&lt;date> ticketDates = new ArrayList&lt;>();\n\n    SimpleDateFormat dateFormat = new SimpleDateFormat(\"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'\");\n    Date now = new Date();\n\n    String nowString = dateFormat.format(now);\n    String startTime = \"1971-12-23T18:18:52.000Z\";\n\n    String queryString = \"select * where CreatedDate >= TIMESTAMP('\" + startTime\n        + \"') and CreatedDate &lt;= TIMESTAMP('\" + nowString + \"')\";\n    Query&lt;row> query = container.query(queryString);\n    RowSet&lt;\/row>&lt;row> rs = query.fetch();\n\n    while (rs.hasNext()) {\n      Row row = rs.next();\n      resolutionTime.add(row.getDouble(6));\n      ticketDates.add(row.getTimestamp(0));\n      resultMap.putIfAbsent(\"time\", resolutionTime);\n      resultMap.putIfAbsent(\"dates\", ticketDates);\n    }\n    return resultMap;\n  }\n\n}&lt;\/row>&lt;\/date>&lt;\/double><\/code><\/pre>\n<\/div>\n<ul>\n<li><strong>Thymeleaf \u3092\u4f7f\u7528\u3057\u305f\u30c1\u30e3\u30fc\u30c8\u8868\u793a<\/strong><\/li>\n<\/ul>\n<p>\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u51e6\u7406\u3057\u305f\u5f8c\u306f\u3001Thymeleaf \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306b\u30c1\u30e3\u30fc\u30c8\u3092\u8868\u793a\u3059\u308b\u6700\u7d42\u30b9\u30c6\u30c3\u30d7\u3067\u3059\u3002Thymeleaf \u306f\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u30c7\u30fc\u30bf\u3092 HTML \u30d3\u30e5\u30fc\u306b\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u7d71\u5408\u3067\u304d\u308b\u305f\u3081\u3001\u52d5\u7684\u304b\u3064\u30c7\u30fc\u30bf\u99c6\u52d5\u578b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306b\u6700\u9069\u306a\u9078\u629e\u80a2\u3067\u3059\u3002<\/p>\n<p>Thymeleaf\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f\u3001<code>ChartController<\/code>\u306b\u3088\u3063\u3066\u53d6\u5f97\u3055\u308c\u3001<code>ChartService<\/code>\u3067\u51e6\u7406\u3055\u308c\u305f\u30c7\u30fc\u30bf\u3092\u52d5\u7684\u306b\u7d44\u307f\u8fbc\u307f\u3001\u30c1\u30b1\u30c3\u30c8\u306e\u89e3\u6c7a\u6642\u9593\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u3067\u53ef\u8996\u5316\u3057\u307e\u3059\u3002<\/p>\n<p>\u4ee5\u4e0b\u306f<code>charts.html<\/code>\u306e\u5b9f\u88c5\u4f8b\u3067\u3059: html<\/p>\n<pre><code>.container {\n  width: 90%;\n  max-width: 900px;\n  margin: 20px;\n  padding: 20px;\n  background-color: #fff;\n  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n  border-radius: 8px;\n  box-sizing: border-box;\n}\n\nh1 {\n  text-align: center;\n  margin-bottom: 20px;\n  color: #555;\n}\n\ncanvas {\n  display: block;\n  margin: 0 auto;\n  width: 100%;\n  max-height: 500px;\n  \/* Limit maximum height *\/\n}\n<\/code><\/pre>\n<div class=\"container\">\n<h1>\n    Service Ticket Dashboard<br \/>\n  <\/h1>\n<p><canvas id=\"myChart\"><\/canvas>\n<\/div>\n<p><!-- JavaScript to render the Chart.js chart --><\/p>\n<p><script th_inline=\"javascript\"> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx, { type: 'bar', \/\/ Type of chart data: { labels: \/*[[${chartData.labels}]]*\/, \/\/ Data labels datasets: [{ label: 'Ticket Resolution Time (in hour)', data: \/*[[${chartData.values}]]*\/, \/\/ Data values backgroundColor: 'rgba(54, 162, 235, 0.2)', borderColor: 'rgba(54, 162, 235, 1)', borderWidth: 2 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true } }, plugins: { legend: { display: true, position: 'top', labels: { color: '#333', font: { size: 14 } } } } } }); <\/script><\/p>\n<h3>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u5b9f\u884c<\/h3>\n<p>\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u5b9f\u884c\u3059\u308b\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d3\u30eb\u30c9\u3057\u3001\u5b9f\u884c\u3057\u307e\u3059\uff1a<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">\nmvn clean install && mvn spring-boot:run  <\/code><\/pre>\n<\/div>\n<h3>\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9<\/h3>\n<p>\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u304c\u6b63\u5e38\u306b\u52d5\u4f5c\u3057\u3066\u3044\u308b\u72b6\u614b\u3067\u3001\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u958b\u304d\u3001<code>http:\/\/localhost:9090\/charts<\/code> \u306b\u30a2\u30af\u30bb\u30b9\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3053\u306eURL\u306b\u306f\u3001Thymeleaf\u30d9\u30fc\u30b9\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u304c\u8868\u793a\u3055\u308c\u3001\u6642\u9593\u7d4c\u904e\u306b\u4f34\u3046\u5e73\u5747\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u3092\u53ef\u8996\u5316\u3057\u305f\u30c1\u30e3\u30fc\u30c8\u3092\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2025\/02\/chart.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2025\/02\/chart.png\" alt=\"\" width=\"1391\" height=\"855\" class=\"aligncenter size-full wp-image-31385\" srcset=\"\/wp-content\/uploads\/2025\/02\/chart.png 1391w, \/wp-content\/uploads\/2025\/02\/chart-300x184.png 300w, \/wp-content\/uploads\/2025\/02\/chart-1024x629.png 1024w, \/wp-content\/uploads\/2025\/02\/chart-768x472.png 768w, \/wp-content\/uploads\/2025\/02\/chart-600x369.png 600w\" sizes=\"(max-width: 1391px) 100vw, 1391px\" \/><\/a><\/p>\n<p>\u3053\u306e\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u30c1\u30e3\u30fc\u30c8\u306f\u3001Salesforce\u304b\u3089\u53d6\u5f97\u3057\u305f\u30c7\u30fc\u30bf\u3092\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e<code>ChartService<\/code>\u3067\u51e6\u7406\u3057\u3066\u52d5\u7684\u306b\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u65b0\u3057\u3044\u30c1\u30b1\u30c3\u30c8\u30c7\u30fc\u30bf\u304c\u51e6\u7406\u3055\u308c\u308b\u305f\u3073\u306b\u3001\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306f\u81ea\u52d5\u7684\u306b\u66f4\u65b0\u3055\u308c\u3001\u6700\u65b0\u306e\u30e1\u30c8\u30ea\u30af\u30b9\u3068\u30c8\u30ec\u30f3\u30c9\u3092\u53cd\u6620\u3057\u307e\u3059\u3002\u3053\u306e\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u66f4\u65b0\u6a5f\u80fd\u306b\u3088\u308a\u3001\u9867\u5ba2\u30b5\u30dd\u30fc\u30c8\u306e\u52b9\u7387\u6027\u3092\u7d99\u7d9a\u7684\u306b\u76e3\u8996\u3057\u3001\u30c8\u30ec\u30f3\u30c9\u3092\u8ffd\u8de1\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n<p><strong>GridDB \u3067\u306e\u30c7\u30fc\u30bf\u683c\u7d0d\uff1a<\/strong><\/p>\n<p>GridDB Shell \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u4ee5\u4e0b\u306e\u4f8b\u306b\u793a\u3059\u3088\u3046\u306b\u3001\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u7d4c\u7531\u3067\u30c7\u30fc\u30bf\u306b\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3057\u3001\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2025\/02\/GridDB.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2025\/02\/GridDB.png\" alt=\"\" width=\"1535\" height=\"647\" class=\"aligncenter size-full wp-image-31384\" srcset=\"\/wp-content\/uploads\/2025\/02\/GridDB.png 1535w, \/wp-content\/uploads\/2025\/02\/GridDB-300x126.png 300w, \/wp-content\/uploads\/2025\/02\/GridDB-1024x432.png 1024w, \/wp-content\/uploads\/2025\/02\/GridDB-768x324.png 768w, \/wp-content\/uploads\/2025\/02\/GridDB-600x253.png 600w\" sizes=\"(max-width: 1535px) 100vw, 1535px\" \/><\/a><\/p>\n<h3><strong>\u7d50\u8ad6\uff1a<\/strong><\/h3>\n<p>Salesforce\u3068GridDB\u3092\u7d71\u5408\u3059\u308b\u3053\u3068\u3067\u3001\u5f37\u529b\u306aCRM\u30b7\u30b9\u30c6\u30e0\u3068\u9ad8\u6027\u80fd\u306a\u6642\u7cfb\u5217\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u30b7\u30fc\u30e0\u30ec\u30b9\u306b\u63a5\u7d9a\u3057\u307e\u3057\u305f\u3002\u3053\u306e\u69cb\u6210\u3067\u306f\u3001GridDB\u306e\u9ad8\u5ea6\u306a\u6642\u7cfb\u5217\u6a5f\u80fd\u3092\u6d3b\u7528\u3057\u3066\u30c7\u30fc\u30bf\u7ba1\u7406\u306e\u52b9\u7387\u5316\u3092\u5b9f\u73fe\u3057\u3064\u3064\u3001Spring Boot\u3092\u6d3b\u7528\u3057\u3066\u30c7\u30fc\u30bf\u62bd\u51fa\u3068\u51e6\u7406\u3092\u6700\u9069\u5316\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>\u3053\u306e\u30a2\u30d7\u30ed\u30fc\u30c1\u306f\u3001\u89e3\u6c7a\u6642\u9593\u306e\u76e3\u8996\u3068\u6700\u9069\u5316\u80fd\u529b\u3092\u5f37\u5316\u3059\u308b\u3060\u3051\u3067\u306a\u304f\u3001\u7d99\u7d9a\u7684\u306a\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5206\u6790\u306e\u305f\u3081\u306e\u30b9\u30b1\u30fc\u30e9\u30d6\u30eb\u306a\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30c4\u30fc\u30eb\u306f\u3001\u30b5\u30dd\u30fc\u30c8\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u306e\u6df1\u3044\u7406\u89e3\u3092\u53ef\u80fd\u306b\u3057\u3001\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u63a8\u9032\u3057\u3001\u30c7\u30fc\u30bf\u99c6\u52d5\u578b\u306e\u610f\u601d\u6c7a\u5b9a\u3092\u52b9\u679c\u7684\u306b\u884c\u3046\u305f\u3081\u306e\u57fa\u76e4\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u6982\u8981 \u73fe\u5728\u306e\u7af6\u4e89\u306e\u6fc0\u3057\u3044\u30d3\u30b8\u30cd\u30b9\u74b0\u5883\u306b\u304a\u3044\u3066\u3001\u52b9\u7387\u7684\u306a\u30ab\u30b9\u30bf\u30de\u30fc\u30b5\u30dd\u30fc\u30c8\u306f\u9867\u5ba2\u306e\u7dad\u6301\u3068\u30d3\u30b8\u30cd\u30b9\u6210\u529f\u306e\u9375\u3092\u63e1\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u76ee\u6a19\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u91cd\u8981\u306a\u8981\u7d20\u306e\u4e00\u3064\u304c\u3001\u30c1\u30b1\u30c3\u30c8\u89e3\u6c7a\u6642\u9593\u306e\u6700\u5c0f\u5316\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u6642\u9593\u3092\u5206\u6790\u3057\u6700\u9069\u5316\u3059 [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":49098,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1005],"tags":[],"class_list":["post-50929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-1005"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"\u6982\u8981\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/griddb-with-salesforce-integration\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"\u6982\u8981\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/griddb-with-salesforce-integration\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-21T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-14T15:57:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2020\/03\/chart.png\" \/>\n\t<meta property=\"og:image:width\" content=\"739\" \/>\n\t<meta property=\"og:image:height\" content=\"457\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"GridDB \u3068 Salesforce \u306e\u7d71\u5408\",\"datePublished\":\"2025-02-21T08:00:00+00:00\",\"dateModified\":\"2025-11-14T15:57:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/\"},\"wordCount\":181,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2020\/03\/chart.png\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/\",\"url\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/\",\"name\":\"GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2020\/03\/chart.png\",\"datePublished\":\"2025-02-21T08:00:00+00:00\",\"dateModified\":\"2025-11-14T15:57:03+00:00\",\"description\":\"\u6982\u8981\",\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2020\/03\/chart.png\",\"contentUrl\":\"\/wp-content\/uploads\/2020\/03\/chart.png\",\"width\":739,\"height\":457,\"caption\":\"GridDB Performance using Google Cloud Platform\"},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT","description":"\u6982\u8981","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/griddb-with-salesforce-integration\/","og_locale":"ja_JP","og_type":"article","og_title":"GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT","og_description":"\u6982\u8981","og_url":"https:\/\/griddb.net\/ja\/\u672a\u5206\u985e\/griddb-with-salesforce-integration\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2025-02-21T08:00:00+00:00","article_modified_time":"2025-11-14T15:57:03+00:00","og_image":[{"width":739,"height":457,"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2020\/03\/chart.png","type":"image\/png"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"\u57f7\u7b46\u8005":"griddb-admin","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"8\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"GridDB \u3068 Salesforce \u306e\u7d71\u5408","datePublished":"2025-02-21T08:00:00+00:00","dateModified":"2025-11-14T15:57:03+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/"},"wordCount":181,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2020\/03\/chart.png","inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/","url":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/","name":"GridDB \u3068 Salesforce \u306e\u7d71\u5408 | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2020\/03\/chart.png","datePublished":"2025-02-21T08:00:00+00:00","dateModified":"2025-11-14T15:57:03+00:00","description":"\u6982\u8981","inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb.net\/ja\/%e6%9c%aa%e5%88%86%e9%a1%9e\/griddb-with-salesforce-integration\/#primaryimage","url":"\/wp-content\/uploads\/2020\/03\/chart.png","contentUrl":"\/wp-content\/uploads\/2020\/03\/chart.png","width":739,"height":457,"caption":"GridDB Performance using Google Cloud Platform"},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/posts\/50929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/comments?post=50929"}],"version-history":[{"count":1,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/posts\/50929\/revisions"}],"predecessor-version":[{"id":51745,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/posts\/50929\/revisions\/51745"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/media\/49098"}],"wp:attachment":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/media?parent=50929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/categories?post=50929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/ja\/wp-json\/wp\/v2\/tags?post=50929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}