エンタープライズのSASコード資産のための、テストで裏づけた移行
御社のSAS資産は動いています。何千ものプログラム、マクロ、フォーマット、スケジュールジョブが長年かけて磨き上げられ、その動作の多くはコード自体にしか記録されていません。どれほど互換性の高い新しいプラットフォームであっても、これを移すことには現実的なリスクが一つあります。かつて正しかったものが、わずかに誤ったものになり、それが問題になるまで誰も気づかないのです。
Jenner プロフェッショナルサービスは、単純な規律によってそのリスクを取り除きます。何かを変更する前に、現行システムが何を行っているかを網羅的かつ実行可能な記録として構築します。そしてその記録を用いて、移行後のシステムが同じことを行うと、テストを一つずつ積み重ねて証明します。
その結果として得られるのは、確信ではなく証拠にもとづいて承認できる移行と、ずっと手元に残る回帰テストスイートです。
私たちはSASの専門家です。その言語とシステムの完全な実装を自ら作り上げてきたことが、その証拠です。とはいえ、そこへ移行することは、私たちとともに選べる道のひとつにすぎません。
SAS互換コードの当社実装と、テスト駆動の手法を用いて、PythonやR、SnowflakeやDatabricks、さらにはSiemens SLCを含む他のソリューションへの移行も、確実に成し遂げられます。
それでも私たちがJennerへの移行をお勧めするのは、既存のSAS基盤をお持ちの企業にとって、より速く、より複雑さが少なく、より低コストだからです。
JennerはSAS言語、ほぼすべてのプロシジャ、マクロ機能、グラフィックス、幅広いデータ接続を実行します。ほとんどのコードにとって、移行とは同じプログラムにJennerを向けるだけのことです。しかしエンタープライズのコード資産は、決して言語だけではありません。言語が触れているすべてでもあります。
autoexec.sas、構成ファイル、システムオプション(ENCODING、LOCALE、YEARCUTOFF、VALIDVARNAME、FMTSEARCH、SASAUTOS)、環境変数、SYSPARM、そしてWORKライブラリのサイズと寿命。
LIBNAMEステートメントに埋め込まれたパスワード、{SAS002}でエンコードされた文字列、%includeされたファイル内の資格情報、KerberosやSSOのチケット、そしてそれらが本来どこに置かれるべきかという問題。
Oracle、DB2、Teradata、SQL Server、Snowflake、Hiveなどに対するSAS/ACCESSエンジン、明示的および暗黙的なパススルーSQL、結果に影響するエンジンオプション(DBCOMMIT、READBUFF、INSERTBUFF、BULKLOAD)、日付・小数・NULLの型マッピング、そしてSQLがローカル実行ではなくデータベース側に押し下げられたときに静かに変わってしまった挙動。
ハードコードされたパス、Windowsのドライブレターに対するLinuxのマウント、大文字小文字を区別するファイル名、NFSおよびSMB共有、FILENAME PIPEとXコマンド、SYSGET、そしてファイル権限。
フォーマットカタログ、コンパイル済みまたは保存済みマクロ、インデックス、監査証跡、ビュー、SPDEライブラリ、トランスポートファイル、暗号化または圧縮されたデータセット、そしてコピーではなく再生成が必要なV6/V8時代のデータセット。
SAS/CONNECTのRSUBMITブロック、Grid、SAS/SHARE、ストアドプロセス、メタデータサーバーによる認可、Enterprise Guideのプロジェクト、DI Studioが生成したジョブ、Viya CASアクション。いずれも新しいプラットフォームに相当するものはありますが、同一のものではありません。
LSF、Control-M、cron、ジョブ依存関係、リターンコードの規約、特定のNOTE/WARNING/ERRORテキストを探すログスクレイパー、SYSERRとSYSCCのロジック、そしてFILENAME EMAILによる通知。
ODSのPDF、RTF、Excel、HTML出力先、PROC TEMPLATEのスタイル、タグセット、フォント、グラフデバイスドライバ、そして下流の利用者が位置で解析しているレポート。
境界値における浮動小数点の丸め、ソートの照合順序と同順位の並び、実装間で再現性のない乱数ストリーム(RANUNI、RAND、STREAMINIT)、そして許容誤差の範囲内で収束の経路が異なりうる反復プロシジャ。
未初期化変数、PROC SQLのリマージ、暗黙のRETAIN、正常として扱われている切り捨て警告、そしてたまたま今日は正しい答えを出している未文書の挙動。
SASPy経由のPython、R、IOM経由のJavaおよび.NETクライアント、SAS/SHAREへのJDBC、.sas7bdatファイルを直接読むTableauやpandas、そしてViyaへのRESTコール。
規制産業における検証要件(GxP、21 CFR Part 11、モデルリスク管理)、行レベルセキュリティ、個人情報の取り扱い、監査証跡、そして長年運用されてきた多くのSAS資産にバージョン管理が存在しないこと。
いずれも珍しいものではありません。すべて事前に洗い出すことができ、すべてテストできます。以下のプロセスは、まさにそのためにあります。
工数を見積もる前に、資産を棚卸しします。ソースツリー、スケジュール、ログの自動解析によって、プログラム、マクロ、フォーマット、ライブラリ、外部ファイル、データベース接続の依存関係グラフを作成し、実際に動いているもの、死んでいるもの、誰が所有しているものかを特定します。上記のカテゴリはすべて確認し、発見事項は移行工数で採点します。
棚卸しとリスクの報告書、および以降のフェーズに対する固定価格の提案。先に進まないと判断された場合でも、報告書は御社のものです。
これが以降のすべてを信頼できるものにするフェーズであり、何も移行しないうちに、既存のSASシステム上だけで完結します。
対象となるすべてのプログラムについて、AIを活用した解析で特性評価テストを構築します。これはコードが今日行っていることの実行可能な仕様です。各テストはプログラムが消費する入力(データセット、マクロパラメータ、外部ファイル、データベース抽出、環境設定)を捕捉し、現行のSAS環境で実行し、生成されるすべてを記録します。出力データセット、ログの内容、リターンコード、ODS出力、マクロ変数の状態、そして書き出されたファイルや送信されたメールといった副作用です。
これをエンタープライズ規模で現実的にしているのがAIです。一万本のプログラムを読み、それぞれが扱うエッジケースを推し量る作業は、納期を抱えた人間の仕事ではありません。テストケース、フィクスチャ、比較ロジックの生成は、まさに現在のモデルが得意とする大量かつパターン中心の作業であり、生成された各テストは、それが記述する当のシステムに対して実行して検証されます。現行のSASで通らないテストは御社のシステムのテストではないため、破棄します。
比較ルールは出力ごとに定めます。データセットは既定で厳密に比較します。浮動小数点や反復プロシジャによってビット単位の一致が無意味になる箇所では、数値の許容誤差を明示的に宣言します。ログの比較はテキストではなく構造で行うため、表現の変わったNOTEでジョブが失敗することはなく、行数の変化では失敗します。現在日付や乱数シードのような非決定的な入力は制御し、同じテストがどの日でも同じ答えを返すようにします。テストに本番データを使えない場合は、同じコード経路を通るマスクデータまたは合成フィクスチャを作成します。
プログラム、マクロ、プロシジャにわたる測定済みカバレッジを備えた、バージョン管理下のテストスイートと、現行システムから記録したベースライン。このスイートは御社のものです。Jenner、SAS、そしてこの言語を解する他のあらゆる環境で動くように書かれており、移行とは無関係に価値があります。ほとんどのSAS資産は、これまで一度も持ったことがないからです。
ベースラインが整えば、移行は「完了」の定義が明確なエンジニアリング作業になります。御社の環境にJennerを立ち上げ、ディスカバリーで見つかった環境面の項目(パス、ライブラリ、シークレット管理、データベース接続、スケジューラ連携)を手当てし、スイート全体を実行します。
失敗はすべて、次の四つのカテゴリのいずれかに分類します。
コードは正しく、誤っているのはJennerです。Jennerは毎週新しいビルドをリリースしており、お客様の移行で見つかった不具合は優先して対応し、失敗したテストはJenner自身の回帰テストスイートに恒久的に加わります。
設定が必要なパス、資格情報、接続、オプション。修正して再実行します。
コードが未文書のSASの挙動に依存しています。該当する行と該当する挙動を具体的にお示しし、コードを変更する(そのテストが変更の安全性を証明します)か、Jennerがその癖に合わせるかを選んでいただきます。
宣言した許容誤差の範囲で結果が異なる、あるいはログメッセージの表現が異なる場合です。文書化して承認を得るものであり、黙って受け入れることは決してありません。
課題を解消しながらスイートを継続的に実行するため、進捗は意見ではなく数値になり、リグレッションは持ち込まれたその日のうちに検出されます。
スイート全体が通る移行済みコード、あるいは残った差異のすべてが書面で処置されたコード。
認証とは、経営責任者、監査人、規制当局が移行を受け入れられるようにする証拠パッケージです。
本番ジョブを両方のシステムで実行し、テストスイートと同じルールで出力を自動比較する並行稼働期間を設けます。認証パッケージには、棚卸し、テストスイートとそのカバレッジ、ベースライン、最終実行の結果、すべての差異の処置、そして各要件やプログラムからそれを覆うテストへのトレーサビリティが含まれます。規制対象のお客様向けには、IQ/OQ/PQの検証と監査に対応できる構成にします。
署名済みの認証パッケージと、実施可否の勧告。
切り替えは、御社のバッチ処理の時間枠とSASライセンスの更新日に合わせ、検証済みの切り戻し経路を用意したうえで計画します。スケジューラを付け替え、監視とアラートを確認し、SAS環境は御社の予定に沿って停止します。
テストスイートは切り替え後も動き続けます。Jennerは毎週リリースするため、依存しているものが何も変わっていないという同じ証拠とともに、すべての改善を受け取れます。コード資産の成長に合わせてスイートを拡張できるよう、御社のチームには研修を行います。
Jenner上の本番環境、SASの停止計画、そして働き続ける回帰テストスイート。
固定価格かつ短期です。以降のフェーズに対する提案を作成し、価格は資産規模と複雑さの見込みではなく、実測にもとづいて決めます。
通常は範囲を固定した単一の契約として提供し、マイルストーンの検収はスイートの結果に紐づけます。
テストスイートを引き渡し、拡張のための研修を終えたのち、年間サービスとしてご利用いただけます。
16万円 – 336万円
多くの場合リモートで実施でき、期間は 1 週間から 1 か月ほどです。
832万円 – 6,480万円
一部の現地作業や高度な業務知識を要し、期間はおおむね 2 か月から 6 か月です。
金額はすべて日本円(JPY)です。
この金額にソフトウェアのライセンス料は含まれません。ただしライセンス体系は明快で、価格も競争力があります。 料金ページを見る.
プロフェッショナルサービスに問い合わせるSAS環境の概要(プラットフォーム、おおよそのプログラム本数、利用製品、データベース、スケジューラ)をお送りください。ディスカバリーの範囲をご提案します。