2020年06月

29

OpenShiftに代表されるコンテナ環境へのIBMストレージの対応

IBMの岡田です。前回の「全包囲網。。。最新 IBMストレージ 概要」はいかがでしたか?

今回は、今流行りのコンテナ環境とIBMのストレージがどのようにこれらの環境に対応しているのかに触れてみたいと思います。

 

コンテナって何?

ある調査によると、クラウドファーストを掲げて次々とクラウド環境に IT を移していくといった流れは世界中の ITワークロードの5分の1ほど移ったところで一段落していると言われています。今日では従来型IT環境、仮想化環境、プライベートクラウド環境などのオンプレミス環境と、複数から成るパブリッククラウド環境を上手く使い分ける時代に入ってきたという人もいます。

何れにせよ、今後の IT はこう言った環境の種類に依存することなく、適材適所かつ必要に応じていかなる環境でも同じようにアプリケーション開発や検証ができ、完成されたアプリケーションをどこでも同じように作動させることができ、場合によってはそれぞれの環境で連携して動くと言った技術が必要になってきます。

この要求に応えることができるのがコンテナ技術です。

図1. 仮想環境とコンテナの比較

 

コンテナのメリット

図2.コンテナを使うことのメリット

どうしてコンテナ技術を用いるとこれらの要求を解決することができるのでしょうか?

それはコンテナ技術を用いることで、動かすべき対象つまりアプリケーションと、動かすための環境つまりインフラストラクチャーを明確に分けることができ、前者は同じコンテナ基盤であればどこでも同じように動かすことができ、後者はどんなプラットフォームでもこのコンテナ基盤を使えばどこでも同じ動作環境をアプリケーションに提供することができるからです。
別の見方をすると、従来型IT環境では機能要件と非機能要件を分けて考えることが時には困難な場合もありましたが、コンテナ環境ではこれらを明確に分けることができるわけです(図3参照)。

図3. 従来型IT環境とコンテナ環境での考え方の違い

 

Red Hat OpenShift について

このようなコンテナですが、その方式はいくつか存在し、ここ数年いろいろな方々が実際に触っていくうちに自然と多くの人に使われるものが絞られてきました。
また、その周りを司る管理機能についてもやはり幾つかの方式からここに至ってある程度代表的なものに絞られてきました。いわゆるデファクトという呼び方をしたりするものですが、恐らく現在デファクトのコンテナ用オーケストレーターと言えるものは Kubernetes ではないでしょうか?

この Kubernetes についての詳しい話はネット上にも沢山出てくると思いますので、ここではこれ以上触れません。
ちなみに最近はよくこの Kubernetes を “K8s” と書くことがあります。この K8s の “8” は Kubernetes の頭の “K” と最後の “s” に挟まれた “ubernete” の8文字を表しています。
Ruby 関連で i18n が internationalization を指すのと同じことです。そもそも IT の根本は如何にシステムを使って楽するかという怠け者の発想ですのでこんな略し方もわかる気がしますね。
(以下このブログでは、”Kubernetes” を “K8s” と表記します。)

さて本題に戻ります。
K8s 環境は実際にちゃんと作ろうとすると、周辺機能を選びつつ構築していくことが必要となります。
またこれらは通常 OSS で組むこととなるため、ミッションクリティカルな環境への適用は、何かあった際のクイックなサポート等の面から非常に難しくなります。

Red Hat OpenShift は、K8s を中心に置き、必要な周辺モジュールを全てパッケージ化した上で評価を完了させてある商用パッケージです。
そのため、要らぬところに労力を割くことなく、正しい K8s環境を短時間で構築することができます。しかも、商用であるがゆえに保守等もちゃんと付いています。

図4.OpenShift について

IBM はこの OpenShift をベースに各用途向けにコンテナ化された IBMソフトウェアを搭載し、パッケージ化した6つの IBM Cloud Pak というソリューションを提供しています。
(※詳しくは「製品・ソリューション/ソフトウェア」内で紹介されている、各種 IBM Cloud Pak をご参照ください。)

 

コンテナ環境下でのストレージのあり方

コンテナのメリットは先程ご説明しましたが、その中でも特にポータビリティという点は十分に考えられたソリューションです。

しかし、果たしてそれだけで十分でしょうか?

アプリケーションの作りにもよりますが、普通にコンテナ内のストレージを使いアプリケーションを動かすと、コンテナが不要となり消し去った際データも一緒に消えてしまいます。
複数のコンテナを並列に動かすような作りの場合にはデータを連携する必要があるかもしれません。

図5.永続ストレージの必要性

つまり、コンテナから独立したデータの器が必要となります。
これが永続ストレージというものです(図5参照)。

最近の IT の記述書などでよく “PV” という文字を見かけます。それは “Persistent Volume” の略であり、永続ストレージはその PV を使って定義づけられます。

では、永続ストレージにはどのような接続形態があるのでしょうか?

 

永続ストレージの接続形態

図6で示す通り、永続ストレージにはいくつかの形態があります。ちなみに一番左は通常のコンテナでのストレージのあり方で、この方法だとコンテナと共にデータは消えることとなります。

図6. K8s 環境でのストレージのあり方

ノード内の永続ストレージという点では OpenShift においては Red Hat OpenShift Container Storage が使われます。こちらはノード依存性がありますので複数ノードにまたがって連携することはできません。

それに対し、外部にストレージを保つ方法があります。ソフトウェア・デファインド・ストレージかハードウェア製品かに関わらず、K8s ノード外にあるストレージを使うため、仮にノードごとに何らかの理由で停止するようなことがあってもデータはキープされます。
(※どのような製品が対応可能かは後ほど触れます。)

これらの接続方法は、実は K8s のバージョンによって変わってきます。
ここでは K8s を包含した OpenShift のバージョンでお話しします。

図7. OpenShift のバージョンによる接続方法の違い

 

CSI

CSI とは Container Storage Interface の略です。K8s のストレージはこうあるべきという考えに基づき、K8s とは独立にプロトコルを標準化したものです。

よって、CSI を使うことで K8s ユーザーはストレージのメーカーや製品を意識することなく同じに使うことができるようになります。逆に言うと各メーカーの優位性を出すことが難しくなります。
とは言え、IBMストレージとしては後述の通りハードウェア製品とソフトウェア・デファインド・ストレージ製品との連携でより便利に使うことが可能です。

 

IBM のストレージ対応

さて、ここまではどちらかと言うとコンテナ側のお話をしてきましたが、いよいよ IBM のストレージの対応についてお話していきましょう。

 

ブロックストレージ編

図8. IBM のブロックストレージの CSI 対応状況

IBM FlashSystem は、IBMストレージのブロックストレージにあたります。

FlashSystem はいち早く CSI にも対応しています。
もちろん FlashSystem 同様 IBM Spectrum Virtualize ファミリーのアプライアンス製品 SAN Volume Controller も、ソフトウェア・デファインド・ストレージとしてクラウド上にポーティング済みの IBM Spectrum Virtualize for Public Cloud も、対応済みです。

オンプレミスとパブリック・クラウド間でのデータ連携も永続ストレージ間で実施できるため、コンテナ上のアプリのポータビリティをオンプレミスとパブリック・クラウドの間でデータも含めて実現することができます。
実際、図2で示したコンテナのメリットは、ちゃんと永続ストレージを使ってどのプラットフォーム上でもできないと完璧にこなすことはできません。これが IBM のコンテナ対応のバリューです。

当然のことながら、フラグシップであるところの DS8000シリーズも CSI 対応済みです。

 

ファイルストレージ編

次にファイルストレージについて見てみましょう。

図9. IBM のファイルストレージの CSI 対応状況

IBMのファイルストレージと言えば、IBM Spectrum Scale というソフトウェア・デファインド・ストレージ製品ですが、アプライアンス製品として IBM Elastic Storage Server という製品があります。(第一回目のブログでもご紹介しましたね。)
この ESS についても CSI 対応済みということになります。

こちらも IBM Spectrum Scale の機能を使ってプラットフォーム間でデータを連携することができます(Active File Management 機能は後日別の回での解説を予定しています)。

IBM Spectrum Scale を用いると、ある面白いこともできます。
これも詳しくは後日解説しますが、少しだけお話すると、IBM Spectrum Scale は NAS、オブジェクトストレージを含むマルチプロトコル対応です。CSI で静的プロビジョニングを用いてコンテナからアクセスできるようにすると、既存で NAS 等で使っているボリュームを見せることも可能となります。
さらに IBM Spectrum Scale は Unified Access という機能で同じファイルを NAS としてもオブジェクト・ストレージとしても共有できる機能があるため、コンテナでも同一ファイルを使うことが可能となり、実質的に従来型IT とコンテナとの間でもデータが連携できることになります。

従来型のシステムとコンテナのアプリ間でデータ連携できることのメリットは、まさに最初に述べた環境を用途などで使い分ける現在の IT環境には無くてはならない機能です。
これも IBMストレージの大きなメリットです。

ハードウェア製品、アプライアンス製品、ソフトウェア製品を通じてブロックストレージ、ファイルストレージ共に IBM はコンテナ対応済みであると言えます。

 

オブジェクト・ストレージ編

オブジェクト・ストレージは基本的に RESTful API による HTTP 接続が使われます。
よってコンテナに限ったことではありませんが、ブロックやファイルストレージとは異なり、独自ドライバや CSI を介する必要はなく、アプリケーションから直接 I/O することが可能です。

IBM は IBM Cloud Object Storage というソフトウェア・デファインド・ストレージを扱っています。
また IBM Spectrum Scale もオブジェクト・ストレージとして使用可能です。

オブジェクト・ストレージについては AI&Bigデータの回で詳しくお話することにしましょう。

 

ソフトウェア・デファインド・ストレージのもう一つの対応

図10. IBM Storage Suite for IBM Cloud Paks

現在取り扱っているコンテナ対応済みソフトウェア・デファインド・ストレージを取りまとめて、IBM Storage Suite for IBM Cloud Paks という名前で IBM Cloud Paks 向けに提供を始めました。

ここには IBM の前述のソフトウェア・デファインド・ストレージ製品3つと、メタデータ、タグマネージメントといった機能を持った IBM Spectrum Discover、それに Red Hat OpenShift でネイティブなRed Hat OpenShift Container Storage と根強いファンの多い Red Hat Ceph Storage を加えた6つをワンパッケージにしました。

この Suite 製品の面白いところは、OCS(Red Hat OpenShift Container Storage)の契約 VPC数(契約対象の仮想プロセッサコア数)に応じた容量分を自由に何種類でも組合わせて使うことができるというところです(もちろん単体で全容量使うのもありです)。

この手のコンテナ環境・クラウド環境でストレージを使うことは、はじめは何をどのくらい使うべきかわかっていない状況だったりするものです。特にアジャイル、アジャイルと言われる昨今、「とにかくやってみよう」という傾向が強いのも事実です。
そんな時にこのパッケージを使うと、容量を超えない限りどのストレージをいくら使っても自由ですので、使ってみて決めていくということができます。

まさに現在のクラウド時代にふさわしいストレージパッケージと言えるでしょう。

 

今回のまとめ

ここまで見てきた通り、IBM のストレージ製品は2020年7月現在取り扱っているものとしてはブロック、ファイル、オブジェクト・ストレージであり、これらすべてコンテナ対応が完了しています。

図11. IBMストレージの OpenShift 対応状況

Red Hat OpenShift あるいは各種 IBM Cloud Pak においては、接続性も含めて検証済みであり安全にお使いいただけます。

もしコンテナ環境をご検討中であれば、ハードウェアもクラウド上のソフトウェア・デファインド・ストレージもあり上下のデータ連携が可能な IBM のストレージ製品を、ぜひご活用ください!

 

お読みいただきまして、ありがとうございます。
次回はハイブリッド・クラウド、マルチ・クラウドに適切なストレージについてお話する予定です。お楽しみに!

 

 


この記事に関するお問い合わせ

エヌアイシー・パートナーズ株式会社
企画本部 事業企画部

この記事に関するお問い合せは以下のボタンよりお願いいたします。

 


関連情報

 

 

その他の記事

2026年02月06日

【てくさぽBLOG】IBM watsonx OrchestrateでAIエージェント開発してみた(Part2)

公開日:2026-02-06 こんにちは。てくさぽBLOGメンバーの高村です。 前回の記事「【てくさぽBLOG】IBM watsonx OrchestrateでAIエージェント開発してみた(Part1)」では、昨年6月のアップデート後のwatsonx OrchestrateのUIを用いてサンプルエージェントを開発し、Salesforceから顧客情報および在庫情報を取得するところまでをご紹介しました。 Part2(本記事)では、生成AIツールとメールツールを使ったメールの作成・送信を実装し、AIエージェントの動作確認をデモ動画でご紹介いたします。 目次 サンプルエージェントのシナリオ サンプルエージェントの開発 さいごに お問い合わせ サンプルエージェントのシナリオ Part2の内容に入る前に、サンプルエージェントのシナリオをあらためてご紹介します。 サンプルエージェントのシナリオは、企画担当者が在庫商品を参照し、在庫情報に基づいて顧客へキャンペーンメールを送信する作業を想定しています。通常は担当者がデータベースで在庫を目視確認して対象商品を選定し、SFAで送信対象者を抽出、メール文面を作成してメールツールで送信するなど、複数システムをまたいで人手で作業するため、煩雑で時間と労力を要します。 watsonx Orchestrateを導入すれば、AIエージェントが在庫・顧客情報を取得し、在庫の多い商品のキャンペーン文面を生成、メールの作成・送信までを一気通貫で実行します。これにより、担当者の作業負荷軽減とリードタイム短縮、ミスの削減が期待できます。 Part1では、AIエージェントが「Salesforceからの顧客情報取得」と「在庫情報の取得」を実行するところまでをご紹介しました。Part2では、図のピンクで囲った部分である「生成AIによるキャンペーンメールのドラフト作成」と「メールツールによる送信」を開発します。最後に、Part1で作成した機能を含め、全体を通したAIエージェントのデモ動画をご紹介します。 サンプルエージェントの開発 生成AIプロンプトとメール作成・送信をAgentic workflowで実装する それでは、Part1の続きとしてエージェント開発を進めます。ここでは、Agentic workflow機能を使用します。 Agentic workflowとは複数ツールの組み合わせや生成AIプロンプト処理、ユーザからの入出力フォームなどフロー形式でカスタムツールとして作成することができます。今回は生成AIプロンプトを使用して商品のキャンペンーンメールを作成し、メールツールからメール作成・送信を行うフローを作成します。 watsonx Orchestrateにログインして、メニューバーのBuildからPart1で作成したSales agentをクリックして開きます。 エージェント開発画面が開きます。2026年1月のアップデートによりエージェントが使用するモデルのデフォルトがGPT-OSS 120B-OpenAI(via Groq)になりました。llama-3-2-90b-vision-instruct、llama-3-405b-instructは2026年3月末に withdrawalとなります。 Toolsetまでスクロールし、Add tool +をクリックします。 以下画面が表示されるのでAgentic workflowをクリックします。 任意のworkflow名を入力してStart buildingをクリックします。 下記の画面が表示されます。左のボックスには追加可能なアクティビティとツールの一覧が表示されます。画面中央のフロー図にツール、アクティビティを構成します。 左上にあるEdit detailsをクリックします。 Parametersタブをクリックし、フローのインプットとアウトプットの型を定義します。今回はstringでName,Descriptionは画面の様に設定しました。設定したらDoneをクリックします。 下記画面に戻るので、左のボックスにあるGenerative promptをクリックしてフロー図の中央に追加します。 プロプト設定画面が表示されます。左のプロンプトへのインプットではユーザが指定する商品名(テキスト)を変数として設定します。右のシステムプロンプトでは全体の会話の方針やトーンを入力し、ユーザプロンプトでは具体的な指示を指定します。また、プロンプトで使用するLLMはリストから選択でき、ここでは「llama-3-3-70b-instruct」を指定しています。 Add exampleタブでは例を追加することができます。以下の通り二つ例を追加しました。 Adjust LLM settingsタブでは最大/最小トークン数などを設定することができます。 Generate Previewをクリックすると、生成結果を確認できます。確認後は右上の×を押して保存します。これで、ユーザー指定のテキストからキャンペーンメールを生成するプロンプトが完成しました。 次に、ユーザーにキャンペーンメールの内容を確認してもらえるよう表示を構成します。左のボックスからUser activityを選び、Generative promptの下に挿入します。 Add +をクリックし、Collect from userからFormをクリックします。今回はFormを利用しますが、このほかにも日付やファイルアップロードなどのアクティビティを構成することができます。 左上の鉛筆マークをクリックして任意のアクティビティ名に変更します。次にAdd field + からCollect from userを選択し、Textをクリックします。 Requiredをオンにし、Input typeはMulti lineを選択します。さらに、BehaviorのInitial valueを有効化し、値にGenerative promptの出力変数を指定します。 左の「mail body」ボックスを選択し、ユーザー向けのインストラクションを設定します。Instructionsをオンにして、下記のガイドを入力し、Cancel buttonもオンにします。設定後は右上の×をクリックして保存します。 フロー図が下記画面の様に表示されます。 次に、件名をユーザーに入力してもらうフォームを作成します。下記の画面のように、User activity1の下にもう一つUser activityを挿入します。 Add +をクリックし、Collect from userからFormをクリックします。下記画面が表示されるので任意のフォーム名を入力し、Add field + からCollect from userを選択し、Textをクリックします。 任意のLabel名を入力し、Requiredをオン、Input typeはSingle lineを選択します。 左の「mail subject」ボックスを選択し、ユーザー向けインストラクションを設定します。Instructionsをオンにして下記のガイドを入力し、Cancel buttonもオンにします。設定後は右上の×をクリックして保存します。 フロー図は下記の画面のとおりです。 最後にメールを送信するためのツールを追加します。今回は、カスタム作成した Brevoを用いたメール送信ツールを使用します。User activity2の下に左ボックスのToolタブからsend_mail_brevoのツール挿入します。 追加したsend_mail_brevoノードをクリックしてInputsを設定します。contentはUser activity1の出力変数、subjectはUser activity2の出力変数を指定します。to_addressはAuto-map設定にして右上の✖をクリックして保存します。 下記の画面の様にフローが作成できました!Doneをクリックしてワークフローを保存します。 Agent builder画面に戻り、Toolsetまでスクロールすると作成したAgentic workflowが追加されています。以上でAgentic workflowの作成は完了です。 Behaviorを設定する Behaviorまでスクロールします。InstructionsにPart1作成したSalesforceのツール、Knowledge、本記事で作成したAgentic workflowをエージェントがどのように利用するか定義します。エージェントの役割と動作の流れを定義し、プレビューで挙動を確認しながら内容を繰り返し修正しました。 サンプルエージェントを使ってみる それでは、作成したエージェントを使ってみます!エージェントの動きは下記動画をご覧ください。 動画では、キャンペーンメールを送付する対象顧客情報をSalesforceから取得し、コンタクトリストを確認。その後、商品の在庫状況を参照して在庫の多い商品に合わせたキャンペーンメールを作成し、送信します。 動画の長さの関係上、二本に分けて紹介します。 1本目:Salesforceから顧客情報を取得し、コンタクトリストを確認 2本目:在庫情報を確認のうえ、在庫の多い商品のキャンペーンメールを作成・送信 2本目の動画がPart2で開発した内容になります。商品と顧客名を指定すると、AIが商品情報をもとにキャンペーンメールを生成し、顧客名に紐づくメールアドレスを自動入力して送信できます。Agentic Workflowで追加したUser Activityを使うことで、生成したメール本文の確認・修正・追記が可能です。このように、定型の流れや承認プロセスが必要な場合は、フロー化することでより確実に処理を実行できます。 さいごに Part1・Part2の2回にわたってサンプルエージェントの開発をご紹介しました。2025年6月のアップデートでUIや機能が刷新され、当初は戸惑いもありましたが、ご覧のとおりAIが自動で入力や抽出を行うため、よりエージェンティックに動作するエージェントを開発できます。 今回最も苦労したのは、Behaviorの調整です。わずかな文言の違いで動作が変わるため、確認と修正を繰り返してチューニングしました。今回のように1つのエージェントに複数ツールを組み込む場合は、Behavior設定が複雑化します。回避策として、機能ごとにエージェントを分割し、親エージェントから呼び出す構成も可能ですのでご検討ください。 事前定義ツールとしてはSalesforceのツールを2つ利用しました。要件に合うツールがあれば、認証情報を設定するだけですぐに利用できます。ただし多くのツールは基本機能が中心となるため、より細かな動作が必要であればカスタムツールを開発してご利用いただく必要があります。カスタムツール開発にはこちらの「【てくさぽBLOG】IBM watsonx OrchestrateのADKを使ってみた」でご紹介したADKという開発ツールキットが提供されていますので、是非ご活用ください。 また、コード開発に心強い味方がございます。「【てくさぽBLOG】IBM Bobで市民開発に挑戦」でご紹介したIBM Bobはwatsonx Orchestrateのツール、エージェントのコード作成やSaaS環境へのインポートなどを支援してくれます。注目度も高いと思いますので、こちらは改めて別の機会にご紹介できればと思います。 お問い合わせ この記事に関するご質問は以下の宛先までご連絡ください。 エヌアイシー・パートナーズ株式会社 技術企画本部 E-mail:nicp_support@NIandC.co.jp .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:26px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; }

2026年01月22日

【てくさぽBLOG】IBM Bobで市民開発に挑戦

公開日:2026-01-22 こんにちは。てくさぽBLOGメンバー村上です。 2026年も、気づけばもう1月が駆け抜けていきそうですね。 さて今回は「IBM Bob」検証シリーズPart2をお届けします(Part1 はこちら)。 前回はBobの主要機能のひとつである「Explain機能(コード解析)」をご紹介しました。 今回はコード生成を行う機能「Generate機能」に注目し、アプリケーションの開発に挑戦した内容をお届けします。 目次 はじめに IBM Bob のGenerate機能で市民開発を試してみた Generate機能の他社製品との比較 さいごに お問い合わせ はじめに 現在、私たちのチームではIBM BobのPreview版(Early Access版)を利用し、Generate機能によってBobがどんなコード生成ができるのか、どこまでの領域をカバーできるのか、そして実際の業務がどれほど効率化されるのか、その実力と効果を検証しています。 これまでに実施したGenerate機能の検証例 ・IBM Bobでwatsonx Orchestrate(wxO)のAIエージェントを作成 ・Bobで生成したマークダウン形式のファイルをExcelへ出力するツールの作成 ・チーム内で利用している勤怠確認用のスプレッドシートを操作性の高い「出退勤管理アプリ」にする開発 今回はこの中から、他社製品との比較が行いやすく、IBM Bob ならではの特徴をより分かりやすく伝えられると考えた「出退勤管理アプリ」に焦点を当ててご紹介します。 IBM Bob がどこまで意図通りの開発ができるか、また、他製品と比較した内容も合わせてお届けします。 IBM Bob のGenerate機能で市民開発を試してみた 「出退勤管理アプリ」作成の過程や成果としてご紹介する内容は下記です。 プロンプトの強化:曖昧な指示を具体的に補完 チャットモードを利用した対話型開発 完成した成果物の紹介 プロンプトの強化による成果物の比較 1. プロンプトの強化:曖昧な指示を具体的に補完 まず、「出退勤管理アプリ」の完成イメージをBobに伝えます。 Bobのチャット画面に、下記のように要件を箇条書きで記載し、要件を書き終わったら「プロンプト強化機能(Enhance Prompt)」ボタンを押下しプロンプトを強化しました(プロンプトの強化についてはPart1のブログでも記載しています)。 上記のプロンプトが下記のプロンプトに強化されました。 チーム向け勤怠管理Webアプリケーションを以下の仕様で開発してください。   【基本機能】 メンバー全員が互いの勤怠状況を閲覧可能なチーム勤怠管理システムを構築します。 各メンバーは個人アカウントでログインし、自分の勤怠データのみ編集権限を持ち、他メンバーのデータは閲覧のみ可能とします。 【画面構成】 1. 当日勤怠一覧画面:本日の全メンバーの勤怠状況を一画面で一覧表示し、各メンバーの勤務場所、勤怠種別、勤務開始・終了時刻、備考を即座に把握できるダッシュボード形式とします 2. 個人別勤怠カレンダー画面:メンバーごとに過去の勤怠実績と未来の勤怠予定を時系列で確認・管理できるページを用意し、日付範囲を指定して表示できるようにします 【勤怠データ入力機能】 実績入力:毎日の勤務開始時と勤務終了時に手動で時刻を入力する機能を実装します。入力フォームはシンプルで素早く操作できるUIとします 予定入力:複数日分の勤怠予定を一括登録できる機能を実装し、登録後もいつでも個別または一括で変更・削除が可能とします 【勤務場所の選択肢】 - テレワーク - 聖路加オフィス - 外出 - その他 各勤怠記録に対してドロップダウンまたはラジオボタンで選択できるようにします 【勤怠種別の選択肢】 - 休(終日休暇) - AM休(午前休) - PM休(午後休) - 時間休 - FLEX(フレックス勤務) 勤務場所と同様に選択式で入力できるようにします 【備考欄】 各勤怠記録に自由記述可能な備考欄を設け、特記事項や補足情報を入力できるようにします 【認証・権限管理】 初期メンバー5名分のアカウントを作成し、各メンバーは個人名でログインします。 パスワード設定機能を実装し、初回ログイン時または設定画面から任意のパスワードに変更可能とします。編集権限は自分の勤怠データに限定し、他メンバーのデータは読み取り専用とします 【技術要件】 レスポンシブデザインでPCとモバイル端末の両方で快適に操作できるようにし、 データの永続化にはデータベースを使用してください。モダンなWebフレームワークを使用し、保守性と拡張性の高いコード構造で実装してください 「プロンプト強化機能」を利用することで、説明が不足している部分をBobが具体的に補完し、精度の高いプロンプトへとブラッシュアップしてくれます。 これにより、要件の意図を正しく反映させるための具体的な指示が整いました。 補足ですが、私は拡張機能として「Japanese Language Pack for Visual Studio Code」を導入し、IDEを日本語化して利用しています。 (拡張機能の適用方法はPart1のブログにしています) 2. チャットモードを利用した対話型開発 次に、IBM Bob のチャットモードを試してみました。今回利用したのは「Planモード」です。 Planモードを選択した理由は、まずBobが計画立案をしてくれ、その計画を人間側が理解・承認してから開発を進められると思ったためです。 Planモードを利用して先ほど強化したプロンプトをチャット画面から流すと、Bobが下記のように指示が漏れている部分を確認してくれました。 技術スタックの確認: このWebアプリケーションの技術スタックについて、どのような構成を希望されますか? 詳細な設定確認: 初期メンバー5名の名前を教えてください。ログイン時に使用するユーザー名として設定します。 このように、Bobが具体的な選択肢やデータの入力を促してくれるため、抜け漏れのない状態で計画を立て、実装へと進めることができます。 全ての要件が明確になると、Todoリストが作成されました。 このTodoリストを承認した後は、Bobがリストを上から順番に自動で進めてくれます。 プログラムを作成する工程まで行くと「Codeモードに切り替えます」と宣言があり、チャットモードがPlanモードからCodeモードに自動で切り替わり、実装フェーズへ移行しました。 この流れは非常にスムーズで、Bob の優秀さに感心しました。 ちなみに、私のPCにはNode.jsがインストールされていなかったのですが ・Node.jsのダウンロード、インストール方法 ・コマンド実行がうまくいかなかったときのトラブル対応 は、全てBobが教えてくれました。 教えてもらう相手が人間だと、ある程度調べてから聞かないと迷惑だよなぁ・・と思ってしまうような疑問でも、Bobになら遠慮せず聞くことができるので、スピードを落とさずに作業を進めることができました。 3. 完成した成果物の紹介 こうしたプロセスを経て完成した「出退勤管理アプリ」がこちらです。 市民開発への挑戦を決めた当初は、「どのような指示を出せばいいのか」と少し身構えていました。しかし、実際には細かな指示に悩む必要はなく、Bobがプロンプト強化機能やチャットモードを通じて、使い勝手の良いアプリケーションを自律的に構築してくれました。 完成した「出退勤管理アプリ」には、ユーザー別のログイン機能だけでなく、パスワード変更やチームメンバーが各自のPCからアクセスできる外部接続の仕様まで標準的に実装されており、その完成度の高さには正直驚かされました。 4. プロンプトの強化による成果物の比較 「1.プロンプトの強化」にて、プロンプトを強化してからアプリケーションを作成する方法を記載しましたが、試しに、プロンプトは強化せずに「出退勤管理アプリ」を作成してみました。 成果物にどのような違いが現れたかをご紹介します。 プロンプト強化前 指示が曖昧だった機能は実装されなかった プロンプト強化後 イメージしていた機能が全て実装された プロンプトを強化し指示の解像度を上げることが、そのままアプリケーションの完成度に直結することを実感した検証となりました。 Generate機能の他社製品との比較 さて、今回の検証では「他社製品ではどのような結果になるか」も合わせて検証しました。 正確に比較するため、他社製品もBobと全く同じプロンプトを用いて検証を行っています。 両者の操作感やアウトプットを細かい観点で比較し、Bobの特徴としてお伝えしたい部分を下記の表にまとめました。 比較項目 IBM Bob 他社製品 ドキュメント生成 基盤~運用に関するドキュメントを作成 ・基本設計書 ・詳細設計書(実装計画書) ・使い方ガイド(README) ・開発設計書 ・導入手順書(SETUP GUIDE) ・障害対応手順書(作業中のトラブル対応) 開発視点のドキュメントを作成 ・要件定義書 ・基本設計書 ・詳細設計書(実装計画書)   アーキテクチャのレベル 本番運用に耐えうる可用性・信頼性を考慮した構成 (フロントエンド・バックエンドの分離) すぐに動く構成 (フロントエンド・バックエンドを分離しない構成) デプロイの容易性 〇 ・プロンプト強化により不足情報が補完 ・選択肢(推奨案)が提示され対話を通じてステップバイステップで進められる △ ・プロンプト補完の機能は見当たらない ・選択肢が提示されることはなかった 今回の比較検証を通して、IBM Bobの自律型エージェントとしての高い実力を実感しました。 実運用に耐えうる構成を自動で選択してくれる点はとても心強いです。また、基盤から運用までを網羅する圧倒的なドキュメント生成力や、対話を通じて迷わず進められるデプロイ支援により、開発のハードルが下がるだけでなく、実装の透明性も高いレベルで担保されています。 作った後もチームや組織で説明・維持ができる、という安心感こそが、IBM Bobが組織利用を見据えたエンタープライズ向けの製品であると言える大きな理由なのだと感じました。 さいごに Part2となる今回のブログは、IBM Bobの「Generate機能」を使った市民開発をご紹介しました。 実際にBobと一緒にアプリケーションを作ってみて、やっぱりBobは頼りになる相棒でした。 (最近、Bobを実在する人のように「Bobさん」と呼んでしまうことがあります) 私は開発業務に深く携わった経験はほとんどありませんが、今回の検証を通じて、自分の手で形にできるワクワク感を肌で感じることができました。 これからも、この頼もしい相棒と一緒に業務の新しい形を探り、その可能性をパートナーの皆さまにもお届けしていきたいと思います。 お問い合わせ エヌアイシー・パートナーズ株式会社 技術企画本部 E-Mail:nicp_support@NIandC.co.jp .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:26px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; }

2025年12月25日

“AI を学習用ではなく事業の現場に馴染ませる”
本格的なAI時代に誕生したIBM Power11の覚悟とは?

公開日:2025-12-25 本格的なAI時代の到来で、企業にとってIT基盤の存在感はこれまで以上に重みを増しています。IBM Power11は、そうした時代の要請に応えるべく誕生した真のエンタープライズ・サーバーです。堅牢な信頼性と高い処理性能に加え、外付けカードIBM Spyre Acceleratorによって、地に足がついたAIワークロードをすぐに実装できる実用性を備えるに至っています。既に先行ユーザーは、大きな業務効率化の効果を体感しており、このサーバーは単なるハードウェアを超えて、次世代の標準基盤となる期待を集めています。 今回は、日本アイ・ビー・エム(以下、IBM)テクノロジー事業本部 Powerテクニカル・セールス部長 釘井 睦和 氏をお迎えし、AI時代をリードするべくして誕生したIBM Power11の“覚悟”について伺いました。 出席者 ゲスト 日本アイ・ビー・エム株式会社テクノロジー事業本部Powerテクニカル・セールス部長釘井 睦和 氏 インタビュアー エヌアイシー・パートナーズ株式会社技術企画本部テクニカル・サポート部部長 広橋 稔 本格的なAI時代の到来で、さらに重みの増すIT基盤 広橋: 経営とITが不可分となった今日、企業のお客様が直面している課題としてどのようなものがあると考えておられますか。 釘井氏: 本格的にAIの時代が到来したことが非常に大きいと思います。企業競争力の維持を図る上で、もはや、AI活用を抜きに戦略を立てられないというところまで来ています。実践段階に入ってきたこともあり、アナリスト機関IDCによれば、これからはAIエージェントが自らアプリケーションを書くようになると予測されています。その結果、アプリケーションの数は爆発的に増加し、今後10億もの新しいアプリケーションが出現すると予測され、そのうち3分の1はAIによって開発される見込みです。こうなってくると、アプリケーションを支えるインフラは、これまでにないスピードと規模でアプリケーション増加への対応と高い可用性を求められます。計画停止すら許されないミッションクリティカルな業務が増えていくことでしょう。そのような世界では、油断をするとシステムのサイロ化やデータ爆発も起きやすくなるため、その対策も必要です。 その一方で、ランサムウェア攻撃を筆頭に、セキュリティリスクも劇的に高まっており、対策強化も喫緊の課題です。だからといって、ITばかりに予算を使うわけにはいきませんから、そこはコスト最適化を図る目線も要求されます。さらに、少子高齢化社会の進行で、IT人材も確保しづらい状況が続いているため、より少ない人員でより多くのことをカバーできるかといった観点での運用効率化も恒常的なテーマとなっています。つまり、今日の企業が対峙している課題は文字どおり山積しているといえます。 広橋: 確かに、日ごろパートナー企業やエンドユーザー企業のお悩みを聞く中で、こうしたお話はよく伺います。特にAI活用については、意欲を持ちつつも、プレッシャーも感じておられるようです。 AI時代のニーズに応える真のエンタープライズ・サーバー 釘井氏: こうした中、今年登場したIBM Power11は、本格的なAI時代のニーズに応える、真のエンタープライズ・サーバーとして位置づけられています。このサーバーは、単なるハードウェアを超えたまさに“企業の中枢を支える基盤”として設計されており、Powerとして従来から定評のある堅牢性と可用性をさらに進化させつつ、計画停止をほぼ不要とする自律的な運用機能や強靭なセキュリティを標準装備しました。また、最新のDDR5メモリと強化されたI/Oアーキテクチャにより、高負荷のトランザクション処理や大規模データ解析なども余裕を持ってこなすとともに、AI推論も得意とします。IBM Power11は、企業がAI時代に向けて加速できるようIBMが考え抜いたフルスタックのイノベーションです。 広橋: IBM Power11を特徴づけるキーワードをいくつか挙げていただけますか。 釘井氏: 一つは、「0」(ゼロ)です。これは、エンドツーエンドの自動化を実現し、計画的なダウンタイムを0にする、つまり、無停止運転を可能にすることを意味します。 従来はメンテナンスウィンドウを設けて実施していたファームウェア更新、I/Oアダプタ更新、仮想化ソフトウェア更新などを、IBM Power 11ではAutomated Platform Maintenance(APM、プラットフォーム自動保守)機能として、管理コンソールであるIBM Hardware Management Console(HMC)からワンクリックまたは準自動で実行可能です。環境をチェックする更新前準備、パッチ配布、ワークロードの退避・復帰を一連のフローで自動化できるため、停止せずに更新できるというわけです。 また、運用データを横断的に集約し、watsonxですぐに実行できる提案と自動化を結びつける、アプリケーション運用向けのAIオートメーション基盤 IBM Concertがあります。Concert for Powerでは、Powerインフラの脆弱性を検出して、現行バージョンに照らして優先度をAI算定、その後に推奨手順を提示し、必要に応じて更新をゼロ計画停止で実行するところまで担います。ここでいう実行とは、HMC/PowerVMが担う処理をConcertが呼び出して一気通貫に自動実行することを意味しています。 広橋: サーバー停止は業務に支障を及ぼしかねず、利用部門や経営層からの圧力も大きいため、情報システム部門としてはなるべく回避したい運用ですから、安定して動き続けてくれるならそれに越したことはないですね。 釘井氏: はい。もう1つのキーワードは「

2025年12月25日

VMware問題で生じる保守のすき間に、 IBM第三者保守という「つなぎ保守」を

公開日:2025-12-25 ブロードコムによるVMware買収により、多くのユーザー企業が大幅なコスト増か、保守なしでのリスク運用か、という究極の選択を迫られています。そういった企業に対して、日本アイビーエム(以下、IBM)では、「VMware第三者保守サポートサービス」を提供しています。これは、IBMがグローバルレベルでVMwareテクノロジーの知見を収集できる特性を活かして、高い解決率で保守サービスを提供するというもの。 今回は、サービス提供部門の方々をお招きし、このサービスの詳細とメリットとともに、なぜVMware第三者保守を手がけるのかについて深掘りしていきます。 出席者 ゲスト 日本アイ・ビー・エム株式会社テクノロジー事業本部テクノロジー・サービス事業第三営業部 部長 井上 亜矢子 氏 日本アイ・ビー・エム株式会社テクノロジー事業本部テクノロジー・サービス事業R&E第一営業部 山谷 怜 氏 日本アイ・ビー・エム株式会社テクノロジー事業本部テクノロジー・サービス事業R&E第一営業部 山口 英俊 氏 インタビュアー エヌアイシー・パートナーズ株式会社営業本部カスタマーサービス営業部第2グループグループ長 平嶋 英良 突然訪れる保守なしからのリスクをカバーするサービス 平嶋: ブロードコムによるVMware買収、いわゆる“VMware問題”では、多くユーザー企業の間で激震が走りました。大きなインフラコストの上昇を引き起こす要因となったからです。そうした中でIBMは「VMware第三者保守サポートサービス」を提供されている背景をお聞かせください。 山口氏: 買収によって、ライセンスとサポートの考え方が大きく変わりました。従来、ライセンスに関しては、「Perpetual 永続ライセンス」といって、一度購入すれば、期限無制限で永続的に使用する権利が得られました。サポートは、この永続ライセンスに対して有期限で別途契約する形態となっていました。しかし、サブスクリプション・ライセンスへと変更となり、ライセンスは有期のライセンスを新たに買い直すとともに、サポートもライセンスに同梱されることとなりました。したがって、サポートは、ライセンスと同じ期間の権利を買うことが求められることになりました。(図1)。 図1 ”仮想マシンのみ”からコンテナ利用環境へのモダナイゼーション これは、お客様にとって2つのことを意味します。サブスクリプション・ライセンスに移行すればインフラコストの大幅な上昇になり、かといって永続ライセンスにとどまれば、従来のサポート契約期間満了時からサポートが受けられなくなる。つまり、サポートにすき間が生じるリスクが生じます。障害が起きても情報システム部門で対応するという方法もありますが、VMware環境の運用には専門的な知識が必要で、現実的とは言えません。 平嶋: 多くのユーザー企業がジレンマを抱えておられるようです。 山口氏: そうなのです。そこでIBMは、こうした保守なしのリスク運用が生じないように、当社の実績ある第三者保守サポートの枠組みを通じて、経験豊富な技術者チームによるVMware 環境の安定稼働の支援と、コスト最適化効果を提供することを考えました。それが、「VMware第三者保守サポートサービス」です。 このサービスは、これを機に別のインフラ環境へマイグレーションしたり、モダナイゼーションしようと考えるお客様にも有効です。このようなプロジェクトは通常、多くの時間を要します。その間に従来のサポート契約満了日が来てしまうことも考えられ、リスクを避けようとすると、この日に合わせて急いで移行するか、いったんサブスクリプション・ライセンスを受け入れながら、新システムプロジェクトを進めるということになり、新旧インフラコストを負担しなければなりません。しかし、「VMware第三者保守サポートサービス」を利用すれば、既存システムのサポートはこちらでカバーできるため、拙速に陥ることなく、余裕を持ってマイグレーションやモダナイゼーションに取り組むことができます。 井上氏: また、サブスクリプション・ライセンスに移行したけれど、稼働しているアプリケーションの事情で、VMware の古いバージョンを使い続けているという場合もあるかと思います。メーカーではサポートするバージョンが限られているため、サポート契約を結んでいても、それがあまり効果を発揮できないケースがあります。「VMware第三者保守サポートサービス」なら、比較的古いバージョンでもサポートを提供することが可能ですので、こちらを追加でお買い求めいただいてご活用いただく、というパターンもあります。 平嶋: なるほど。様々な状況で、コストを含めて、お客様に安心を提供できるサービスなのですね。 「VMware第三者保守サポートサービス」とは 平嶋: あらためてサービスの詳細をご紹介ください。 井上氏: サービス名称にもある通り、この枠組みではIBMはあくまで第三者であり、メーカーではないため、パッチの提供は行いません。何か事象が起こったときは、お客様からログなどをいただいて、「この設定をこのように変えてください。そうすればこの事象は回避できるはずです」と、事象の回避策を提案します。なぜこのようなことができるかというと、IBMにはグローバルレベルでVMwareのスキル、ノウハウに精通した協業パートナーが存在し、また、様々なお客様において提供したサポートの実績も蓄積しているからです。当社の技術チームがそこから事例やデータの提供を受けながら技術調査を行い、的確かつ最適な回答を追求して問題対応に当たります。ただ、あくまでも立場は第三者であるため、このサービスはベストエフォートでのサポートとなります。しかし、IBMでは、Oracleを含め第三者保守では豊富な実績を誇っており、回避策の提供で解決しない事象はほぼありません。 平嶋: お客様からはどのように相談を受けるのですか。 井上氏: ご相談は24時間365日Web上で受け付けています。対応に当たるのは平日9時から17時になります。 平嶋: IBM製品をお使いのお客様ですと、「システム技術支援サービス」 (System Technical Support Services、以下STSS)をご利用になっているケースもあるかと思いますが、その場合はどうなるのでしょうか。 井上氏: その場合は「IBM サポート・コミュニティ」にご連絡いただければ、STSS側で「これはVMwareの問題だね」と認識して、IBM内部でVMware担当と連絡を取り合って、受付/対応を行います。お客様は窓口を使い分ける必要なく、ワンストップサービスのイメージでご利用いただけます。 図2 IBM VMware第三者保守サポートサービスご提供体制 平嶋: 契約条件などはあるのでしょうか。 井上氏: ライセンス数は“20”から、契約期間は3カ月以上、3年以下とさせていただいています。ライセンス数“20”というのは、日本のVMwareユーザーのお客様を調査したところ、大体平均でこのぐらいの数はお持ちであることがわかり、“20”に設定させていただきました。 平嶋: 契約期間を3カ月以上、3年以下に設定されているのはなぜですか。お客様によっては、もっと長く保守してほしいというご要望があるような気がします。 井上氏: 3カ月以上というのは採算上の問題です。長い分には、5年でも、10年でも保守をお引き受けすることはサービス設計上可能ではあるのですが、あえて3年以下とさせていただいたのには、ここにIBMとしての「思い」があるのです。 次を見据えたシステム移行のための「つなぎ保守」 山谷氏: その「思い」というのは、この第三者保守について、次を見据えたシステム移行を考える上で一つの手段とする、「つなぎ保守」として活用いただきたいというものです。技術革新の著しいITの世界にあって、一つのインフラを長く使い続けるのはあまり健全ではないと私たちは考えています。そのため、あえて「VMware第三者保守サポートサービス」を恒久的に使っていただくことが目的とならないようにと考えています。そこが、他社さんの第三者保守との非常に大きな違いです。お客様にとって重要なのは、この先どのようなインフラが最もふさわしいかを考えることです。一緒に知恵を絞らせていただいてお手伝いしながら、実現するまで既存の環境をお守りする、というのが私たちのスタンスなのです。これは、IBMにはハードウェアでもソフトウェアでも様々な部門があり、多様な支援が可能だからということもあります。 平嶋: VMwareからの移行では、なにかモデルパターンを想定されているのでしょうか。 山谷氏: 移行のパターンはたくさんあると思います。Hyper-VやKVMなど他社製のハイパーバイザーへ移行することもその一つですし、これを機にクラウドへシフトするということも考えられます。お客様によっては非常に大規模で複雑なVMware基盤をお持ちの場合もあると私たちは考えており、一筋縄でいかない環境に対して、新しいインフラをどう構想するか、また移行するか、そして稼働後にどう運用保守していくか、といったところまでご相談に乗ることが可能です。 山口氏: そういう意味では、金融業界のお客様はこう、製造業のお客様はこう、と、お客様の業種・業態によってもさまざまなパターンが考えられるかもしれないですね。IBMは全ての業種・業態のお客様とリレーションがありますので、そうしたナレッジも活かしながら、お客様にヒアリングをさせていただき、システム移行を一緒に検討していければと考えています。また、検討フェーズではパートナー企業の存在、また共創も重要で、ここはNI+C P様に主導権を握っていただければ。「こういう提案をしたい」といただいた声に対して、「それならこのようなソリューションがあります」と応えていきたいと考えています。 余裕を持った最適解の選択をNI+C Pもサポート 平嶋: こうして見ると、「VMware第三者保守サポートサービス」には、大きく4つのメリットがありそうです。1つ目は、 サポート保守なしリスクを伴う運用を防ぎ、万一の障害にも備えられること。2つ目は、 それでいながらコストを最適化できること。3つ目は、ベストエフォートではあるけれど、グローバルレベルでVMwareの高い知見を収集できるIBMの特性を活かした、安心感の高いサポートを受けられること。4つ目は、既存のインフラ環境の“次”を見据えて検討し、実現できるパートナーを持てること。4つ目に関しては、ぜひ当社も貢献したいですね。 山口氏: お客様には、この「つなぎ保守」のメリットを活用し、インフラ環境のマイグレーションやモダナイゼーションに成功していただきたいと思います。 平嶋: インフラ環境の移行は長期的な計画が必要です。このサービスを活用することで「時間」と「安心」を確保でき、拙速を避けて、余裕を持って最適解を選ぶことができます。NI+C Pでは、IBMのハードウェア(保守を含めたサービスやサーバー、ストレージ)とソフトウェア(Storage Fusion、watsonxなど)を組み合わせた最適なソリューションを示すことができます。また、製品の特長やユースケースを分かりやすく説明し、お客様課題の解決策も提案させていただきます。VMware問題でお困りの際は、ぜひお気軽にご相談いただければと思います。 .recommend-list{ margin-top: 0px; } ol.recommend-list li { color: #9b9b9b; } #recommend{ font-family: "Noto Sans Japanese"; font-size: 16px; font-weight: 700; color: #9b9b9b; border: none; padding: 0; margin-bottom: 10px; } .highlighter { background: linear-gradient(transparent 50%, #ffff52 90% 90%, transparent 90%); } .anchor{ display: block; margin-top:-20px; padding-top:40px; } .btn_A{ height:30px; } .btn_A a{ display:block; width:100%; height:100%; text-decoration: none; background:#eb6100; text-align:center; border:1px solid #FFFFFF; color:#FFFFFF; font-size:16px; border-radius:50px; -webkit-border-radius:50px; -moz-border-radius:50px; box-shadow:0px 0px 0px 4px #eb6100; transition: all 0.5s ease; } .btn_A a:hover{ background:#f56500; color:#999999; margin-left:0px; margin-top:0px; box-shadow:0px 0px 0px 4px #f56500; } .bigger { font-size: larger; } .interviewee { font-weight: bold; } figcaption { color: #7c7f78; font-size: smaller; } #box03 { position: relative; margin: 4em 0; padding: 0.5em 1em; border: solid 3px #95ccff; border-radius: 8px; } #box03 .box-title { position: absolute; display: inline-block; top: -13px; left: 10px; padding: 0 9px; line-height: 1; font-size: 19px; background: #FFF; color: #95ccff; font-weight: bold; } #box03 p { margin: 5px; padding: 0; font-weight: bold; } #box04 { position: relative; margin: 4em 0 0 0; padding: 0.5em 1em; border: solid 3px #3193CA; } #box04 .box-title { position: absolute; display: inline-block; top: -27px; left: -3px; padding: 0 9px; height: 25px; line-height: 25px; font-size: 17px; background: #3193CA; color: #ffffff; font-weight: bold; border-radius: 5px 5px 0 0; } #box04 p { margin: 0; padding: 0; } #box_blockquote { position: relative; margin: 4em 0; padding: 0.5em 1em; border: solid 3px #8d8d8d; } #box_blockquote .box-title { position: absolute; display: inline-block; top: -27px; left: -3px; padding: 0 9px; height: 25px; line-height: 25px; font-size: 17px; background: #8d8d8d; color: #ffffff; font-weight: bold; border-radius: 5px 5px 0 0; } #box_blockquote p { margin: 0; padding: 0; } .memo{ color:#53851b ; background-color: #c8d7b7; font-size:70%; } #blockquote_nicp{ padding:10px; margin-bottom:0px; background-color:#ffffff; } #blockquote_nicp_link{ color:#7c7f78; font-size:70%; } #h5_nicp{ font-size: 12px; padding:4px 10px; border:none; background-color:#afd2f453; }

back to top