バイナリーオプション講座

パフォーマンスレベルの評価手順

パフォーマンスレベルの評価手順
UPMの供給ベースはかなり大規模です。 サプライヤーは2万5千社に上り 調達している原料は多岐に渡ります。 当社にとってどこにリスクがあるかを知ることが欠かせません。 活動の焦点をどこに合わせるかを判断するツールが必要です。

Simple Replay ユーティリティで Amazon Redshift RA3 への移行評価を簡易化

Amazon Redshift は、高速かつフルマネージドであり広く普及しているクラウドデータウェアハウスです。標準 SQL を使用して、データウェアハウス、業務データベース、データレイク全体でエクサバイト単位のデータを処理できます。Amazon Redshift では様々なワークロードに対応するために複数のノードタイプが用意されており、要件に応じて RA3、DC2、DS2 から選択できます。RA3 は最新のインスタンスタイプで、コンピューティングとストレージを個別にスケーリングして料金を支払うことができます。また、クラスター間のデータ共有やアベイラビリティーゾーン間のクラスター再配置などの高度な機能も使用できます。アップグレード時のノード数とノードタイプに関する推奨事項の詳細については、RA3 ノードタイプへのアップグレードを参照してください。

マネージドストレージを備えた新しい Amazon Redshift RA3 ノードを使用して、クラウドデータウェアハウスを拡張し、コストを削減 と Amazon Redshift ベンチマーク: RA3 と DS2 インスタンスタイプの比較 では、DS2 から RA3 への移行の利点を詳細に説明しています。既存の DS2 をお使いのお客様に加え、DC2 をお使いのお客様の多くも、RA3 のメリットについて学び、パフォーマンスを評価した後に RA3 パフォーマンスレベルの評価手順 へ移行しました。しかし、この新しい RA3 ノードタイプのパフォーマンスを評価するためには、既存のワークロードを手動で再現する必要があります。

Simple Replay ツールを使用することで what-if 分析を実行し、様々な条件におけるワークロードのパフォーマンスを評価できます。例えば RA3 などの新しいインスタンスタイプで本番ワークロードのベンチマークテストをしたり、新しい機能を評価したり、異なるクラスター構成を評価することができます。また、COPY および UNLOAD ステートメントを使用した、データ取り込みおよびエクスポートを行うパイプラインのリプレイのサポートも強化されています。ワークロードのリプレイを始めるには、Amazon Redshift GitHub リポジトリ パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 からツールをダウンロードします。

この投稿では、Amazon Redshift Simple Replay ユーティリティを使用して Amazon Redshift RA3 インスタンスの評価を自動化する手順について説明します。旧世代の DS2 および DC2 ノードタイプを使用して Amazon パフォーマンスレベルの評価手順 Redshift で本番ワークロードを実行している場合、このソリューションを使用することでソースとなる本番クラスターからワークロードのログを自動的に抽出し、本番から分離された環境でワークロードをリプレイすることができます。これにより、2つの Amazon Redshift クラスターのパフォーマンスの直接比較をシームレスに行うことができます。

このソリューションでは、AWS CloudFormation を使用して必要なすべてのリソースを自動的に AWS アカウントへプロビジョニングします。詳細については、AWS CloudFormation の開始方法を参照してください。
このソリューションの前提条件として、次の手順を完了する必要があります。これらの手順、およびその後のデプロイを実行するには、AWS アカウントの管理者権限が必要になる場合があります。
Amazon Redshift コンソールから、ソースの Amazon Redshift クラスターで監査ログ作成を有効化し、ログファイルを保存する Amazon Simple Storage Service (Amazon S3) バケットの場所を指定します。詳細については、データベース監査ログ作成を参照してください。
パラメータグループの enable_user_activity_logging を true パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 に変更します。詳細については、コンソールを使用したパラメータグループの管理を参照してください。
クラスターを再起動します。
CloudFormation テンプレートをデプロイする予定の AWS アカウントで Amazon Elastic Compute Cloud (Amazon EC2) キーペアを作成します。詳細については、Amazon EC2 を使用してキーペアを作成する を参照してください。

ソリューションの概要

このソリューションは、ワークロードの抽出 (Extract) とリプレイ (Replay) を実行する 2 つの CloudFormation テンプレートで構成されています。抽出とリプレイのテンプレートは、 Amazon Redshift クラスターがホストされているのと同じアカウントに両方をデプロイすることが可能であり、推奨されます。もしくは次の図に示すように本番アカウントで抽出テンプレートを実行し、分離された開発アカウントでリプレイテンプレートを実行して評価を行うことも可能です。


このプロセスでは AWS Step Functions と AWS Lambda を使用して、抽出とリプレイのためのエンドツーエンドのワークフローをオーケストレートします。1つ目のテンプレートはソースとなるアカウントに抽出アプリケーションをデプロイします。これにより Amazon Redshift 監査ログ用の S3 バケットから監査ログが抽出され、リプレイ用に作成された新しい S3 バケットへ格納されます。またクラスターの手動スナップショットを作成し、リプレイ用アカウントに復元を許可します。


2 つ目のテンプレートは、開発アカウントにリプレイアプリケーションをデプロイします(ソースのアカウントでリプレイを実行しない場合)。これは抽出アプリケーションで出力した Amazon S3 上のファイルを使用し、リプレイの自動評価サマリーを生成します。

エンドツーエンドのワークフロー: 抽出プロセス

抽出プロセスは、抽出対象の期間を入力することで開始します。ソースとなるクラスターから監査ログを自動的に抽出し、そのアカウントの新しい S3 バケットにこれらのログを保存します。また Simple Replay ユーティリティがインストールされた、サイズが m5.large の Amazon EC2 インスタンスをデプロイします。次の図はソリューションのアーキテクチャを示しています。次の図は、抽出プロセスで用いる パフォーマンスレベルの評価手順 AWS Step Functions ステートマシンです。

ステートマシンは以下のステップを実行して、ソースクラスターのメタデータを抽出 S3 バケットへ抽出します。
ソースクラスターが使用可能な状態になるまで待ちます。
ソースクラスターから手動スナップショットを作成します。識別子は ra3-migration-evaluation-snapshot- とクラスター識別子を連結した文字列です。
リプレイプロセスを実行するターゲットアカウントにスナップショットを許可します。
ソースクラスター設定パラメータを抽出 S3 バケットにアップロードします。
抽出プロセスを実行してソースクラスターからログを取得し、抽出 S3 バケットに配置します。
抽出 CloudFormation テンプレートは、抽出プロセスの初回の実行を自動的に開始します。ただし、次のコードのように入力パラメーター start_time と end_time を指定してステートマシンに渡すことでいつでも抽出プロセスを再実行できます。

start_time と end_time の値は ISO-8601 形式の日時 (例: パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 2021-03-05T12:30:00+00:00 ) に置き換えてください。次のスクリーンショットは、ステートマシンの実行のインプットです。


抽出プロセス用の CloudFormation テンプレートは、ソースクラスターがホストされているのと同じアカウントにデプロイする必要があります。このテンプレートでは、次のパラメータを指定する必要があります。

  • SourceRedshiftClusterEndpoint – 非 RA3 のソースクラスターエンドポイント。ポート番号とデータベース名を含みます。
  • AccountIdForReplay – 別のアカウントでリプレイプロセスを実行する場合は、このパラメータに 12 桁の AWS アカウント ID を入力します。同じアカウントで抽出とリプレイプロセスを実行している場合は、 N/A を入力します。
  • SimpleReplayStartTime – ソースクラスターから抽出プロセスを初回実行する際に使用する、 ISO-8601 形式の開始時刻です (パフォーマンスレベルの評価手順 例: 2021-01-20T 21:41:16+00:00 ) 。これは、後で抽出ステートマシンに入力する JSON から変更できます。
  • SimpleReplayEndTime – ソースクラスターから抽出してターゲット RA3 クラスターでリプレイする際に使用する、ISO-8601 形式の終了時刻です。これは、後で抽出ステートマシンに入力する JSON から変更できます。開始時刻と終了時刻の差が24時間を超えないようにしてください。
  • ExtractSystemTables – これはオプションであり、ソースクラスターのシステムテーブルを抽出する場合に使用します。このパラメータは No に設定することを推奨します。これは、ソースクラスターからシステムテーブルのアンロードを実行するために、AWS Identity and Access Management ロールをソースクラスターに追加するためです。
  • EndUserIamRoleName – 抽出・リプレイの評価を実行する可能性があるエンドユーザーの パフォーマンスレベルの評価手順 IAM ロール名です。このパラメータを使用して、管理者以外のユーザーが AWS リソースに対する他のアクセス権限なしで抽出・リプレイステートマシンを実行できるようにします。エンドユーザー権限を設定しない場合は、N/A と入力します。
  • EC2InstanceAMI – Amazon Linux 2 ベースの EC2 インスタンス用の AMI です。コンプライアンス要件で必要でない限り、このパラメータのデフォルトの AMI を使用することを推奨します。

テンプレートをデプロイした後、テンプレートの [出力] タブに移動します。このタブには、リプレイプロセスのデプロイに必要な関連パラメータが表示されます。

エンドツーエンドのワークフロー: リプレイプロセス

本ソリューションの 2 番目のステップでは、抽出プロセスが実行されたのと同じアカウント、または同じリージョンの別のアカウントに CloudFormation テンプレートを使用してリプレイプロセスをデプロイします。
このプロセスでは、2 つの Amazon Redshift クラスターをプロビジョニングします。1 つはソースクラスターと全く同じ構成のレプリカクラスターで、もう 1 つは RA3 構成のターゲットクラスターです。Simple Replay ユーティリティがインストールされた M5 ファミリーの 2 つの EC2 インスタンスをデプロイし、抽出されたワークロードをこれらのクラスターで同時にリプレイします。リプレイプロセスでは、ソースクラスターのワークロードを正確に模倣するためにクエリとトランザクションの間の時間間隔が保持されるため、このプロセスには、抽出プロセスの実行中に指定した start_time から end_time の期間とほぼ同じ時間がかかります。次の図は、ソリューションのアーキテクチャを示しています。


次の図は、リプレイプロセスの Step Functions ステートマシンを示しています。

ステートマシンは以下のステップを実行して、抽出 S3 バケットへ抽出されたワークロードをリプレイします。

  1. Amazon Redshift パラメータグループを、ソースクラスターのパラメータグループと同じ設定に更新します。このパラメータグループは、抽出プロセスの一部として抽出 S3 バケットに保存されています。
  2. レプリカクラスターとターゲットクラスターが存在しない場合は、それらのクラスターの作成を並列で開始します。レプリカクラスターはソースクラスターとまったく同じ構成で作成され、ソースクラスターが RA3 の Elastic resize に対応している場合、ターゲットクラスターは RA3 構成で作成されます。構成は CloudFormation テンプレートのデプロイ時に指定したものです。ターゲットの RA3 構成が Elastic resize に対応していない場合は、レプリカクラスターと同じ設定でターゲットクラスターが作成されます。
  3. 前のステップで、Elastic resize との互換性がないために非 RA3 構成でターゲットクラスターを作成した場合、クラスターが使用可能になったときに、そのクラスターで Classic resize が実行されます。
  4. ターゲットクラスターまたはレプリカクラスターが一時停止状態の場合、クラスターを再開します。
  5. ターゲットクラスターまたはレプリカクラスターが利用可能な状態にあり、そのクラスターでリストア (該当する場合) が完了すると、自動パフォーマンス比較に必要ないくつかの Amazon Redshift オブジェクトをクラスターのパブリックスキーマにセットアップする SQL スクリプトが実行されます。
  6. パフォーマンスレベルの評価手順
  7. ターゲットクラスターとレプリカクラスターの両方のセットアップが完了すると、両方のクラスターでリプレイプロセスが同時に実行されます。これにより、ソースクラスターから抽出されたすべての SQL が実行されます。トランザクションの順序と時間間隔はソースクラスターと同じになるよう維持されます。
  8. リプレイプロセスが完了すると、クエリ統計がレプリカクラスターからアンロードされ、ターゲット RA3 クラスターにロードされます。これにより、 RA3 クラスター同士の直接のパフォーマンス比較が可能になります。

リプレイプロセスの CloudFormation テンプレートは、リプレイプロセスの初回実行を自動的に開始します。また、パラメータなしでステートマシンを実行することでいつでもプロセスを再実行できます。このテンプレートでは、次のパラメータを指定する必要があります。

  • SourceAccountNumber – 抽出プロセスを実行した、ソースのAWSアカウントID。抽出スタックの [出力] パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 タブに表示されます。
  • SourceAccountSimpleReplayS3Bucket – 抽出テンプレートによって作成された抽出 S3 バケット。スタックの [出力] タブに表示されます。
  • SourceRedshiftClusterEndpoint – ポート番号とデータベース名を含む、非 RA3 のソースクラスターエンドポイント (スタックの [出力] パフォーマンスレベルの評価手順 タブに表示されます)。
  • SourceRedshiftClusterKMSKeyARN – ソース Redshift クラスターが暗号化されている場合、AWS Key Management Service (KMS) のキーの ARN (Amazon Resource パフォーマンスレベルの評価手順 Name) (スタックの [出力] タブに表示されます) 。ソースクラスターが暗号化されている場合は、同じアカウントで抽出とリプレイを実行する必要があります。
  • SourceRedshiftClusterMasterUsername – ソースクラスターのプライマリユーザーアカウントに関連付けられているユーザー名 (スタックの [出力] タブに表示されます)。
  • SourceRedshiftClusterPrimaryDatabase – ワークロードをリプレイするソースクラスター内のプライマリデータベース名。Amazon Redshift は、 dev という名前のデフォルトデータベースを自動的に作成しますが、プライマリデータベースではない場合があります。デプロイメントに基づいて値を入力してください。複数のデータベースがある場合は、データベースの抽出とリプレイを一度に1つずつ実行する必要があります。
  • TargetRedshiftClusterNodeType – プロビジョニングされる RA3 ノードのタイプ。RA3 ノードタイプへのアップグレードで提案されているように、ノードタイプとノード数を使用することをお勧めします。
  • TargetRedshiftClusterNumberOfNodes – クラスター内のコンピュートノードの数。
  • EndUserIamRoleName – パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 抽出・リプレイ評価を実行する可能性があるエンドユーザーの既存の IAM ロール名。このパラメータを使用して、管理者以外のユーザーが AWS リソースに対する他のアクセス権限なしで抽出・リプレイステートマシンを実行できるようにします。エンドユーザー権限を設定しない場合は、N/A を入力します。
  • GrantS3ReadOnlyAccessToRedshift – 抽出プロセスとリプレイプロセスを同じアカウントにデプロイする場合は、このパラメータに Yes を設定します。これにより、アカウント内の Amazon Redshift から パフォーマンスレベルの評価手順 COPY 文をリプレイするために、Amazon Redshift ターゲットクラスターとレプリカクラスターへの Amazons3ReadOnlyAccess が付与されます。それ以外の場合は、ファイルを手動でコピーし、抽出 S3 バケットの最新の抽出フォルダにある copy_replacement.csv ファイルを修正し、リプレイ S3 バケットの config/replay.yaml パフォーマンスレベルの評価手順 ファイルで COPY 文のパラメータを true に設定する必要があります。
  • VPC – クラスターと EC2 インスタンスをデプロイする、既存の Amazon Virtual Private Cloud (Amazon パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 VPC)。
  • SubnetId – クラスターと EC2 インスタンスをデプロイする VPC 内の既存のサブネット。
  • KeyPairName – リプレイ EC2 インスタンスへの SSH パフォーマンスレベルの評価手順 を許可する既存のキーペア。
  • OnPremisesCIDR – SQL クライアントからターゲットクラスターとレプリカクラスターにアクセスするための既存のインフラストラクチャの IP 範囲 (CIDR 表記)。不明な場合は、お使いの PC の CIDR アドレスを設定します。例えば、デスクトップ PC パフォーマンスレベルの評価手順 の IP アドレスが 10.156.87.45 の場合は、 10.156.87.45/32 を入力します。
  • EC2InstanceType パフォーマンスレベルの評価手順 – Simple Replay ユーティリティのコードベースをホストする EC2 インスタンスタイプ。クラスターのデータサイズが 1 TB 未満の場合は、large インスタンスタイプを使用できます。大きなワークロードの場合、クラスターからクエリ結果を取得する際に EC2 インスタンスがボトルネックとならないよう、より大きなインスタンスタイプを推奨します。
  • EC2InstanceVolumeGiB – EC2 インスタンスボリュームのサイズ (GiB 単位) 。30 GiB 以上にしておくことを推奨します。
  • EC2InstanceAMI – Amazon Linux 2 ベースの EC2 インスタンス用の AMI 。コンプライアンス要件に必要な場合以外は、このパラメータを変更しないでください。

アクセス権限とセキュリティ

AWS CloudFormation でこのソリューションをデプロイするには、抽出とリプレイのプロセスをデプロイする予定の AWS アカウントの管理者アクセス権が必要です。いずれのテンプレートも、 EndUserIamRoleName の入力パラメータを設定します。このパラメータを使用すると、管理者以外のユーザーがシステムリソースに対する広範な権限なしでプロセスを実行できます。
CloudFormation テンプレートは、最小権限の原則に基づいてセキュリティのベストプラクティスを使用して必要なすべてのリソースをプロビジョニングし、アカウントの VPC 内にすべてのリソースをホストします。EC2 インスタンスと Amazon Redshift クラスターは同じセキュリティグループを共有しており、EC2 インスタンスへの SSH アクセスは許可されていません。Amazon Redshift ターゲットクラスターとレプリカクラスターへのアクセスは、CloudFormation テンプレートパラメーターの OnPremisesCIDR で制御されます。このパラメーターは、オンプレミスのユーザーが Amazon Redshift ポートへ SQL クライアントを使用して新しいクラスターに接続できるようにするために設定する必要があります。
すべてのリソースのアクセス許可は、Amazon Redshift、Lambda、ステップ関数、および パフォーマンスレベルの評価手順 Amazon EC2 に適切なアクセス権限を付与する IAM ロールを使用して制御されます。読み取りおよび書き込みアクセス権限は抽出プロセスによって作成された S3 バケットに対して、リプレイプロセスで使用される AWS アカウントに付与され、そのバケットの設定を読み取って更新することができます。

RA3 のパフォーマンスを評価する

リプレイステートマシンの初回の実行が完了すると、リプレイテンプレートがデプロイされた AWS アカウントの Amazon Redshift パフォーマンスレベルの評価手順 コンソールで、RA3 ターゲットクラスターと RA3 以外のレプリカクラスターを表示できるはずです。リプレイを繰り返すたびに、ターゲット RA3 クラスターのパブリックスキーマに次のテーブルとビューが自動的に作成され、クラスター同士のパフォーマンスを直接比較できます。

  • source_target_comparison — 2 つのクラスターがワークロードのリプレイにかかった時間の比較サマリーです。Amazon Redshift キューとユーザー名でグループ化された total_query_time_saved_seconds 列を提供しており、最終的な評価に非常に役立ちます。
  • source_target_comparison_raw パフォーマンスレベルの評価手順 — クエリごとに 2 つのクラスターにかかった時間の詳細な比較を提供します。
  • replica_cluster_query_stats — レプリカクラスターで実行されたリプレイのクエリレベルのメトリクスを格納します。
  • target_cluster_query_stats — RA3 クラスターで実行されたリプレイのクエリレベルのメトリクスを格納します。
  • source_cluster_query_stats — ソースクラスターのクエリレベルのメトリクスを格納します。このテーブルは、ソースクラスターの STL パフォーマンスレベルの評価手順 ログビューに依存しており、2〜5 日間しか保持されないため、空の可能性があります。詳細については、ログ記録のための STL ビューを参照してください。
  • detailed_query_stats — query_stats テーブルを作成し、STL ログビューからこれらの統計情報を入力するために使用するロジックを提供します。

コストとタイムラインに関する考慮事項

このテンプレートを AWS アカウントで実行すると、新しい Amazon Redshift クラスターと 3 パフォーマンスレベルの評価手順 つの EC2 インスタンスがプロビジョニングされるため、コスト管理に気をつける必要があります。リザーブドインスタンスがない場合は、オンデマンドインスタンスとして課金される場合があります。評価が完了したら、CloudFormation スタックを削除することを推奨します。これにより、抽出およびリプレイ用の 2 つの S3 バケットを除くすべての関連リソースが削除されます。また、使用していないときはクラスターを一時停止することを推奨します。詳細については、Amazon Redshift の料金 および Amazon EC2 の料金 パフォーマンスレベルの評価手順 を参照してください。

Simple Replay とこの自動化プロセスには、いくつかの既知の制約があります。

  • Amazon S3 への監査ログの配信に遅延がある場合、抽出プロセスが失敗することがあります。その場合は、前回の実行時とは異なる時間間隔を選択して、抽出ステートマシンを再実行する必要があります。
  • 複数のコネクションにまたがった依存関係がある SQL クエリは元の実行順序が保証されません。
  • ターゲットクラスターが外部テーブルにアクセスできない場合、Redshift Spectrum クエリはリプレイされません。
  • BIND 変数を含むクエリはリプレイされません。
  • JDBC を使用したリプレイはサポートされていません。
  • 大規模なデータ取得が同時に発生すると、Amazon EC2 クライアントに負荷がかかることがあります。このような場合には、より大きな EC2 インスタンスが必要になる場合があります。
  • 監査ログには、本番クラスターに送信されなかった SQL が含まれる場合があります。これらの SQL はリプレイの対象となります。

本番環境の Amazon Redshift クラスターと直接比較するのではなく、レプリカクラスターとターゲットクラスターを比較することで、これらの制約の影響を最小限に抑えることができます。

Amazon Redshift パフォーマンスレベルの評価手順 RA3 インスタンスは、以前のインスタンスと比較して多くの新たな利点があります。RA3 インスタンスタイプへの移行を検討しているが評価にかかる労力を懸念されている場合、Amazon Redshift Simple Replay ユーティリティを使用することで、RA3 ノードへの移行評価を簡易かつシームレスに実行できます。
RA3 インスタンスタイプのパフォーマンスが十分な場合は、本番クラスターでサイズ変更を実行することで RA3 へ移行できます。本番クラスターのサイズ変更にかかる時間は、Elastic Resize と Classic パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 Resize のどちらを使用したかによりますが、テスト用の RA3 クラスターを作成するのと同程度かかります。また、本番クラスターのサイズ変更操作を実行する前に手動スナップショットを作成することを推奨します。

パフォーマンスレベルの評価手順

研修アンケートを掘り下げていくと、「人材開発部門の成果を見る指標は何か?」という問いにぶつかると思います。そして、今はそれが強く問われているような気がします。

次図表6の人材開発指標の例は少し古いのですが、Tamar Elkeles (Qualcomm 元CLO)とROIのJ.J.フィリップスの共著The Chief Leaning Officer(2007)に出ていたものを独断と偏見で整理し、見出しをつけたものです。恐縮ですが、原書にはこういう見出しはありませんので、ご了承ください

図表6 研修効果測定の指標と人材開発成果指標

もし、こういう指標が並んだ学習部門の年次報告があるといかがでしょうか?少なくとも部門としてどのような貢献をしたのかわかりやすくなると思います。お気づきのように、この中には「研修コース別の満足度」はまったくありません

個人的には、ElkelesやJosh Bersin (パフォーマンスレベルの評価手順 Deloitte)の議論を見聞きすると、先の4レベルに終始した議論はやや20世紀的なものという気がします。

Elkelesは、現在はQualcommを退社していますが、2015年末まで同社のCLOとして長く活躍し、CLO誌から個人でも学習部門でもAwardを受賞しています。今年のATDセッションでは、今のQualcommは4半期ごとに①事業戦略の遂行と②企業文化にかかわる人材開発指標をインフォグラフィックにして報告すると発表していました。また、セッションの参加者からレベル2やレベル3をどうしているのかという質問に対し、測定していないと明言していました。

ATD TV Conference 2016 sessions (ATD会員のみ視聴可能)
Secrets to Building an Award-Winning Learning Organization (パフォーマンスレベルの評価手順 SU110)

Qualcomm-Pathgather Case Study.pd

今後のHRという文脈からみて、Josh Bersin (Deloitte)の指摘も非常に参考になります。BersinはHRのトレンド調査で有名ですが、Predictions 2016ではディジタルHR、パフォーマンスマネジメント、リーダー育成、学習のコンテンツ、HRアナリティクスなど、10のトレンドについて非常に興味深い先進事例をたくさん紹介しています。

単独の学習指標に力を注いだ時代は終わろうとしている。言うまでもなく、学習コンテンツの利用度や活用度合の測定は必要だが、さらに重要なことがある。それは、学習データと他の従業員データを照らし合わせ、学習したことにより、社内のどこでどのように営業業績が向上したのか、キャリアの発展に役立ったのか、リーダーの育成に役立ったのかをみることだ。

Thalheimerは、学習により職場でのパフォーマンスが実際にどれだけ改善したのかを見る研修アンケートを提案し、ElkelesやBersinは経営が注視している業績指標やタレント指標と学習指標の連動を強調しているのだと思います。

持続可能なサプライチェーンのための評価依頼企業向けソリューション

当社のサービスおよび間接材サプライヤーのほとんどを管理する上で、エコバディス は非常に効率的で有用であることを実感しています。エコバディス を通して、私たちはサプライヤーの実践を深く理解することができます。
Nestlé Responsible Sourcingと連携しているエコバディス は、サプライヤーが既に持っているものを基に、サステナビリティパフォーマンスを実証するユニークな方法を提供します。
ネスレのような購買組織にとって、エコバディス プラットフォームは、重複を避け、戦略的サプライヤーとの責任ある調達に関する効果的なコラボレーションを確保するために使用するツールの 1 つです。

LVMH Moët Hennessy Louis Vuitton SEは、奢侈品を扱う会社です。 事業は「ワイン&スピリッツ」「ファッション&レザーグッズ」「香水&化粧品」「時計&ジュエリー」「セレクティブ・リテーリング」などのグループに分かれています。

新しい規制はきっといい効果をもたらすでしょう。というのも、つい最近まで、LVMHの各メゾンは持続可能性の実現に向けて独自にアプローチしなければならなかったのですから。 現在、特にフランスにおいてはサパンII法および注意義務法の規制によって、グループ全体が子会社レベルで起こることにも責任を持つことになりました。 つまりメゾン、各事業、またグループ、それぞれのレベルで行えることの間に、よりたしかなつながりを見出す必要があるのです。 これは子会社間のあらゆる相乗効果を高めることになりますし 非常にポジティブなことでもあります。 EcoVadisの活用について私が伝えたいのは、リスクにさらされているサプライヤーの迅速かつ正確なマッピングを行うのに役立つということです。

1876年に設立されたヘンケルは、接着技術、ビューティーケア、ランドリー&ホームケアという3つの分野で、 アドヒーシブ テクノロジーズ(接着技術) ランドリー&ホームケア ビューティーケアの3つです。

資材調達については 既存のクライアントや潜在顧客への入札において営業部門をサポートする必要があります 最近では、入札パッケージの中に持続可能性の基準やEcoVadisのスコアを求めるクライアントが増えてきています。 弊社は 英国で公共部門の入札を勝ち取りました CSRスコアに加えて 持続可能性プログラムの実績を提示できたことが大きかったと思います

まず全てのバイヤーおよび購入品において 戦略を持つよう依頼することから始まりました。 戦略を持つと その一部であるサプライヤーは すでにCSRを評価されていなければなりません。 入札が始まる前から CSRはその一部となっているのです。 そしてもちろん、各バイヤーがグループ全体に何かを提示し、入札の呼びかけを行う際には、CSRの評価が必要になります。

Group PSAが販売する自動車を見てみると、それを構成する部品の90%以上が他から購入されています。街中を走るすべての車が持続可能な方法で生産されているかどうか、当社の購買部門で精査しているのもそのためです。 大きな仕事が課されていると言えましょう。 同時にそこには、私たちを引きつける何かがあります。業界をより良い方向へ牽引できることは、私たちの喜びであり、誇りです。 そうするのが自然なことだと思っています。

1933年に設立されたエールフランスは、スカイチームの創設メンバーです。 品質と革新性に焦点を当てた継続的な取り組みを常に意識しています。 顧客の期待に応える製品やサービスを提供することは、エールフランスの最も重要な課題のひとつです。 長距離路線では、「New Travel Concept」を導入し、La Première(ファーストクラス)、Affaires(ビジネスクラス)、Premium Voyageur(プレミアムエコノミー)、Voyageur(エコノミー)のキャビンを一新しました。また、中距離路線の大幅な見直しも実施されています。

2012年、当社の「持続可能な開発」チームは、Cascadesをサポートしてくれる企業をいくつか検討し、その評価を社内で行いました。 私たちが採用しようと決めたのが、その中でもっとも先進的な企業であったEcoVadisだったのです。 昨年、契約更新の時期を迎えたときに、市場にあるものを再度検討し、EcoVadisの継続を決めました。 私たちが特に感謝していることのひとつは、協力して改善を支援してくれる専門家からのサポートです。

産業と健康のためにガス、技術、サービスを提供してきた世界的リーダーであるエア・リキード。80カ国に約66,000人の従業員をようし、360万人以上の顧客と患者にサービスを届けています。 酸素、窒素、水素は生命、物質、エネルギーに不可欠の低分子です。 これらはエア・リキードの科学的領域を体現するものであり、1902年の創業以来、活動の中核を担ってきました。

弊社の年間予算は約100億ユーロで およそ7万社のサプライヤーと提携しています。 当社の購買特性のひとつは、活動と地域の多様性に関連しています。 購買カテゴリーの管理や調達戦略の実施にある程度の複雑さを伴うのはそのためです。

Rete Ferroviaria Italiana(RFI)は、Ferrovie dello Statoグループの中で、インフラ管理という公的な役割を担っています。 線路、駅および設備の責任者として、イタリアの鉄道事業者に鉄道網へのアクセスを保証し、そのメンテナンスや安全な循環の確保に努めています。また、鉄道線路と設備の改善とそのための投資を管理。システムと素材の技術開発も行っています。

Rete Ferroviaria Italianaは 一般競争入札の報奨基準として イタリア(そしておそらくヨーロッパ)の鉄道業界で初めてEcoVadisの評価を導入しました。 次のステップは、他の鉄道事業者や主要企業も含めて、グループ全体でこの評価を基準として導入することです。

マンパワーグループは、人間の潜在能力をビジネスの力に結びつける革新的なワークフォース・ソリューションの世界的リーダーです。 ManpowerGroup Solutions、Experis、Manpower、Right Managementなどのブランドを通じて、大企業から中小企業まで、 あらゆる業界の組織にサービスを提供しています。

UPMの供給ベースはかなり大規模です。 サプライヤーは2万5千社に上り 調達している原料は多岐に渡ります。 当社にとってどこにリスクがあるかを知ることが欠かせません。 活動の焦点をどこに合わせるかを判断するツールが必要です。

新しいトレンドと期待が自動車産業のあり方を変えようとしています。 この革命から生まれる新しい挑戦に触発されて、フォルシアはモビリティの明日を予測。未来のコックピットと持続可能な移動を実現するため、最先端のソリューションを開発しています。 一歩先のよりクリーンでスマートなモビリティに貢献し、価値を創造したいと考えているなら、フォルシアが最適です。

持続可能性に関するレポートは フォルシアの重要業績評価指標(KPI)と月次レビューに含まれています。 サプライヤーを評価する際には、持続可能性の成熟度レベルに合わせてKPIを調整しています。

顧客からの要望で数年間、EcoVadisの評価を受けていました。 役員会で 内部リファレンスとしてエコバディスの採用が3年前に決まりました。 EcoVadisの参照フレームワークが網羅すべき課題をすべておさえていたため、当社のCSR体制を整えることができました。同時に、それぞれの子会がグループ全体の戦略と歩調を合わせられるようになり、その運用が測定可能な形でなされているかも確認できるようになったのです。

Belron International Ltd.は、車両用ガラス修理・交換(VGRR)サービスの世界的なリーディングプロバイダーです。同社は、何千ものガラス交換サービスセンターのネットワークを運営しており、移動修理車輌に支えられています。

私はCSRの責任者ですが 社員が戦略に関わるためにも この種のツールはとても重要です。 EcoVadisの評価を受けるように依頼してきたパートナーにはスコアを送信。評価の依頼をしない他のパートナーにもスコアを送っています。 私たちの活動に対する外部からの承認とアプローチが得られる。これはとても重要なことです。

私たちがエコバディス のプラットフォームを採用したのは、サステナビリティ分野のパフォーマンスを評価・審査するための優れた堅牢なアプローチを持つ、最も長い歴史を持つ評価プラットフォームの1つであったからです。また、主要なお客様からサプライヤーとしてこのアセスメントを受けるよう要請されていたこともあり、お客様を満足させるだけでなく、社内で持続可能な考え方を推進し、各組織に持続可能なビジネスアプローチを定着させるためにも、このプログラムを採用することは非常に良い相乗効果につながると考えています。エコバディス プラットフォームは、各企業がそれぞれの目的、特定の国、特定の市場における優先事項のために採用し、利用できるテンプレートであり、各企業にローカルオーナーシップを与えてくれる点が非常に気に入っています。

2012年のことですが、ある一流通信事業者のお客様からサプライヤーとしてアンケートの依頼があり、その後、2社目も依頼がありました。私たちはすぐに、エコバディス プログラムに参加することの利点を実感しました。このプログラムはCSR評価のプラットフォームとして非常に有名で、他のお客様からも当社の評価を見たいと言われるようになりました。さらに、良い結果が出たことで、このことをもっと広くお客様に伝えたいと思うようになりました。
現在、サステナビリティ評価は私たちのマネジメントシステムの一部となっており、活動、プログラム、トレーニング、監査、認識、レビューの年間サイクルの最後に計画されています。香港証券取引所の市場はサステナビリティに関して非常に厳しいので、これはIPOの際にも非常に役に立ちました。以前からさまざまな取り組みを行っていましたが、エコバディス 、それらを構造化し、お客さまのために価値を創造することを支援しました。

【ビジネス英語】従業員評価を英語で書く方法(例文付)

You take パフォーマンスレベルの評価手順 your performance goals seriously, and you implement clear plans for achieving objectives.

You have a good understanding of how to reach your goals, and you request the resources you need to accomplish objectives.

Communication

You present points thoughtfully during team meetings, and you excel at applying the feedback you receive during in-person discussions.

You provide clear written instructions, and you パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 always respond to emails promptly.

Learning

You quickly acquire new skills and techniques.

You adapt well パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 to changing environments.

Work ethic

You demonstrate a strong work ethic and often exceed expected productivity levels.

You overcame several significant challenges this year, showing your resilience and commitment.

Leadership

You manage projects and teams effectively, always ensuring that tasks remain on schedule and under budget.パフォーマンスレベルの評価手順

You serve as an excellent role model for your team, regularly demonstrating your strong work ethic and capacity to work as part of a team.

Teamwork

You never hesitate to assist team members when they need help navigating a challenge or resolving an issue.

You excel at delegating tasks to others, but you sometimes refuse to let other team members assign projects.

Innovation

You have a strong understanding of standard approaches, but you never hesitate to パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 try experimental methods.

You maintain a strong sense of curiosity that enables you to think パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 creatively.

Recommendation: Rodrigo has been an invaluable member of the team throughout the past year. He continually motivates his coworkers and works hard to make sure we meet deadlines. Sometimes, Rodrigo tries to manage too many leadership projects. I would recommend he attends Georgia Flooring’s teamwork workshop in February. Based on his performance, I believe Rodrigo deserves a 5% raise.

プリンシプルオブプログラミング 個人的重要箇所

前提、原則、思想、習慣、視点、法則、などのことをプリンシプルという。 プリンシプルを身につけると、なぜその技術が必要なのか、が理解することができる。 プリンシプルとは普遍的な知識であり、様々な技術に対して当てはめることができ、エンジニアの土台としての知識になる。プリンシプルは抽象的なものであり、大きな原則になる。
ときにはプリンシプル同士の主張が相反するものになる。その場合にはより良い解になるよう、状況に応じて判断する。

1章 前提

1.1 プログラミングに銀の弾丸はない。

ソフトウェアには複雑性、同調性、可変性、不可視性の4つの困難性を示す性質がある。 ソフトウェアは概念の集積であり、製品そのものやプロセス、意思決定の経緯なども見ることはできない。図面にされていても、情報は捨象されている。

本質的、偶有的
物事には本質的なものと偶有的なものがある。本質的なものとはそれがないと対象物とは言えなくなる性質のもの、偶有的なものはそれがなくても対象物が成り立つ性質のもののこと。
偶有的なものは容易に改善がしやすい。偶有的なものは自動化などで効率化し、本質的なものに多くの時間が避けるようになると好ましい。

1つのツールや技法が全てに当てはまるということはない。地道にソフトウェアの歴史や手法、考え方を学び複雑さを軽減することが大事。

1.2 コードは設計書である

ロゼッタストーン
ロゼッタストーンは継続的なプログラミング活動において重要と思われるドキュメント、将来の保守担当者に対する簡潔な手引書。ソフトウェアの開発環境を理解するための情報と、ソフトウェアのアーキテクチャを理解するための情報を記述する。ソフトウェアの開発環境の情報はビルドとテストを実行する方法を記述する。ソフトウェアのアーキテクチャはコードからは読み取れない全体像などのコード全体を俯瞰して見た図を記述する。
コードから読み取れないWhy(コードにはHow, Whatが含まれている)、設計理由をドキュメントに残しておくと修正の判断材料として役立つ。

1.3 コードは必ず変更される

コードは無常であり、変更されるもの。変更に強いコードにするためには、コードが読みやすいということがもっとも大切。コードは書いている時間よりも読んでいる時間の方がはるかに長い。書くのにどれだけ時間がかかっても、読む時間を短縮できるなら十分にもとを取ることが可能。

2章 原則

2.1 KISS

less is more
より少ないことはより豊かなことである。余分なコードを書かないことによってコードをシンプルに保ち、様々な問題を回避することができる。もとは建築分野の言葉で、表層的要素や内的な要素を減らし、単純化すること、様々な外的要因耐えうる建築物が計画でき、より豊かな空間が生まれるという思想。

2.2 DRY(Don't repeat yourself)

コードに重複があるとコードを読む作業が難しくなる、コードを修正する作業が難しくなる、テストがない等の困難が発生する。重複のあるようなコードはたいていがレガシーコードであり、テストがない。

インピーダンスミスマッチ
オブジェクト指向とRDBでは抽象化スタイルが異なる。このような場合にコードを作成するとやむをえないDRY違反になるこのようなものをインピーダンスミスマッチという。情報は一箇所にまとめて他の情報を自動生成する仕組みを作ると情報を一元化することもできる。

WET
DRYに対して同じことを繰り返しているコードのことをWETという。

レガシーコード
レガシーコードというと昔のコードという意味になるが、テストによる品質保護の観点からテストのないコードをレガシーコードと言うようにもなった。テストのないコードは悪いコードになるという観点から、レガシーコードと相対することになったときにはエレガントでなくてもまずはテストコードを用意し、修正を行うことが品質を守る上で必須になる。

2.3 YAGNI(You aren't going to need it)

2.4 PIE(Program Intently and Expressively)

コードは書かれることよりも読まれることのほうがずっと多い。よって、書く効率よりも読む効率が優先されることになる。読みやすければ、書くときの効率が多少落ちても、それに見合うだけの価値がある。読みやすさが最優先。

2.5 SLAP(Single Level of Abstraction Principle 抽象化レベルの統一)

コードを書くときに高いレベルの抽象化概念と低いレベルの抽象化概念を分離するようにする。複雑さに応じて多階層に分離する。すると、コードに要約性閲覧性が生まれる。関数の一覧が目次のようになり要約性を持ち、分割された関数は小さなコードの塊になり閲覧性がよくなる。

複合関数
構造化された関数は自身より一段レベルの低い関数を呼び出す処理が中心となる。このような関数を複合関数という。 コードを読んでいて抽象度が急に変わると理解がしにくくなる。

SLAPは文章を書くときの手順が参考になり、内容を書くこと内容をわかりやすく伝えるための構成を考えることを別の作業にする。これをコードを書く際にも当てはめる。

  • 序盤. ファイルの先頭コメント。コードの記述内容を説明し、どのプロジェクトに属するものであるかの説明をする。
  • 目次. 関数の一覧。目次であるがゆえに、先頭に全ての関数リストを記述すべきという考え方もあるが、エディタの機能が発達しているため、遵守する必要はない。
  • セクション. ファイル内の関数を論理的にいくつかのグループに分類できる場合などは、複数の大きなセクションに分割する。セクションの区切りの防波堤コメントを区切りに使うと効果的。コードの量が多くなるときはファイル単位で分割する。
  • 章. 書籍の章は人ひとまとまりの内容に適切なタイトルをつけたもの。コードでは関数に値する。
  • パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順
  • 段落. コードブロックに値する。改行や、空白の区切り、インデントなどにあたる。
  • 文 コード1つ1つのステートメントにあたる。できるだけ短く簡潔に。
  • 相互参照・索引. コード上で相当するものはないので、エディタの機能が担う領域。

2.6 OCP(open-closed principle)

コードは、ソフトウェアを生き続けさせるために、コードの振る舞いを拡張できるという拡張に対して開いている という性質とコードの振る舞いを拡張してもその他コードは影響を受けないという修正に対して閉じているという2つの属性を同時に満たすように設計する。これらを満たしているコードを柔らかい設計という。変更に対して柔軟に対応できない設計を硬い設計といい、脆い設計になってしまう。

2.7 名前重要

  • 多くの情報を入れる
  • 誤解されることのないようにする
  • 手段ではなく効果と目的を説明する
  • 名前を自分自信でチェックしたい場合には処理を書く前にそのテストを書くようにする(コードの使用者側の視点で考えられるようになる)
  • 日常会話で使いやすいよう発音可能なものにする
  • 検索可能なものにする

メンタルマッピング
ある情報から記憶の中のあるべき姿のイメージに変換することをメンタルマッピングという。メンタルマッピングが発生すると読み側の負担になってしまうため、一目でわかるような命名をする。

ループバックチェック
説明→名前→説明の順番にチェックし、説明から名前、名前から説明の説明、推測ができるかをチェックする。

3章 思想

3.1 プログラミングセオリー

3.2 コミュニケーション パフォーマンスレベルの評価手順 プログラミングセオリーを支える3つの価値①

3.3 シンプル プログラミングセオリーを支える3つの価値②

3.4 柔軟性 プログラミングセオリーを支える3つの価値③

3.5 結果の局所化 プログラミングセオリーを実現する6つの原則①

3.6 繰り返しの最小化 プログラミングセオリーを実現する6つの原則②

3.7 ロジックとデータの一体化 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 プログラミングセオリーを実現する6つの原則③

ロジックとそのロジックが操作するデータはお互いに近くに置くようにする。
これらはコードを修正する際に同じタイミングで変更されるため、コードを読む量が減り変更コストが抑えられる。
ただし、どのロジックとデータを近づけたほうがいいのかのベストな解は最初からはわからないため、仮配置して後から適切な場所に移すのが効率的。コードを書いて動かしてから徐々にわかってくること。試行錯誤の中で明らかになる。

3.8 対称性 プログラミングセオリーを実現する6つの原則④

3.9 宣言型の表現 プログラミングセオリーを実現する6つの原則⑤

3.10 変更頻度 プログラミングセオリーを実現する6つの原則⑥

単一責任の原則
変更理由が複数あるということは責任が複数あるということ。他の箇所に影響を与える脆いものになってしまうので、そのようなモジュールは作ってはならない。

3.11 アーキテクチャ根底技法

  • 抽象化
  • パッケージ化
  • 関数の分離
  • 充足性、完全性、プリミティブ性
  • ポリシーと実装の分離
  • インターフェースと実装の分離
  • 参照の一点性
  • 分割統治

3.12 抽象 アーキテクチャ根底技法①

抽象とは概念的に線引きを行うこと。抽象は捨象一般化の観点からまとめられる。

捨象
複雑な対称からいくつかの性質を捨て去り特定の性質に目を向けること。

一般化
具体的な対称から共通の性質を抽出し、汎用的な概念に定式化すること。

3.13 カプセル化 アーキテクチャ根底技法②

  • コードが見やすい
  • 変更時の影響がモジュール内で済む
  • コードの変更が容易
  • 再利用性が高い
  • 小さい単位で分割されるので複雑な問題に対処できる

3.14 情報隠蔽 アーキテクチャ根底技法③

パルナスの規則
モジュールの利用者は、モジュールを利用するために必要な全ての情報を与え、それ以外の情報は一切見せないこと
モジュールの作成者は、そのモジュールを実装するために必要な情報を与え、それ以外の情報は一切見せないこと。

3.15 パッケージ化 アーキテクチャ根底技法④

モジュールを意味のある単位にまとめグループ化したものをパッケージと呼ぶ。ソフトウェアが大規模になってくるとモジュールが大量になりそれ自体が複雑になってしまう。そのため、パッケージ化が必要

3.16 関心の分離 アーキテクチャ根底技法⑤

アスペクト指向プログラミング
横断的関心をうまく分離する技術のこと。結合ルールによって自動的に後から組み込むことで関心の分離を実現している。

3.17 充足性、完全性、プリミティブ性 アーキテクチャ根底技法⑥

3.18 ポリシーと実装の分離 アーキテクチャ根底技法⑦

ソフトウェアの前提に依存するポリシーモジュール、ソフトウェアの全体に依存しない独立したロジック部分の実装モジュールがあり、ポリシーと実装はわけるようにする。分離が不可能である場合には明確にわかるよう表現する。

3.19 インターフェースと実装の分離 アーキテクチャ根底技法⑧

3.20 参照の一点 アーキテクチャ根底技法⑨

副作用のないプログラミングをするために、定義は一度きりにする、変数に対して再代入をしない単一代入を行う、極力定数を使い変数に対しては極力アクセスするロジックやスコープを減らす、関数は渡された引数のみに作用する等のことをする。

参照透過性

  • 呼び出しの結果が引数のみに依存すること
  • 呼び出しが他の機能の動作に影響を与えない(その後の処理の結果に影響を与える副作用をがない)

3.21 分割統治 アーキテクチャ根底技法⑩

3.22 アーキテクチャ非機能要件

非機能要件で設計
要件定義においてそれぞれの観点についてどの程度必要とされるのかを確認、アーキテクチャの設計の時点で要件を考慮に入れた構造を考え、テストで要件を満たしている確認する工程を踏みアーキテクチャ設計を非機能要件を考慮したものにする。

非機能のテスト
機能のテストではwhatに注目し、非機能のテストではHowに注目する。非機能テストは機能テストと同程度に重要。非機能テストにも合格基準を設けることが必要。

セキュリティ非機能要件 重要な非機能要件の1つにセキュリティがある。

3.23 変更容易性 アーキテクチャ非機能要件①

保守性、拡張性、再構築、移植性の側面からアーキテクチャを設計するようにすることが大事。

ソフトウェアエージング
ソフトウェアは経年劣化する、年を取るという考え方をソフトウェアエージングという。 正確なドキュメント化、変更時にアーキテクチャを壊さないこと、真摯なレビュー、変更箇所を予測した柔軟な設計などの対抗手段を駆使しソフトウェアエージングの速度を落とす。

3.24 相互作用性 アーキテクチャ非機能要件②

3.25 効率性 アーキテクチャ非機能要件③

時間効率性
時間という観点からリソースの使用効率を定義したもの。

資源効率性
コンピューター資源という観点からリソースの使用効率を定義したもの。

3.26 信頼性 アーキテクチャ非機能要件④

信頼性とはソフトウェアが例外的な場面、予期しない方法や不正な方法で使用されても機能を維持する能力のこと。信頼性にはフォールトトレランスロバストネスという2つの側面がある。

フォールトトレランス
ソフトウェアに障害が発生したときに正常な動作を保ち続ける能力。

ロバストネス
不正な使用方法や入力ミスから、ソフトウェアを保護する能力。フォールトトレランスと違い、内部的な修復は必ずしも要求しない。ソフトウェアを定義された状態に移行することを保証する。

3.27 テスト容易性 アーキテクチャ非機能要件⑤

テスト容易性とは、ソフトウェアに対して効果的かつ効率的にテストを行う能力のこと。

ソフトウェアは複雑になってくるとテストも難しくなってくるため、テストを容易にするアーキテクチャが求められてくる。
テストコードは本番コードに従属するイメージだが、テストコードが本番にあってもよい。テストをしやすくするための構造が本番コードにあってもという価値観の転換が必要。
テスト容易性のための設計ではモジュール間の依存関係の排除がポイントになる。

3.28 再利用性 アーキテクチャ非機能要件⑤

再利用性とは、全体でも一部でも別のソフトウェアの開発に再利用する能力のこと。
再利用するソフトウェア開発再利用のためのソフトウェア開発がある。

再利用するソフトウェア開発の場合はソフトウェアを既存のモジュールから組み立てるソフトウェア・コンポジションを支援するため、アーキテクチャの構成を既存の構造やモジュールのプラグインできるようにする。

再利用の3の法則

難易度3倍の法則. 再利用可能なモジュールを作るのは単一のソフトウェアで使うモジュールを開発する場合に比べ、3倍難しい。

テスト3種類の法則. 再利用可能なモジュールは共有化する前に3つの異なるソフトウェアでテストする必要がある。

3.29 7つの設計原理

3.30 単純原理 7つの設計原理①

3.31 同型原理 7つの設計原理②

3.32 対称原理 7つの設計原理③

set/get, start/end などのような命名規則も守ることにより、対称性を保つことができる。

3.33 階層原理 7つの設計原理④

3.34 線形原理 パフォーマンスレベルの評価手順 パフォーマンスレベルの評価手順 7つの設計原理⑤

3.35 明証原理 7つの設計原理⑥

3.36 安全原理 7つの設計原理⑦

3.37 UNIX思想

3.38 モジュール化の原則 UNIX思想①

3.39 明確化の原則 UNIX思想②

3.40 組み立て部品の原則 UNIX思想③

3.41 分離の原則 UNIX思想④

ポリシーメカニズムを分ける。

  • サービス系アプリケーション. フロントエンドがポリシー、バックエンドがメカニズム。
  • エディタアプリケーション. ユーザーへのインターフェースがポリシー、エディタのエンジンがメカニズム。

3.42 単純性の原則 UNIX思想⑤

コードはシンプルにする。カタログスペックが上がるように機能を増やす考え方をやめる。シンプルを美しいとする文化

3.43 倹約の原則 UNIX思想⑥

3.44 透明性の原則 UNIX思想⑦

ソフトウェアの動作を外からわかりやすくなるように設計する。
透明性. ソフトウェアに動作が一見してわかるようにすること。
開示性. ソフトウェアの内部状態を監視または表示すること。

3.45 安定性の原則 UNIX思想⑧

3.46 表現性の原則 UNIX思想⑨

3.47 驚き最小の原則 UNIX思想⑩

3.48 沈黙の原則 UNIX思想⑪

3.49 修復の原則 UNIX思想⑫

3.50 経済性の原則 UNIX思想⑬

3.51 生成の原則 UNIX思想⑭

3.52 最適化の原則 UNIX思想⑮

3.53 多様性の原則 UNIX思想⑯

3.54 拡張性の原則 UNIX思想⑰

3.55 UNIX哲学

3.56 小は美なり UNIX哲学①

3.57 1つ1仕事 UNIX哲学②

3.58 即行プロトタイプ UNIX哲学③

前提の誤りを早期に発見できる、要件不備による手戻りを減らせる、早いうちから誤りを取り除く作業を始められる等のメリットがあるため、できるだけ早くプロトタイプを作る。最初から完全なソフトウェアを書くことは不可能なため、継続的な改善作業が必要。

第3のシステム
人間は全てのシステムにおいて第1のシステム、第2のシステム、第3のシステムをリリースしていくことになる。

第1のシステム. 性能は高いが、必要な機能が欠けている。
第2のシステム. 機能は多いが、性能が犠牲になっている。
第3のシステム. 両者の最適なバランスの取れた必要な機能だけが備わっている。

3.59 効率性より移植性 UNIX哲学④

ソフトウェアの設計は選択の連続である。移植性と開発効率性という二律背反の選択に迫られたとき、優先すべきは移植性

3.60 データはテキスト UNIX哲学⑤

3.61 レバレッジ・ソフトウェア UNIX哲学⑥

よいプログラマはコードを書く。偉大なプログラマはよいコードを借りてくる
自分の仕事に他人に成果を取り込むことで、投資を少なく大きな収入を生み出す。レバレッジがかかる。

3.62 シェルスクリプト活用 UNIX哲学⑦

てこの効果
シェルスクリプトを使用して他のソフトウェアやコマンドをつなげる。

移植性
シェルスクリプトはインタプリンタなので、コンパイル言語に比べ移植性が高くなる。
シェルスクリプトはグルー言語として使用し、小さなソフトウェアをつなげて大きなものにする。

3.63 対話インターフェース回避 パフォーマンスレベルの評価手順 UNIX哲学⑧

3.64 フィルタ化 UNIX哲学⑧

90%の解(UNIX小定理)
どんなことであれ100%で物事をこなすのは困難。そのため、ユーザーが90%で満足することを目指し、残りの10%は自分でどうにかしてもらおうという考え方をするとバランスがよくなる。

4章 視点

4.1 凝集度

レベル1 暗号的強度
暗号とは偶然に物事が一致するという意味。たまたまモジュール内に重複している命令群のパターンがあったので、統合して1つのモジュールにするなどのケース。

レベル2 論理的強度
ある機能を抽象的に捉えてまとめたもの。関連したいくつかの機能を含み、そのうちの1つだけがモジュールによって識別され(論理)、実行されるモジュールのこと。内包される命令群の関連性は弱いため、モジュール強度は下がる。

レベル3 時間的強度
特定の時点に連続して実行する複数の機能を1つのモジュールにまとめたもの。代表的なものは初期処理モジュール。

レベル4手順的強度
問題を処理するために関係している複数個の機能のうちいくつかを実行。複数機能な順番(手順)に実行される。複数機能の1つだけといった使い方ができなくなる。

レベル5連絡的強度
基本的には手順的強度の特性を持つ。モジュール愛機能間でデータの受け渡し(連絡)をしたり、同じデータを参照する点が異なる。

レベル6: 情報的強度
特定のデータ構造を扱う複数の機能を1つのモジュールにまとめたもの。論理的モジュールと違い一口点が複数あり、各々が固有のパラメーターをもつためパラメーターの扱いにくさを解消できる。

レベル7: 機能的強度
モジュール内の全ての命令が1つの役割(機能)を実行するために関連しあっているモジュール。変更理由が他のモジュールとも共通の事情による変更の可能性が高くなる。

4.2 結合度

レベル1 内部結合
モジュールとモジュールが一部を共有するようなモジュール結合。

レベル2 共通結合
共通域に定義したデータをいくつかのモジュールが共同使用するような結合形式。

レベル3 外部結合
外部宣言したデータを共有したモジュール間の結合形式。public宣言された変数など。

レベル4 制御結合
呼び出し側のモジュールが呼び出されるモジュールの制御を指示するデータをパラメータとして渡す結合形式。相手をブラックボックス化しにくいので結合度が強くなる。

レベル5スタンプ結合
共通域にないデータを2つのモジュールで受け渡しする結合形態。データ構造はパラメーターを介す。受け渡すデータの一部を使用しないこともあり、不必要なデータが生まれてしまう点が結合度を強くしている。

レベル6 データ結合
モジュール感のインターフェースとしてスカラ型のデータ要素をパラメーターとして受け渡す結合形式。相手モジュールをブラックボックス化できるので結合度は一番弱くなる。

ハイブリッド結合
ハイブリッドに戻り値が変わってしまう関数などは、使用者側が意識して使用しなければならないため、結合度がやや高い

4.3 直交性

リレーションの直行性
リレーショナル・データベースで正規化と同じぐらい重要なリレーションの直交性という概念がある。複数のリレーションに間の重複に関する概念。データベース全体から重複をなくしていくこと。

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる