<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-NPCS76PQ0H">
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-NPCS76PQ0H');
</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5GTK3QV7');</script>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-T8S4S8JW');</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-39405545-1', 'auto');
ga('send', 'pageview');
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LoadStar Scheduler - 機能一覧</title>
<script src="https://cdn.tailwindcss.com">
<script>
tailwind.config = {
theme: {
extend: {
colors: {
primary: '#F68B1E',
secondary: '#0f172a', // Slate 900
accent: '#f0f9ff', // Sky 50
},
fontFamily: {
sans: ['"Noto Sans JP"', 'sans-serif'],
}
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700&display=swap');
body {
font-family: 'Noto Sans JP', sans-serif;
}
.text-sm.text-gray-600.leading-relaxed {
font-size: 1.5rem;
}
.nav-link.block.px-3.py-2.text-sm.rounded-md.transition-colors.duration-200,
.text-xs.font-bold.text-gray-400.uppercase.tracking-wider.mb-4 {
font-size: 1.3125rem;
}
.block.mt-3.px-3.py-2.text-sm.rounded-md.transition-colors.duration-200.bg-secondary.text-white.hover\:bg-gray-700.hover\:text-white.font-medium {
font-size: 1.3125rem;
}
/**/
h2.text-2xl.font-bold.text-secondary {
font-size: 2.5rem;
}
@media (min-width: 768px) {
h2.text-2xl.font-bold.text-secondary {
font-size: 3rem;
}
}
.smooth-scroll {
scroll-behavior: smooth;
}
.page-container {
width: min(96vw, 1600px);
margin-left: auto;
margin-right: auto;
padding-left: clamp(12px, 1.8vw, 24px);
padding-right: clamp(12px, 1.8vw, 24px);
}
@media (max-width: 767px) {
aside.sticky.top-24.self-start {
position: static;
top: auto;
}
#sidebar-nav {
display: block;
margin-top: 0.5rem;
border: 1px solid #e5e7eb;
border-radius: 0.5rem;
background: #ffffff;
padding: 0.5rem;
}
}
/* REMOVE_CANDIDATE: #sidebar-nav は既定で block のため、必要最小化時に削除検討可 */
@media (min-width: 768px) {
#sidebar-nav {
display: block;
}
}
/* カスタムスクロールバー */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
/* md基準の補助スタイル(タブレット以上) */
@media (min-width: 768px) {
main>.flex.flex-col.md\:flex-row.gap-10 {
align-items: flex-start;
gap: 2rem;
}
main>.flex.flex-col.md\:flex-row.gap-10>aside {
min-width: 220px;
}
main>.flex.flex-col.md\:flex-row.gap-10>.md\:w-3\/4 {
min-width: 0;
}
#sidebar-nav {
max-height: calc(100vh - 9rem);
overflow: auto;
padding-right: 0.25rem;
}
}
/* タブレット帯のみ微調整 */
@media (min-width: 768px) and (max-width: 1023px) {
.sticky.top-24 {
top: 5rem;
}
}
.bg-lss-blue {
background-color: #031c8b;
}
.hover\:bg-lss-blue-dark:hover {
background-color: #031c8b;
}
</style>
<script id="" text="" charset="" type="text/javascript" src="https://s.yimg.jp/images/listing/tool/cv/ytag.js">
<style>
*,
::before,
::after {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style:
}
::backdrop {
--tw-border-spacing-x: 0;
--tw-border-spacing-y: 0;
--tw-translate-x: 0;
--tw-translate-y: 0;
--tw-rotate: 0;
--tw-skew-x: 0;
--tw-skew-y: 0;
--tw-scale-x: 1;
--tw-scale-y: 1;
--tw-pan-x: ;
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
--tw-gradient-from-position: ;
--tw-gradient-via-position: ;
--tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
--tw-numeric-spacing: ;
--tw-numeric-fraction: ;
--tw-ring-inset: ;
--tw-ring-offset-width: 0px;
--tw-ring-offset-color: #fff;
--tw-ring-color: rgb(59 130 246 / 0.5);
--tw-ring-offset-shadow: 0 0 #0000;
--tw-ring-shadow: 0 0 #0000;
--tw-shadow: 0 0 #0000;
--tw-shadow-colored: 0 0 #0000;
--tw-blur: ;
--tw-brightness: ;
--tw-contrast: ;
--tw-grayscale: ;
--tw-hue-rotate: ;
--tw-invert: ;
--tw-saturate: ;
--tw-sepia: ;
--tw-drop-shadow: ;
--tw-backdrop-blur: ;
--tw-backdrop-brightness: ;
--tw-backdrop-contrast: ;
--tw-backdrop-grayscale: ;
--tw-backdrop-hue-rotate: ;
--tw-backdrop-invert: ;
--tw-backdrop-opacity: ;
--tw-backdrop-saturate: ;
--tw-backdrop-sepia: ;
--tw-contain-size: ;
--tw-contain-layout: ;
--tw-contain-paint: ;
--tw-contain-style:
}
/* ! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com */
*,
::after,
::before {
box-sizing: border-box;
border-width: 0;
border-style: solid;
border-color: #e5e7eb
}
::after,
::before {
--tw-content: ''
}
:host,
html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
-moz-tab-size: 4;
tab-size: 4;
font-family: "Noto Sans JP", sans-serif;
font-feature-settings: normal;
font-variation-settings: normal;
-webkit-tap-highlight-color: transparent
}
body {
margin: 0;
line-height: inherit
}
hr {
height: 0;
color: inherit;
border-top-width: 1px
}
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-size: inherit;
font-weight: inherit
}
a {
color: inherit;
text-decoration: inherit
}
b,
strong {
font-weight: bolder
}
code,
kbd,
pre,
samp {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
font-feature-settings: normal;
font-variation-settings: normal;
font-size: 1em
}
small {
font-size: 80%
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline
}
sub {
bottom: -.25em
}
sup {
top: -.5em
}
table {
text-indent: 0;
border-color: inherit;
border-collapse: collapse
}
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-feature-settings: inherit;
font-variation-settings: inherit;
font-size: 100%;
font-weight: inherit;
line-height: inherit;
letter-spacing: inherit;
color: inherit;
margin: 0;
padding: 0
}
button,
select {
text-transform: none
}
button,
input:where([type=button]),
input:where([type=reset]),
input:where([type=submit]) {
-webkit-appearance: button;
background-color: transparent;
background-image: none
}
:-moz-focusring {
outline: auto
}
:-moz-ui-invalid {
box-shadow: none
}
progress {
vertical-align: baseline
}
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px
}
::-webkit-search-decoration {
-webkit-appearance: none
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit
}
summary {
display: list-item
}
blockquote,
dd,
dl,
figure,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
p,
pre {
margin: 0
}
fieldset {
margin: 0;
padding: 0
}
legend {
padding: 0
}
menu,
ol,
ul {
list-style: none;
margin: 0;
padding: 0
}
dialog {
padding: 0
}
textarea {
resize: vertical
}
input::placeholder,
textarea::placeholder {
opacity: 1;
color: #9ca3af
}
[role=button],
button {
cursor: pointer
}
:disabled {
cursor: default
}
audio,
canvas,
embed,
iframe,
img,
object,
svg,
video {
display: block;
vertical-align: middle
}
img,
video {
max-width: 100%;
height: auto
}
[hidden]:where(:not([hidden=until-found])) {
display: none
}
.relative {
position: relative
}
.sticky {
position: sticky
}
.top-0 {
top: 0px
}
.top-24 {
top: 6rem
}
.z-50 {
z-index: 50
}
.mx-auto {
margin-left: auto;
margin-right: auto
}
.mb-4 {
margin-bottom: 1rem
}
.mb-6 {
margin-bottom: 1.5rem
}
.mb-8 {
margin-bottom: 2rem
}
.mt-20 {
margin-top: 5rem
}
.mb-2 {
margin-bottom: 0.5rem
}
.mt-0\.5 {
margin-top: 0.125rem
}
.block {
display: block
}
.flex {
display: flex
}
.grid {
display: grid
}
.hidden {
display: none
}
.h-16 {
height: 4rem
}
.h-8 {
height: 2rem
}
.h-5 {
height: 1.25rem
}
.h-full {
height: 100%
}
.w-8 {
width: 2rem
}
.w-full {
width: 100%
}
.w-5 {
width: 1.25rem
}
.max-w-2xl {
max-width: 42rem
}
.max-w-7xl {
max-width: 80rem
}
.flex-shrink-0 {
flex-shrink: 0
}
.flex-grow {
flex-grow: 1
}
.scroll-mt-24 {
scroll-margin-top: 6rem
}
.grid-cols-1 {
grid-template-columns: repeat(1, minmax(0, 1fr))
}
.flex-col {
flex-direction: column
}
.items-center {
align-items: center
}
.items-stretch {
align-items: stretch
}
.justify-center {
justify-content: center
}
.justify-between {
justify-content: space-between
}
.gap-10 {
gap: 2.5rem
}
.gap-2 {
gap: 0.5rem
}
.gap-3 {
gap: 0.75rem
}
.gap-4 {
gap: 1rem
}
.space-x-6> :not([hidden])~ :not([hidden]) {
--tw-space-x-reverse: 0;
margin-right: calc(1.5rem * var(--tw-space-x-reverse));
margin-left: calc(1.5rem * calc(1 - var(--tw-space-x-reverse)))
}
.space-y-1> :not([hidden])~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(0.25rem * var(--tw-space-y-reverse))
}
.space-y-16> :not([hidden])~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(4rem * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(4rem * var(--tw-space-y-reverse))
}
.space-y-2> :not([hidden])~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse))
}
.rounded {
border-radius: 0.25rem
}
.rounded-lg {
border-radius: 0.5rem
}
.rounded-md {
border-radius: 0.375rem
}
.border {
border-width: 1px
}
.border-b {
border-bottom-width: 1px
}
.border-b-2 {
border-bottom-width: 2px
}
.border-gray-700 {
--tw-border-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-border-opacity, 1))
}
.border-gray-100 {
--tw-border-opacity: 1;
border-color: rgb(243 244 246 / var(--tw-border-opacity, 1))
}
.border-gray-200 {
--tw-border-opacity: 1;
border-color: rgb(229 231 235 / var(--tw-border-opacity, 1))
}
.bg-gray-50 {
--tw-bg-opacity: 1;
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1))
}
.bg-gray-700 {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1))
}
.bg-primary {
--tw-bg-opacity: 1;
background-color: rgb(246 139 30 / var(--tw-bg-opacity, 1))
}
.bg-secondary {
--tw-bg-opacity: 1;
background-color: rgb(15 23 42 / var(--tw-bg-opacity, 1))
}
.bg-white {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1))
}
.p-6 {
padding: 1.5rem
}
.px-4 {
padding-left: 1rem;
padding-right: 1rem
}
.py-12 {
padding-top: 3rem;
padding-bottom: 3rem
}
.px-3 {
padding-left: 0.75rem;
padding-right: 0.75rem
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem
}
.pb-8 {
padding-bottom: 2rem
}
.pb-2 {
padding-bottom: 0.5rem
}
.text-center {
text-align: center
}
.text-3xl {
font-size: 1.875rem;
line-height: 2.25rem
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem
}
.text-xl {
font-size: 1.25rem;
line-height: 1.75rem
}
.text-xs {
font-size: 0.75rem;
line-height: 1rem
}
.text-2xl {
font-size: 1.5rem;
line-height: 2rem
}
.font-bold {
font-weight: 700
}
.font-semibold {
font-weight: 600
}
.font-medium {
font-weight: 500
}
.uppercase {
text-transform: uppercase
}
.leading-relaxed {
line-height: 1.625
}
.tracking-wider {
letter-spacing: 0.05em
}
.text-gray-300 {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity, 1))
}
.text-gray-400 {
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity, 1))
}
.text-gray-500 {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity, 1))
}
.text-gray-800 {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity, 1))
}
.text-secondary {
--tw-text-opacity: 1;
color: rgb(15 23 42 / var(--tw-text-opacity, 1))
}
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity, 1))
}
.text-gray-600 {
--tw-text-opacity: 1;
color: rgb(75 85 99 / var(--tw-text-opacity, 1))
}
.text-primary {
--tw-text-opacity: 1;
color: rgb(3 105 161 / var(--tw-text-opacity, 1))
}
.shadow-sm {
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
.transition {
transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.transition-all {
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.transition-colors {
transition-property: color, background-color, border-color, fill, stroke, -webkit-text-decoration-color;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-property: color, background-color, border-color, text-decoration-color, fill,
stroke, -webkit-text-decoration-color;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms
}
.duration-200 {
transition-duration: 200ms
}
.hover\:bg-gray-100:hover {
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1))
}
.hover\:text-white:hover {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity, 1))
}
.hover\:text-gray-900:hover {
--tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity, 1))
}
.hover\:shadow-md:hover {
--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
}
@media (min-width: 640px) {
.sm\:px-6 {
padding-left: 1.5rem;
padding-right: 1.5rem
}
}
@media (min-width: 768px) {
.md\:mb-0 {
margin-bottom: 0px
}
.md\:block {
display: block
}
.md\:grid-cols-2 {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
.md\:flex-row {
flex-direction: row
}
.md\:text-left {
text-align: left
}
.md\:text-4xl {
font-size: 2.25rem;
line-height: 2.5rem
}
}
@media (min-width: 1024px) {
.lg\:block {
display: block
}
.lg\:w-1\/4 {
width: 25%
}
.lg\:w-3\/4 {
width: 75%
}
.lg\:flex-row {
flex-direction: row
}
.lg\:px-8 {
padding-left: 2rem;
padding-right: 2rem
}
}
</style>
<script type="text/javascript" src="/js/dest/vendor.js?date=20260409103046" charset="UTF-8" async="" defer="">
<script type="text/javascript" src="/js/dest/index.js?date=20260409103046" charset="UTF-8" async="" defer="">
<meta name="generator" content="a-blog cms for professional">
<meta name="csrf-token" content="e7ec4084f7162c3c601af3a7be150ac26efe4117c6c5c708122b1f3c5cccefa4">
機能一覧
直感的な操作性から、エンタープライズの複雑な要件を満たす高度な制御まで、LoadStar Schedulerが提供する機能をカテゴリー別にご紹介します。
<script>
// --- Data ---
const featuresData = [
{
id: "cat-1",
category: "1. ジョブ定義",
items: [
{ name: "GUIで直感的なジョブ登録", desc: "ツールボックスからのドラッグ&ドロップ操作のみで、視覚的かつ容易にジョブやジョブネットを登録できます。" },
{ name: "ショートカットキー対応", desc: "画面上でのコピー&ペースト(Ctrl+C/V)や複数選択、削除(Delete)に対応し、スピーディーなジョブ登録・変更をサポートします。" },
{ name: "階層型ジョブ管理", desc: "トップパッケージ、サブパッケージ、トップジョブネット、ジョブネットと複数階層に分けて管理でき、大規模なジョブネットを登録・管理することが可能です。" },
{ name: "論理矛盾チェック機能", desc: "スケジュールの矛盾や設定漏れがないかを、定義の有効化(コミット)前にシステムが自動検証し、設定ミスを未然に防ぎます。" },
{ name: "編集ロック(排他制御)機能", desc: "複数人での同時編集による設定の競合や意図しない上書きを防止し、安全な設計作業を実現します。" },
{ name: "管理者によるロックの強制解除・変更", desc: "他のユーザーがロックした状態でも、管理者がロックユーザーを変更し、業務の滞りを防ぐことが可能です。" },
{ name: "定義情報の一括エクスポート機能", desc: "パッケージやジョブネットの定義情報をCSV形式で一括出力し、外部ファイルとして保存・共有が可能です。" },
{ name: "定義情報の一括インポート機能", desc: "表計算ソフトで一括編集した設定情報をシステムに取り込み、大量のジョブ定義を効率的にシステムへ反映できます。" }
]
},
{
id: "cat-2",
category: "2. ジョブ制御",
items: [
{ name: "プログラム(シェル・バッチ) / スクリプト実行", desc: "実行ファイルの指定実行や、画面上でのスクリプト文の直接記述によるジョブの実行が可能です。" },
{ name: "スイッチジョブネット(条件分岐)", desc: "先行ジョブの実行結果(ステータスや戻り値等)を判定し、後続の処理を動的に分岐させます。" },
{ name: "ファイル監視ジョブ", desc: "指定したファイルの「存在」「更新」「削除」といった状態変化を検知してジョブを起動します。" },
{ name: "ファイル監視のタイムアウト設定", desc: "ファイル監視にタイムアウト時間を設け、一定時間経過後に監視を自動で打ち切る機能に対応しています。" },
{ name: "リンクジョブ(待ち合わせ処理)", desc: "階層の異なる別のジョブネットにあるジョブの終了状態を監視し、それを契機に後続ジョブを実行します。" },
{ name: "OSリブートジョブ", desc: "ジョブフローの中に、対象エージェント(実行ホスト)をリモートで自動再起動する処理を組み込めます。" },
{ name: "パラメータの受け渡し", desc: "ジョブ実行時に、実行ファイルへ動的にパラメータを渡して実行することが可能です。" },
{ name: "Webサービス起動(API連携)", desc: "外部システムからのAPIリクエスト(POSTメソッド)を受け取り、リアルタイムなジョブ実行とJSON形式での結果返却に対応します。" }
]
},
{
id: "cat-3",
category: "3. スケジュール管理",
items: [
{ name: "多彩な起動条件設定", desc: "毎日、毎週、指定日、月末からn日前、第n曜日など、業務要件に合わせた柔軟なスケジュール設定が可能です。" },
{ name: "一定間隔のスケジュール設定", desc: "毎月、四半期、半期といった一定間隔でのジョブ実行スケジュールを簡単に設定できます。" },
{ name: "サイクル実行設定(繰り返し実行)", desc: "24時間以内に複数回(最短5分間隔)繰り返して実行するサイクルジョブを設定し、高頻度なバッチ処理に対応します。" },
{ name: "稼働日の自動振替機能", desc: "実行予定日が非稼働日(休日)と重なった場合、前後の営業日へ自動的に実行日をスライド(最大15日まで)させます。" },
{ name: "3階層のカレンダー管理", desc: "システム全体の「マスター」、業務群の「パッケージ」、個別の「登録カレンダー」の3階層で優先順位をつけてカレンダー情報を適用できます。" },
{ name: "カスタム営業日・休日設定", desc: "曜日ごとの基本稼働設定に加え、特定の日付を祝日や独自の営業日・非営業日として柔軟に設定可能です。" },
{ name: "カレンダー利用状況の逆引き検索", desc: "特定の登録カレンダーが、どのシステムやジョブネットに紐づいて利用されているかを一覧で確認できます。" },
{ name: "カレンダーデータのエクスポート/インポート", desc: "カレンダーの設定情報をCSV形式でエクスポート・インポートでき、年間の休日設定などを一括で更新可能です。" }
]
},
{
id: "cat-4",
category: "4. クラウド連携",
items: [
{ name: "ノーコードでクラウド連携", desc: "スクリプト作成やCLIの設定を行うこと無く、ノーコードでクラウド連携が可能です。" },
{ name: "AWS Amazon S3連携", desc: "S3へのファイルアップロード、ダウンロード、削除、およびファイルの存在/更新/削除監視を自動化します。" },
{ name: "AWS Lambda連携", desc: "Lambda関数の同期/非同期実行、状態確認、Active/非Active待機をスケジュールに組み込めます。" },
{ name: "Amazon EC2連携", desc: "EC2インスタンスの起動、停止、再起動、削除を自動化し、クラウドリソースの運用コスト最適化に貢献します。" },
{ name: "AWS Step Functions連携", desc: "ステートマシンの実行(完了待機の有無を含む)や状態確認などの連携に対応します。" },
{ name: "Azure Blob Storage連携", desc: "Blob Storageでのファイルアップロード、ダウンロード、削除、存在/更新/削除監視を自動実行します。" },
{ name: "Azure Functions連携", desc: "Functionsの関数実行(同期実行を含む)、状態確認、Active/非Active待機を自動化します。" },
{ name: "Azure VM(仮想マシン)連携", desc: "Azure仮想マシンの起動、停止(割り当て解除の指定を含む)、再起動、削除をジョブとして管理できます。" },
{ name: "クラウド認証情報の一元管理", desc: "アクセスキーやマネージドIDなどの認証情報をプロファイルとして一元管理し、機密情報は暗号化して保存します。" },
{ name: "プロキシ・証明書の事前定義", desc: "プロキシ設定や各種証明書(JKS、PKCS12、PEM等)のプロファイルを登録し、クラウドサービスとの連携を安全に行えます。" }
]
},
{
id: "cat-5",
category: "5. 可視化・実行管理",
items: [
{ name: "統合ダッシュボード機能", desc: "ジョブのステータス別件数や直近の実行状況をグラフィカルに表示し、システム全体を1画面で俯瞰できます。" },
{ name: "リソース使用率の可視化", desc: "サーバ全体、マネージャープロセス、データベースのCPU・メモリ・バッファプール使用率をタイムラインでグラフ表示します。" },
{ name: "異常/警告終了の即時リスト表示", desc: "ダッシュボード上で異常終了・警告終了したジョブを即座にリストアップし、早期のトラブル対応をサポートします。" },
{ name: "ガントチャート表示機能", desc: "ジョブネットやジョブの実行状況、所要時間をタイムライン上で色分け表示し、視覚的に確認・分析できます。" },
{ name: "前後関係のハイライト表示", desc: "フロー画面上で任意のジョブを選択し、関連する先行・後続ジョブをハイライト表示することが可能です。" },
{ name: "月別スケジュールカレンダー表示", desc: "1ヶ月分の実行予定をカレンダー形式で俯瞰でき、日々の運用スケジュールの直感的な把握が可能です。" },
{ name: "実行予定一覧の出力", desc: "指定した期間のスケジュールの実行予定日時一覧をCSVファイルでエクスポートできます。" }
]
},
{
id: "cat-6",
category: "6. ジョブ操作・運用管理",
items: [
{ name: "HOLD(保留)設定", desc: "指定したジョブ/ジョブネットの実行条件が揃っても、実行を一時的に保留状態にすることができます。" },
{ name: "SKIP(スキップ)設定", desc: "指定したジョブの実行条件が揃った際、実際の処理を行わずに「完了扱い(SKIP済み)」として後続処理へ進めることができます。" },
{ name: "期間指定のHOLD / SKIP", desc: "年末年始やメンテナンス時など、指定した期間内に含まれるすべての実行予定に対して一括で保留やスキップを設定できます。" },
{ name: "一時的な日時変更機能", desc: "スポットでの予定変更に対応するため、特定の実行予定(世代)のみ、実行日時を個別に変更することが可能です。" },
{ name: "随時実行", desc: "定期スケジュールとは無関係に、即時または指定時刻(絶対時刻/相対時刻)で任意のジョブをいつでも実行できます。" },
{ name: "柔軟な再実行オプション", desc: "「エラー箇所から後続すべて」「次のジョブから」「このジョブのみ」「異常終了したジョブを一覧から選択」など、状況に応じた再実行が可能です。" },
{ name: "コマンド・スクリプトやパラメータを変更して再実行", desc: "再実行を行う際、その実行時のみ適用されるよう、一時的に定義内容や実行パラメータを変更して実行できます。" },
{ name: "強制終了", desc: "実行中のジョブや異常終了して停止しているジョブネットを、画面操作から強制的に終了させることができます。" },
{ name: "過去履歴の参照と世代管理", desc: "過去の実行履歴を世代ごとに切り替えて確認でき、世代一覧から簡単にさかのぼることが可能です。" },
{ name: "退避(アーカイブ)データの復元", desc: "長期間経過してデータベースから退避された実行履歴ファイルも、画面上から復元して参照することが可能です。" },
{ name: "ステータス通知(ポップアップ)", desc: "ジョブの開始時や終了時に、画面上で担当者や指定したグループメンバーへポップアップ通知を行い、確実な状況把握を支援します。" }
]
},
{
id: "cat-7",
category: "7. 権限・システム管理",
items: [
{ name: "マルチテナント・複数システム管理", desc: "複数のグループ会社や異なるシステムを、1つのマネージャー環境内で論理的に分割・統合管理できます。" },
{ name: "詳細なロール(権限)管理", desc: "Admin、Entry、Monitoringなど5段階のロールで、ユーザーごとの編集・閲覧・運用操作の権限を厳密に制御します。" },
{ name: "ユーザーグループによるアクセス制御", desc: "ユーザーをグループ化し、グループごとに操作・閲覧可能なシステムやエージェント(実行ホスト)を限定できます。" },
{ name: "操作履歴(オーディットトレイル)", desc: "誰が、いつ、どのジョブに対して(再実行やHOLDなど)操作を行ったかを記録し、一覧確認や監査用データの出力が可能です。" },
{ name: "データ自動退避・削除(ハウスキーピング)", desc: "実行履歴や操作ログ、パフォーマンス情報を指定期間後に自動でアーカイブ(ファイル退避)または削除し、システムの肥大化を防ぎます。" },
{ name: "データベース自動バックアップ", desc: "指定した時刻に、システムの稼働を支えるデータベースのバックアップを自動的に取得し、可用性を高めます。" },
{ name: "エージェント一元管理・状態監視", desc: "ジョブを実行する各サーバの登録や、PING・ポート・ライセンスによる接続確認を画面上から一括で行えます。" },
{ name: "日付変更時刻のカスタマイズ", desc: "深夜のバッチ処理要件などに合わせて、システム上の日付が切り替わる時間を(例:朝05:00を翌日とする等)柔軟に変更できます。" },
{ name: "マネージャープロセス制御", desc: "GUI画面上から、システムプロセスや監視プロセスの稼働状況の確認、起動・停止、異常時の修復操作を容易に行えます。" },
{ name: "保守サポート用データ一括取得", desc: "万が一のトラブル時に、サポートへの解析依頼に必要なログデータやデータベースダンプファイルをボタン一つで一括取得できます。" }
]
}
];
// --- DOM Elements ---
const sidebarNav = document.getElementById('sidebar-nav');
const featuresContainer = document.getElementById('features-container');
// --- SVG Icon String ---
const checkIconSVG = `
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-primary mt-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
`;
// --- Render Functions ---
function buildSidebarLinks(container) {
container.innerHTML = '';
featuresData.forEach((category, index) => {
const link = document.createElement('a');
link.href = `#${category.id}`;
link.textContent = category.category;
link.className = `nav-link block px-3 py-2 text-sm rounded-md transition-colors duration-200 ${index === 0 ? 'bg-primary text-white font-medium shadow-sm' : 'text-gray-600 hover:bg-gray-100 hover:text-gray-900'}`;
link.dataset.targetId = category.id;
container.appendChild(link);
});
const backLink = document.createElement('a');
backLink.href = '/loadstar/';
backLink.className = 'block mt-3 px-3 py-2 text-sm rounded-md transition-colors duration-200 bg-secondary text-white hover:bg-gray-700 hover:text-white font-medium';
backLink.textContent = '→ 前ページに戻る';
container.appendChild(backLink);
}
// 1. Render Sidebar Navigation
function renderSidebar() {
buildSidebarLinks(sidebarNav);
}
// 2. Render Main Features List
function renderFeatures() {
featuresData.forEach(category => {
const section = document.createElement('section');
section.id = category.id;
section.className = "scroll-mt-24 feature-section";
const headerDiv = document.createElement('div');
headerDiv.className = "mb-6 pb-2 border-b-2 border-gray-200";
headerDiv.innerHTML = `<h2 class="text-2xl font-bold text-secondary">${category.category}`;
section.appendChild(headerDiv);
const gridDiv = document.createElement('div');
gridDiv.className = "grid grid-cols-1 md:grid-cols-2 gap-4 items-stretch";
category.items.forEach(item => {
const card = document.createElement('div');
card.className = "h-full bg-white p-6 rounded-lg border border-gray-100 shadow-sm hover:shadow-md transition-all duration-200";
card.innerHTML = `
<div class="flex gap-3 h-full">
<div class="flex-shrink-0">
${checkIconSVG}
</script>
${item.name}
${item.desc}
`;
gridDiv.appendChild(card);
});
section.appendChild(gridDiv);
featuresContainer.appendChild(section);
});
}
// --- Scroll Spy Logic ---
function handleScroll() {
const scrollPosition = window.scrollY + 200;
const sections = document.querySelectorAll('.feature-section');
const navLinks = document.querySelectorAll('.nav-link');
let currentActiveId = null;
sections.forEach(section => {
if (section.offsetTop <= scrollPosition && (section.offsetTop + section.offsetHeight) > scrollPosition) {
currentActiveId = section.id;
}
});
if (currentActiveId) {
navLinks.forEach(link => {
if (link.dataset.targetId === currentActiveId) {
link.classList.add('bg-primary', 'text-white', 'font-medium', 'shadow-sm');
link.classList.remove('text-gray-600', 'hover:bg-gray-100', 'hover:text-gray-900');
} else {
link.classList.remove('bg-primary', 'text-white', 'font-medium', 'shadow-sm');
link.classList.add('text-gray-600', 'hover:bg-gray-100', 'hover:text-gray-900');
}
});
}
}
// --- Initialization ---
let hasInitializedSidebar = false;
function initializeSidebarToggle() {
if (hasInitializedSidebar) {
return;
}
hasInitializedSidebar = true;
renderSidebar();
window.addEventListener('scroll', handleScroll);
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initializeSidebarToggle, { once: true });
} else {
initializeSidebarToggle();
}
<script type="text/javascript" id="" charset="">window.yjDataLayer = window.yjDataLayer || []; function ytag() { yjDataLayer.push(arguments) } ytag({ type: "ycl_cookie", config: { ycl_use_non_cookie_storage: !0 } });</script>