TECH PLAY

AGEST

AGEST の技術ブログ

474

この連載では、ITエンジニアにとって親和性が高く「スキルアップしたい」と思う方にとっては役に立つであろう知的生活について、いろいろなアクティビティやツール、仕事での活用方法などについてご紹介します。知的生産・知的生活の考え方や、「そもそも知的生活とはどうあるべきか」等の話ではなく、できるだけエンジニアの普段の生活や仕事に役立てられるテクニックよりの話をするつもりです。 前回 の記事では、技術書以外の本も積極的に読み、そこから得られた情報を知的生活の母艦に蓄積して活用すること等について解説しました。 【第3回】技術書以外の本を読み、仕事に活かすには この連載では、ITエンジニアにとって親和性が高く「スキルアップしたい」と思う方にとっては役に立つであろう知的生活について、いろいろなアクティビティやツール、仕事での活用方法などについてご紹介します。知的生産・知的生活の考え方や、「そもそも知的生活と...  続きを読む  Sqripts 関連記事|Sqripts 今回は、仕事の中で得られる情報や作業の記録についてご説明します。 <ITエンジニアの仕事を楽しくする知的生活 記事一覧> ※クリックで開きます 【第1回】知的生活とはなにか?エンジニアにどう関係するのか [全文公開中!] 【第2回】知的生活の母艦としてのツールを選び、活用する 【第3回】技術書以外の本を読み、仕事に活かすには 【第4回】デイリーページを用いて日々の作業を記録する 仕事においても知的生活はできる 本連載のこれまでの記事は、どちらかといえばプライベートな時間における、読書やアイデアの蓄積などが中心でした。 しかし、知的生活はプライベートな時間だけのものではありません。平日日中の仕事をしている時間にも、知的生活は可能です。 むしろ 第一回 でご説明した知的生産、 アウトプットである「なにかあたらしい情報や価値」を出すために、いろいろなインプット=情報をあつめて、自分の頭やいろいろな道具を使って処理=思考をする これを生活の中に組み込むのが知的生活であるという考えに基づけば、生活の多くの割合を占める仕事中も知的生活の範囲に含まれるのは自然なことです。 【第1回】知的生活とはなにか?エンジニアにどう関係するのか みなさんは、知的生産や知的生活ということばを聞いたことはありますか?初めて聞いた、という方はもしかしたら「堅そう」とか「えらそう」といった印象を持つかもしれません。ところが、私はこの知的生産・知的生活は「ITエンジニア皆に知っておいてほしい」と考え...  続きを読む  Sqripts 関連記事|Sqripts 仕事中に集める情報 とくにITエンジニアの皆さんは、プライベートな時間よりも仕事中のほうがたくさんの情報をインプットし、そして頭の中で処理をしているのではないでしょうか。 大量に流れてくる情報は何もしなければ失われてしまいますが、意識的に収集・整理することで自分の資産として活用できます。 私も昔 自分用の「仕事の教科書」をつくりながらはたらこう – テストウフ というブログ記事を書きましたが、ナレッジを残してあとから使えるようにする、というのはさまざまなことに共通する基本の考え方です。 こうした、情報の残し方に関してもいくつかのテクニックがあります。 たとえば、Today I Learned、略してTILと呼ばれる方法です。 Today I Learnedとは、その名の通り「今日学んだこと」を記録していくものです。 媒体は自由ですが、たとえばGitHubに「TIL」というリポジトリを作り、その中に「Python」や「Docker」「Git」など技術要素ごとのフォルダーを作ります。 そして、フォルダーの中に学んだことをMarkdown形式でメモしていく、という手法です。 単純に調べ物をして終わりではなく自分用にアウトプットすることで、記憶を定着されたり、また次以降「TILに書いていた」ということさえ覚えておけば検索をかけて素早く情報を引き出すこともできます。 TILは基本的に「自分用」で、かつ複雑な管理ルールもないため、気軽に始めるにはよいでしょう。 ただ、今回はこのTILのようなナレッジの蓄積とは少し異なる、日々を記録してふりかえりを行う「デイリーページによる作業ログ」についてもご紹介したいと思います。 デイリーページによる作業ログ TILなどにナレッジを残す場合には「残すべきものがあれば残す」という考え方になるでしょう。 一方ここでオススメしたいのは、「何を残すか」を考えるのではなく、とにかく記録を書きつけるという方法です。 大まかな流れは以下です。 朝仕事を始める際に、エディター等でその日の日付をタイトルにしたページ=デイリーページを作成する デイリーページに、今日やることをリストアップする 仕事をしながら、デイリーページの中に行ったことや考えたこと、わからないことなどを時系列で書いていく 基本的にはこれだけ、です。もし職場のタスク管理ツールなどで「今日やること」を管理している場合は、デイリーページに転記してもいいですし、デイリーページには書かずにツール側で管理してもいいでしょう。とくに大事なのは「やったことや考えたことを時系列で記録する」という部分です。 なお、このやり方は知的生産に関連する「ユビキタス・キャプチャー」というもののエッセンスを取り入れたものです。 参考: 「全てを手帳に記録する」、ユビキタス・キャプチャーの実践 | Lifehacking.jp デイリーページのサンプル このあとデイリーページのメリットや作業ログの書き方を説明しますが、先にどのようなものかサンプルをお見せします。 普段使っているエディター(ここではvscode)で、日付を名前にもつファイルを作成します。私はMarkdownが好きなのですが、.txtや他の形式でも、慣れたものがあればそれでかまいません。 また、過去に所属していたチームの朝会で直近あった良いことを紹介しあうGood&Newというコーナーがあったので、そのメモや今日やるタスクを列挙しています。このあたりのフォーマットや項目も、デイリーページを運用しながら少しずつカスタマイズしていくのが良いでしょう。 メインとなるのは、下部の「作業ログ」の項目です。 ここに、時刻とともにタスクのおおまかな見出し(例では「自動テストエラー対応」)を書き、そのしたにタスクを行う過程で考えたことや調べたこと、メモなどを並べていきます。 とくにエラー対応やトラブルシュートなどを行っている際には、独り言をつぶやくように書いていくと、頭の中を整理しながら思考することができるため便利です。 他にも、仕事中になにかを調べた場合はそこでヒントになったWebページのURLを記載したり、誰かからSlackやTeamsで質問された場合の内容や回答なども記録しておきます。 このように、仕事中の脳内をできるだけ余さず書きつけておくようなイメージで作業ログを書いていけるとベストです。 作業ログを書くメリット 上記の説明の中で、頭の中を整理できる、というメリットを挙げました。他にもいくつか考えられます。 たとえば、将来似たようなタスクや同じような問題に取り組む際のヒントになること、です。皆さんは仕事中に「あー、前似たような問題あって対処したなぁ・・・どうやったんだっけ・・・」と困ったことはないですか?私も数え切れないほどあります。 だいたいこのような場合は当時の記録が残っていなかったりして、記憶を頼りにGoogleや社内のファイルを検索して時間を溶かしていくことになります。 しかし、デイリーページに記録したということを覚えていれば、デイリーページの入ったフォルダーを検索すれば良いので目当ての情報にたどり着く手間が少なく済みます。 また、作業ログの形式で書くことによって、ナレッジの整理と実タスクの進行とを分離することができます。 仕事中の知見を社内のWikiやナレッジベースにまとめている方も多いでしょう。しかし、目の前のタスクを進めながらナレッジベースに情報を整理する、というのはなかなか大変です。私も経験があるのですが、なにかのタスクをしながら整理したナレッジというのは情報の順番が前後したり整理されていなかったりして、読みづらい状態になりがちです。 一方「あとでナレッジをまとめよう」と思って仕事に集中していると「あとで」が永遠に来なかったり、運良く時間が作れたとしても書くべき内容を忘れてしまっていたりと、こちらも効果的ではありません。 そこで作業ログの出番です。タスクをやっている最中は、構成や見栄えなどは考慮せずとにかく「記録・メモ」をする。そして、あとから記録・メモをもとにナレッジベースに整理する。 こうした二段構えで行うことで、業務効率と情報の内容を両立させることが可能です。 他にも細かなメリットとしては、日報や週報、ふりかえりの材料としても使える点などがあります。 作業ログを書く際のコツ これらのメリットを享受するためには、まずはとにかく作業ログを書くことが大事です。書き方やフォーマットなどは人によって好みがありますし、基本的にはどのような内容をどのように書くかは自由です。 しかし、自由な中でも一つだけ心がけるべき点があります。それは、 メモ・記録の手間をできるだけ少なくする ことです。 ここで言う手間とは、操作手順などのことだけではありません。頭で考えたり意思決定することも、手間に含まれます。たとえば、メモのルールや書く場所が複雑になって「ええと、この内容はどこに書こうかな・・・」とつど考える必要があるようではメモやログは続きません。 デイリーページに時系列で作業ログをとる一番のメリットは、この思考の手間を減らせることです。 今日日付のファイルの末尾に作業中のメモを追加していく、というシンプルなルールなので迷わずに済みます。 また、作業ログをとることを始めると必ずぶつかる壁が「何も書かない/書けない日がある」こと、です。会議が多い日であったり、作業に集中してログをとるのを忘れてしまった、などは起こり得ます。 この問題に対しては、 気にしない のが一番です。作業ログは毎日書くのが理想ですが、逆に毎日書かなければ意味がないもの、でもありません。 本記事冒頭の繰り返しになりますが、大切なのは アウトプットである「なにかあたらしい情報や価値」を出すために、いろいろなインプット=情報をあつめて、自分の頭やいろいろな道具を使って処理=思考をする という知的生産を、日常の中に組み込んでいくことです。 最初のうちは頻度が少なくても仕方がないですし、もし難しければ「エラー対応だけは作業ログをとる」や「朝9時から10時の集中タイムはログをとる」など、対象や時間を絞って始めるのも良いかもしれません。 少しずつでもよいので、インプット=情報を集める習慣付けをしていくと、後々のアプトプットにつながっていきます。 まとめ 今回は主に仕事中の作業の記録についてご紹介しました。 学んだことや知見をトピックごとにまとめるのも良いですが、個人的にはデイリーページに作業中の考えや行ったことなどをメモすること=作業ログをつけることがオススメです。情報を整理しながら蓄積するのは大変なので、作業ログとして蓄積することと、あとから作業ログを整理して情報として残すこととに分けて行うのが良いでしょう。 次回は蓄積した記録をもとにどのようにアウトプットし、仕事に活かしていくのかについて解説します。 ITエンジニアの仕事を楽しくする知的生活 連載一覧 【第1回】知的生活とはなにか?エンジニアにどう関係するのか [全文公開中!] 【第2回】知的生活の母艦としてのツールを選び、活用する 【第3回】技術書以外の本を読み、仕事に活かすには 【第4回】デイリーページを用いて日々の作業を記録する The post 【第4回】デイリーページを用いて日々の作業を記録する first appeared on Sqripts .
こんにちは、ツヨシーサーです。   「何から考えればよいか分からない。」 「考えが頭の中でぐるぐる回ってまとまらない。」 「表面的にしか考えられない。」 皆さんに思い当たる節はありませんか?お恥ずかしながら、最近もこんなことがありました。例えば、スマホ・アプリの新サービスを企画する際にアイデアを考えることが出来なかったり、課題の解決策を検討したものの網羅的に考えることが出来なかったりしたことがありました。そんな悩みを解決できるかもしれない書籍に出会いましたので、その本からエッセンスを抽出して皆さんにお伝えいたします。思考のメカニズムを深く理解することで、より効果的な判断や意思決定に役立てて頂ければ幸いです。 [参考文献] 『思考・論理・分析「正しく考え、正しく分かること」の理論と実践』 波頭 亮 著 思考のメカニズム 「思考」とは、『思考対象に関して何らかの意味合いを得るために、頭の中で”情報”(外から得られた情報)と”知識”(頭の中にすでに保有している情報)を加工すること』と定義されています。例えば、目の前に飛んできた小さな物体を観察した結果、身体の色は褐色で、大きな角があり、5cmほどの小さな生き物であるという”情報”から、自分の頭の中にある”知識”と照らし合わせてカブトムシであると判断することが「思考」ということになります。 その思考の核心は、『”情報”と”知識”を突き合わせて比べることであり、比べることにより、”同じ”部分と”違う”部分を認識し、その認識を基に判断や理解を得るプロセスが思考の本質』と整理されています。例えば、身体の色が褐色の昆虫がカブトムシであるかクワガタムシであるかを判断する際、角の有無といった情報を比べることで違いを見極めます。このように、『思考とは”情報”や”知識”を突き合わせて”同じ”か”違う”かを認識し、その認識を集積して理解や判断を得る行為』ということなのです。 思考ができない時は、理解や判断するために必要な”情報”や”知識”は足りているのか、”情報”と”知識”を突き合わせて比べて”同じ”と”違う”を認識できているのかということを疑ってみろということですよね。 思考のメカニズム(出典文書 ※1 ( P21)より筆者作成) 分かることは分けること 「思考」とは”同じ”と”違う”の認識作業になります。この認識の集積が思考のアウトプットとして、思考対象に関する理解や判断になるのです。この思考の仕組みとメカニズムは、『分かることとは分けること』とも表現されており、逆に言うと「分かっていないということは分けれていないこと」だと気付かされました。 例えば、身体の色は褐色で、大きな角があり、5cmほどの小さな生き物が目の前に現れた場合、その特徴を自分の持っているカブトムシの知識と照合します。これらの要素が一致した場合に、それはカブトムシであることが分かります。このように、『思考対象の”情報”と持っている”知識”を比べ、要素ごとに同じと違うに分けているのが思考作業』になります。そして、この思考作業を経て思考対象を構成する要素が”同じ”と”違う”に正しく分け尽くされた状態にたどり着くことが「分かる」ということなのですね。 分けるための3要件 それでは、思考対象の情報要素を正しく分け尽くすためには、どうすればよいのでしょうか?この本では以下の三つの要件を満たすことが必要であると書かれています。 ディメンジョンの統一 クライテリアの設定 MECEであること これらの3つの要件を満たして初めて、正しく分けることができ、正しく理解することが可能になるということですので、詳しく知りたいところですよね。 実体験として「ディメンジョンの統一」で困ったことはないのですが、「クライテリアの設定」では、スマホ・アプリの要件検討をしていた際に、機能面の切り口のみにフォーカスを当ててしまったため、体系的な検討が不足していたことがありました。また、「MECE」では、スマホ・アプリを利用するユーザの動線を検討していた際に、ユースケースの主要ケース以外の考慮漏れがあったため、設計の見直しを行ったという失敗談もありました。 ディメンジョンの統一 『ディメンジョンの統一とは、思考対象や要素を比較する際に、その抽象水準や次元を揃えること』を指します。これにより、適切かつ意味のある比較が可能になるということですね。 ディメンジョンが異なるもの同士を比べても適切な比較ではなく、正しく分けられたことにはならないので、注意しましょうね。 ディメンジョンの統一(出典文書 ※1 (P30)より筆者作成) クライテリアの設定 次に、『クライテリアとは、思考対象を分類する基準のこと』です。思考対象をどういう切り口で分けるのかを設定することは、その思考対象をどのように体系立てて分かるのかを決定付けることになるため、適切なクライテリアさえ設定できれば、思考対象を正しく理解し、判断することが可能になるということなのです。 前述のスマホ・アプリ要件検討の失敗時には、「クライテリアの設定」を活用して、機能面だけでなく、ユーザ目線での切り口も考慮して再検討を行ったところ、クライアントを説得することができました。 クライテリアの設定がしっくりこないときは、思考目的に合致したクライテリアになっているのかを確認してみてくださいね。 クライテリアの設定(出典文書 ※1 (P33)より筆者作成) MECEであること 最後に、『MECE(Mutually Exclusive Collectively Exhaustive)とは、モレがなくかつダブリがないこと』を指し、論理的な思考や分析において極めて有用なテクニックになります。MECEを用いることで、漏れや重複がない分類が可能になり、正確な分析や考察ができるというわけです。 前述のスマホ・アプリにおけるユーザ動線検討の失敗時には、「MECE」を活用し、ユースケースの90%を占める主要ケースだけでなく、レアケースの残りの10%も考慮しました。その結果、ユーザ動線の抜け・漏れがなくなり、設計レビューでレビューアからOKを頂くことにつなげることができました。 ただし、定性的な対象を分類する場合には数学的論理学的というより、MECE的な分類であれば十分みたいですよ。(MECEに分類するのが難しいケースって実際ありますよね…) MECE(出典文書 ※1 (P36)より筆者作成) さいごに 思考とは、情報と知識を突き合わせて比べ、”同じ”か”違う”かを識別するプロセスです。このプロセスを理解することで、より効果的な判断や理解が可能になります。また、「ディメンジョンの統一」や「クライテリアの設定」、「MECE」の活用により、思考の精度を高めることができます。ぜひ、日常生活やビジネスシーンでこれらの思考のテクニックを活用してみてください。 特に「クライテリアの設定」は私も普段から意識しているのですが、切り口のバリエーションをもっておかないと適切にクライテリアを設定できません。そのため、クライテリアの設定が上手な人、つまり、構造化思考で物事を考えるのが上手な人が皆さまの周りにもきっといらっしゃると思いますので、その人からノウハウを吸収するように心がけるのがお勧めです。 いかがでしたでしょうか? すこしでも皆さまの気づきになれたのであれば幸いです。それではまた。 ※1 波頭 亮 (著),『思考・論理・分析「正しく考え、正しく分かること」の理論と実践』,産業能率大学出版,ISBN:978-4-382-05541-4 なお、本文中の『』は出展文書からの引用 The post 考えることを考える first appeared on Sqripts .
こんにちは。最近、開発者⇒テストエンジニアとなりました、だいだいです。 早速になりますが、皆さんは「2038年問題」ってご存じでしょうか? え、「2000年問題」じゃないの? と思われる方もいらっしゃると思いますが、違います。「20”38”年問題」です。 今回は、昔大きく話題になった「2000年問題」よりも深刻になり得そうな「2038年問題」について、他の似たような事象を踏まえつつ説明していきたいと思います。 「2000年問題」について覚えていますか? かつて20世紀末の世間を大きく騒がせた「2000年問題」。30代以降の皆さんであれば覚えていらっしゃる方も多いのではないでしょうか。 軽く「2000年問題」について説明すると、当時のシステムでは年を西暦の下2桁で管理していたため、2000年を1900年として扱ってしまう……というものでした。 どれほど大騒ぎになったかというと、 2000年になった瞬間、あらゆるシステムが誤作動するのでは。航空機が墜落するのではという憶測が飛び交う。 世紀末ということもあり、ノストラダムスの大予言(1999年、7の月 空から恐怖の大王が降ってくる)と関連付けて、ミサイル誤発射から世界大戦勃発……という飛躍した噂が流れる。 結局は各企業が総出で対応を行い、2000年を迎えても大きな障害トラブルは発生せず平和に年明けを迎えることができたそうです。ただ念のため、正月は当番制で会社に出勤していたというお話も聞きました。(知り合い談) 今回のテーマである「2038年問題」という名前から、この「2000年問題」と似ていると思われるかもしれませんが、実は全然違う原因による問題だったりします。そこを含めて、出来るだけ丁寧に説明していきます。 前提知識 「2038年問題」は大雑把にいうとOSやシステムに深く関わる問題となります。そのため、出てくる専門用語を予め説明します。 UNIX時間 名の通りUNIX、Linux系OSのシステムで使われる時間データのこと。多くのシステム・プログラミング言語で採用されている。基準値「1970年1月1日0時0分0秒」からの経過秒数を保持しており、例えば「2024年1月1日0時0分0秒」なら基準時間から1704034800秒が経過したということ。 上記の基準時間はUTC(ロンドン基準)となっており、日本の場合はUTCから時差の9時間が進んだJSTを扱う。 int型 正式名称は「32bit符号付き整数型」で、名の通り32bit分の整数値を保持する箱のこと。マイナス値も格納できるため、値の範囲は「-2147483648〜2147483647」。 レガシーシステム IT用語で「過去の技術や仕組みで構築されているシステム」のこと。古いシステムのため利用された技術・仕組みについてブラックボックス(実態が不明)化しているシステムも多い。 ランタイムライブラリ プログラムの実行に必要な前提のプログラム、共通して利用できるプログラムを1つにまとめたモノのこと。共通して利用できるプログラムとしては数値計算などが挙げられる。身近なものならExcelの関数(SUM関数、MAX関数など)もランタイムライブラリに当てはまる。 「2038年問題」ってなに? UNIX時間をint型で保持している場合、その限界値が「2038年1月19日12時14分7秒」となる問題のことです。 「2038年1月19日12時14分7秒」から1秒でも経過すると、int型の限界値を超えてオーバーフロー(桁あふれ)を起こします。そうなるとint型の値が上限値「2147483647」⇒下限値「-2147483648」となります。 結果、「1970年1月1日0時0分0秒」から2147483648秒前の日時……つまり「1901年12月14日5時45分52秒(JST計算)」と扱われてしまうんですね。 ある日突然、システムの日時が「2038年1月19日」⇒「1901年12月14日」になってしまう。それがこの「2038年問題」なんです。 「2038年問題」は「2000年問題」より深刻になり得る 「2000年問題」はアプリケーションレベルでの修正が可能だったため、各会社の対応により無事に乗り切ることができました。しかし「2038年問題」は上記で説明した通り「UNIX時間」……つまり、アプリケーションではなくOS・プログラミング言語といった、システムの深い層に潜む問題となります。 システムの深い層の問題ということは開発会社であれば解決可能という訳にもなり辛く、対応するにしても重大なリスクが付き纏います。 こういった理由から、私は「2038年問題」をより深刻に捉えたほうが良いのではと考えました。 「2038年問題」の対策(開発者目線) オフィスコンピュータを始めとするレガシーシステムの多くが、この問題の対象となる可能性を秘めています。その対象と理由、対策方法について下記にまとめてみました。ただし、あくまで私個人の意見のため、参考程度にご覧いただけると幸いです。 対象システム 対策 理由 32bit版のUnix・Linux系OSを使用しているシステム OSを64bit版にするか、日時管理を64bitで保持するバージョンにアップデートする OSによっては日付型を32bitで保持しているため 日時計算を独自処理で行っているシステム 開発者がアプリケーションレベルの修正を行う 「2038年問題」を考慮していない(int型に格納など)可能性があるため C/C++などの古いランタイムライブラリを用いているシステム 「time_t」を使わないこと 古いランタイムライブラリは日付型を32bit符号付き整数型で保持しているため (C/C++の場合は特に「time_t」を利用しているアプリケーションが対象) 補足 なぜ32bit版のUnix・Linux系OSに限定しているかというと、32bit版のWindowsは「2038年問題」は発生しないためです。実はWindowsXPの時点で32bit版でも日付型を必ず64bitで保持するようになっているんですね。 日時計算を独自処理で行うシステムについてはアプリケーションレベルの修正となりますが、日時計算を独自で行うシステムの大半はレガシーシステムだと思われます。つまり処理自体がブラックボックス化している可能性があり、修正に対して相応のリスクはあります。 C/C++などの古いランタイムライブラリに関しても、上記のリスクに加えてそもそも有識者が少ない問題もあるため、修正に対するリスクは高いように思えますね。 「2038年問題」の対策(テストエンジニア目線) では品質管理を担保することが目的のテストエンジニアの場合、どのようなことを考慮すれば良いでしょうか。 1.設計ドキュメントレビューの観点として盛り込む これは早期に問題を発見できる、最適なアクションでしょう。例としてレビュー時に目を通すべき場所、問題発見時の対応について幾つか上げたいと思います。 実施環境OSの確認 記載されている実施環境のOSが引っかかっている場合は、まず起こり得る「2038年問題」に対する対策を行っているのか確認する必要があります。 対策を行っている場合は、対策の確実性を担保するため日付を取り扱う処理に対してのテスト優先度を高くできます。 対策を行っていない場合は、開発側が「2038年問題」を把握していないことを考慮し、問題の説明を行いつつ対応してもらえるよう促せます。 開発言語の確認 開発言語が古いランタイムライブラリを利用していることもあり得るため、確認はしたほうが良いでしょう。特に組込み機器はC/C++を多く利用しているため注意が必要です。 発見した場合はOSと同様、どういった対応を行っているのか確認する必要があります。ただ組込み機器の場合は、そもそも2038年までの使用を想定していないこともあり得ます。 2.探索的テストを利用する テスト実施を行う際に日付を「2039年」などにして、2038年以降の日時が処理できるか探索的テストをしても良いでしょう。特に業務システムは長期間使用を想定していることが多いため、ひとつの長期運用の品質担保になるのではないでしょうか (実際に20年以上使われているシステムがある ※実体験) 同様の問題について紹介 今回は「2038年問題」について詳しく紹介しましたが、実は他にも同様の問題がまだまだ潜んでいます。 2004年に起きた「2038年問題」 某通信事業会社にて「2038年問題」と同様の事象が2004年に発生しました。結果、日付(平日/休日など)による通話料金の計算処理に故障が発生し、大多数のユーザに対して割高/格安の通話料金を請求してしまいました。 2004年に「2038年問題」が起きた原因としては、システムの独自処理でUNIX時間の1秒=0.5秒に変換していたためです。その影響で本来より半分の時間で事象が発生しました。 「2036年問題」について コンピュータ時刻を同期するためのプロトコルである「NTP(Network Time Protocol)」が「2038年問題」と同様の理由でオーバーフローしてしまう問題のことです。 NTPの基準時間は「1900年1月1日0時0分0秒」。NTPサーバでは32bit符号なし整数型で保持しているため、4294967295後の「2036年2月6日0時54分54秒」でオーバーフローしてしまいます。 まとめ 「2038年問題」を始めとする「20XX年問題」は数多く存在します。その対象はレガシーシステムだけでなく、開発/運用中のシステムも含まれるかもしれません。特に業務関係で使うシステムは、長期稼働されることが前提となりがちです。 昨今のテクノロジー進化はとんでもなく速いことは、恐らく皆さんお気づきだと思います。何せ1980年にはショルダーフォンが生まれ、1990年代には携帯電話(ガラケー)が普及し、2000年代後半ですでにスマホとなっています。 現代ではSF世界の話だと思っていた量子コンピュータの実現が現実的となり、2030年代にはビジネスに利用され始めるとの話もあります。丁度「2038年問題」に直撃してるころ、量子コンピュータはビジネスシーンで利用されているかもしれない、ということですね。 上記の通り、IT業界は技術の進歩が非常に激しい業界です。そのテストエンジニアとして、私たちは将来的に起こりうるリスクも視野に入れて品質課題を捉える必要性があります。この「2038年問題」をきっかけに、その気付きを少しでも得ていただけたら幸いです。 The post 今のうちに知っておこう。2038年問題 first appeared on Sqripts .
ソフトウェア開発の世界では、アジャイル開発やスクラムが一般的になってきました。そのアジャイル開発のコアとも言えるのが、対話や協調です。この連載では、アジャイル開発におけるコミュニケーション・コラボレーションスキルを解説しながら、ファシリテーションスキルのレベルアップを目指します。 今回のテーマは「コーチング」。その中でも「質問」について深掘りしていきます。 <スクラムマスターのためのコミュニケーション講座 連載一覧> ※クリックで開きます ・ #イントロダクション:優れたスクラムマスターが絶対に言わないこと 【連載初回、全文公開中】 ・ あなたの提案はなぜ受け入れられないのか?|ファシリテーション技術-1- ・ よりよい場を作るための9つのルール[前編]|ファシリテーション技術 -2- ・ よりよい場を作るための9つのルール[後編]|ファシリテーション技術 -3- ・ コーチング技術 〜 基本技術を学ぼう|コーチング技術 -1- ・ コーチング技術 〜 質問力を高めよう|コーチング技術 -2- 前回のおさらい 前回 はコーチングの主要技術を解説しました。 コーチング技術 〜 基本技術を学ぼう|コーチング技術 -1- ソフトウェア開発の世界では、アジャイル開発やスクラムが一般的になってきました。そのアジャイル開発のコアとも言えるのが、対話や協調です。この連載では、アジャイル開発におけるコミュニケーション・コラボレーションスキルを解説しながら、ファシリテーション...  続きを読む  Sqripts 関連記事|Sqripts 傾聴 質問 承認 フィードバック 今回はこの中でも「質問」に注目して解説していく予定です。アジャイル開発の現場で友好的な質問とは、どういったものになるのでしょうか? ここでは以下の観点で質問を分類しながら解説を進めます。 コーチングの質問例 視点を変える 時間を変える リソースの確認 オープン VS クローズド チャンクダウン VS チャンクアップ 視点を変える質問 まずは以下の会話をもとに、視点を変える質問を考えていきましょう。 「今回のこの問題は前にも発生したことがありますね」 「前回のふりかえりで対策をうったつもりでしたが、残念ながら再発してしまったみたいです」 「さすがに同じ問題を何回も起こしてしまうのはよくないので、今回は根本的な解決策を考えていきたいです」 「そうですね。前回はチェックリストを作ってミスを防ごうとしましたが、カバーできていない部分があったので、チェックリストを更新してみてはどうでしょうか?」 問題の再発防止策を考える会話のようです。同じ問題がまた起きてしまい、チームの雰囲気は最悪です。前回の改善策を今回さらに改善するようですが、ここに視点を変える質問を加えてみましょう。 「今回のこの問題は前にも発生したことがありますね」 「前回のふりかえりで対策をうったつもりでしたが、残念ながら再発してしまったみたいです」 「さすがに同じ問題を何回も起こしてしまうのはよくないので、今回は根本的な解決策を考えていきたいです」 「我々だけで考えるには限界があるかもしれない。たとえば、 もしこの問題をお客さまの視点で考えるとしたら、何を対策してほしいと思うだろう? 」 「お客さまからみれば、今回のトラブルはケアレスミスでしかないので、こういった簡単な間違いを起こさない仕組みを期待するんじゃないでしょうか?簡単なミスばかりしていると信頼されなくなりますからね」 「信頼されるために何ができるんだろう? そもそもこの問題が絶対起こり得ない状況を作れないだろうか?」 視点を変える質問は、チームの閉塞感をうちやぶる力を秘めています。もしお客様だったら? 部長だったら? 上司だったら? 優れたチームだったら? スーパーエンジニアだったら? と考えることで、チームの思考の枠組みを壊して、新たな視点やアイデアを得ようとします。 時間を変える質問 次に、時間を変える質問を見てみましょう。先程の例に、時間を変える質問を加えてみます。 「今回のこの問題は前にも発生したことがありますね」 「前回のふりかえりで対策をうったつもりでしたが、残念ながら再発してしまったみたいです」 「さすがに同じ問題を何回も起こしてしまうのはよくないので、今回は根本的な解決策を考えていきたいです」 「 もし、タイムマシンで問題が起きた時間の前にもどれるなら、何をするだろうか? 」 「もう一度やり直せるなら、ミスの起こりやすいところをダブルチェックします」 「ダブルチェックがだんだん手間やミスにつながりやすそうだから、並行して手順を自動化したらいいんじゃないだろうか?」 トラブル対策やポストモーテム(トラブルのふりかえり手法)の現場において、この「タイムマシン」を使う質問はかなり有効です。もう一度やりなおすことはできないのですが、その時点、その場に戻ることで「もっとできたこと」を考えられるようになります。トラブルなどは、過去に戻ることで対策をイメージしやすくなります。 逆に未来に進むこともできます。 「 もし、この対策がうまくいったら、将来われわれはどういうふうに働いているだろうか 」 「そりゃ、この問題がなくなると時間もできるし、心にも余裕ができるので、より顧客が喜ぶ機能開発に集中できますよ」 過去への質問と未来への質問の違い 過去への質問は、過去の失敗や問題と向き合う質問になります。これはこれで悪くはないですが、問題が「誰か」になってしまったり、掘り下げるのが苦痛でうまくコミュニケーションが取れなくなったりする可能性が高まります。誰だって、過去の失敗を思い出したくなどないからです。 一方で、未来への質問は、過去のネガティブではなく未来のポジティブに向き合えます。未来を照らし、理想の状態を考えることで、そうなりたいという希望が生まれるからです。未来が今の自分のモチベーションに繋がります。 筆者の場合、トラブルの原因究明以外は、未来を考える質問を繰り返すようにしています。原因究明は原因を特定しなければならないので、過去を掘り下げていくしかありません。 しかし、それ以外の課題であれば、未来を照らしてあるべき姿を探す方法が有効だと感じています。未来の話だけをするようになって数年立ちますが、今のところ大きな問題は起きていません。 リソースの確認となる質問 リソースとは資源を指します。チームや個人が持っている資源を有効活用するなら、リソースの確認となる質問が有効です。以下の例を見ると、この質問の効果がよく分かるはずです。 「今回発見したこの課題は、うちのチームで解決するのは難しそうだ」 「経験者がいないし、スキルセット的にもマッチしない課題ですからね」 「 でも、社内にこの技術を使っている部署はあるだろうから、その人達に相談してみてはどうだろう? 」 「たしかに。◯◯のチームが前に社内勉強会で事例発表していたから、早速聞いてみようか」 新しい技術など、職能横断的なチームでも対応できない状況は多くあります。本来は自分たちですべて解決できればいいですが、それが難しいなら、専門家に相談しましょう。その道に詳しい専門家を知っているだけでも、プロダクトやチームに貢献できます。 リソースには、人、環境(例:社内にeラーニングがある)、お金(例: 予算を持っている)、経験などがあります。目的を達成するために、使えるものはどんどん使い、使えそうなものはどんどん使えそうかを確認していきましょう。 オープン・クローズドな質問 ここまではいろんな種類の質問を紹介しましたが、オープンクエスチョンやクローズドクエスチョンといった、特性の異なる質問方法もあります。オープンクエスチョンやクローズドクエスチョンの例を以下にまとめます。 オープンクエスチョン あなたはどう思いましたか? 今の我々にはどういった選択肢があるのでしょうか? 自由な発想をするなら、何が思い浮かびますか? クローズドクエスチョン AとBどちらにしましょうか? つまりこういうことでしょうか? これはあなたのタスクですね? 文字通り、オープンな質問は回答の幅が広いことがわかります。自由なアイデアを発想したいときはこちらがマッチします。相手の思考を刺激するコーチングでは、こちらの質問が多くなります。 一方で、クローズドクエスチョンは、選択肢が絞られてしまいます。しかし、議論を広げたいときには不向きですが、広げた議論を収束させたいときに使えます。また、要約してあげることで相手の思考が整理されるケースもあります。 チャンクダウン・チャンクアップ チャンクは塊を意味します。チャンクダウンは大きな塊を小さくくだいていくプロセスで、チャンクアップは小さなものを大きく組み立てていくプロセスになります。 たとえば、「自然を守るには?」というテーマで議論する場合、テーマが大きすぎて次の一歩が踏み出しにくくなります。よって、チャンクダウンして、もう少し議論の幅を狭めてもいいかもしれません。 自然を守るには? > 自然だと広すぎるからテーマを森林に絞ろう > 森林の中でも大きな問題になっている山火事について話してはどうだろうか? 逆に細かすぎるテーマだとチャンクアップになります。 うちらのチームで起きているパフォーマンスの問題について話したい > そもそもパフォーマンス問題が起きているのが社内のクラウドインフラなので、我々だけの問題なのだろうか? > そういえば他チームでも似たような状況が増えてきたと聞いている > それなら一度、クラウドインフラのチームに相談してみようか。 * 今回は、コーチングの中でも質問について深掘りしました。さまざまな視点や形の質問ができることがわかると思います。こういった質問力を高め、引き出しにたくさんレパートリーを集めておくと、アジャイル開発の現場で柔軟にふるまえるようになります。 次回は質問技術の中でも、より上級者向けの「質問」について解説します。 連載一覧 ・ #イントロダクション:優れたスクラムマスターが絶対に言わないこと 【連載初回、全文公開中】 ・ あなたの提案はなぜ受け入れられないのか?|ファシリテーション技術-1- ・ よりよい場を作るための9つのルール[前編]|ファシリテーション技術 -2- ・ よりよい場を作るための9つのルール[後編]|ファシリテーション技術 -3- ・ コーチング技術 〜 基本技術を学ぼう|コーチング技術 -1- ・ コーチング技術 〜 質問力を高めよう|コーチング技術 -2- The post コーチング技術 〜 質問力を高めよう|コーチング技術 -2- first appeared on Sqripts .
こんにちは、AGESTでエンジニアをしているタカです。 普段はスクラムマスターや開発者として様々な角度からプロダクトの開発に関わっています。 今回は、私たちのチームで導入したGitHub Projectsについての機能紹介や、プロダクト開発におけるバックログの管理などについて紹介したいと思います。 ※本記事の情報は、2024年7月時点の情報です。 GitHub Projectsを利用した経緯 私たちプロダクト開発チームは、これまでNotionを用いたプロダクトバックログの管理などを行ってきました。 その内容はSqriptsでも過去に紹介しており、こちらがその記事になります。 Notionでプロダクトバックログを管理するビューを作成する こんにちは、エンジニアのタカです。普段はスクラムマスターや開発者としてプロダクトの開発に関わっています。チームではスクラム開発を導入しており、今回はNotionでのバックログ管理の話をしたいと思います。当初のバックログ管理方法自分が所属するチームでは、...  続きを読む  Sqripts 関連記事|Sqripts GitHubプルリクエストをNotionで管理:効率的なブランチとプルリクエスト運用のガイド こんにちは、AGESTでエンジニアをしているタカです。普段はプロジェクトのマネジメントや開発者としてプロダクトの開発に関わっています。以前投稿したNotionでプロダクトバックログを管理するビューを作成するの記事の最後に触れたNotionのGitHubインテグレーション...  続きを読む  Sqripts 関連記事|Sqripts Notionプロジェクトのテンプレートでスクラム開発をよりスムーズに! こんにちは、エンジニアのタカです。普段はスクラムマスターや開発者としてプロダクトの開発に関わっています。今回は前回の Notionでプロダクトバックログを管理するビューを作成する の記事の続きで、Notionプロジェクトについて書きたいと思います。関連記事Notio...  続きを読む  Sqripts 関連記事|Sqripts Notionの機能には満足しているのですが、Notionで管理している不具合やプロダクトバックログと、GitHub上のpull requestの連携には引き続き課題を感じていました。 インテグレーション機能 を使っても、NotionとGitHubのそれぞれのツールを行き来しながらpull requestを作成、および連携をする必要があるため、やや手間がかかっていたのです。 GitHubのIssueであれば数クリックでpull requestと連携できるため、便利に感じていました。また、Issueを管理できるGitHub Projectsという機能の存在も、以前から知っていました。 そこで、ちょうど大きな開発の切れ目でスプリントゼロの期間を設けることになり、GitHub Projectsの導入を検討することになりました。チーム体制が変わるタイミングだったこともあり、私が最初にツール選定を行ったうえで、その後に各自が触り、問題なければ導入するという流れになりました。 GitHub Projectsの特徴 GitHub Projectsは複数のリポジトリのIssueやpull requestをカードとして追加し、ビューとして表示できます。 以下の画像ががビューの1つであるボードビューですが、ここに追加したIssueやpull requestが表示されます。なお、このビュー上から新たにカードをDraftとして追加し、リポジトリのIssueに変換することもできます。 ボードビュー GitHub Projects上で表示したIssueやPull Requestに、ラベルや担当者を割り当てる操作は、リポジトリ側にも反映されます。また、GitHub Projects独自でステータスなどのプロパティも付与でき、それらはリポジトリ側でも確認可能です。 リポジトリ側のIssueのプロパティ 独自のプロパティは、ビュー上の一覧画面で直接の更新が可能です。 例えば、Open/Close のステータスしか持たないIssueに、「ステータス」といったプロパティをGitHub Projects側で定義できるのですが、Issue の状態に合わせて、ボードビューで簡単にステータスを変更できるため、管理をより視覚的にかつスムーズに行うことができます。 GitHub ProjectsとNotionの比較 NotionとGitHub Projectsはそれぞれを触ってみると、ツールとしての方向性の違いを感じました。 Notionは柔軟性とカスタマイズ性に優れたオールインワンのワークスペースである一方、GitHub Projectsはソフトウェア開発に特化したプロジェクト管理ツールです。 GitHub Projectsはリポジトリとの連携が強く、IssueやPull Requestをカンバンボードで視覚化して管理できます。 それぞれの主な特徴をざっと記載しますが、ソフトウェアの開発プロジェクトの用途と考えた場合、 高い柔軟性 を求める場合は Notion 、 GitHubとの連携 を求める場合は GitHub Projects が良いと感じました。 ツール名 主な特徴 Notion • 高い柔軟性 : カスタマイズ性が高く、データベース、カンバン、カレンダー、ドキュメントなどを自由に組み合わせ可能。 • 豊富な機能 : 機能も多彩にあり、タスク管理、ドキュメント作成、ナレッジベースなど幅広い用途に対応。 • 共同作業のしやすさ : リアルタイムで共同で編集が可能。 GitHub Projects • GitHubとの連携 : GitHubのIssueやPull Request等と連携し、開発ワークフローを効率化。 • 使い慣れたUI : GitHubユーザーにとって、使い慣れたインターフェースでプロジェクト管理が可能。 • 自動化機能 : GitHub Actionsを用いて、IssueやPull Requestの変更に基づいた自動化が可能。 GitHub Projectsを使った感触 ここからはGitHub ProjectsとNotionをより細かく比較していきます。なお、プロパティなどのカスタマイズは、GitHub ProjectsのAdminロールを持っていれば可能です。 ビュー、レイアウトの機能は必要十分 初めてGitHub Projectsを使うと表示されるボードビューは、特にアジャイル開発では使うことが多いビューで、私たちのチームもNotionで使用していたため、引き続き使用することにしました。 ボードビュー なお、デフォルトの状態ではステータスが足りなかったため、開発の流れに沿ったステータスを追加しました。使い方としては、PBI(プロダクトバックログ)の進行状態やマージのステータスに合わせて右に移していきます。 また、新たにビューを作成する際は、レイアウトを3種類から選択できます。 ビューのレイアウトと設定項目 プロジェクト管理に絞るならカスタマイズ性も問題無し 設定画面 GitHub Projectsの持つプロパティはカスタマイズができ、ソフトウェア開発のプロジェクト管理という用途で絞った場合は、プロパティの種類も最低限のものが揃っており、それらを用途に併せて自由に作成可能です。 カスタマイズプロパティの追加 プロパティの種類は5項目です。Notion のようにリレーションを自由に作成することはできませんが、アジャイル開発で必ず使う Sprint(イテレーション)などは専用の項目が用意されています。 なお、私たちの開発チームでは、主に以下のようなプロパティを作成して使用しています。 プロパティ名 用途 Epic 機能の種別として使用 機能A、機能B、機能C..など Sprint スプリント期間 PBI Velocity PBIのベロシティ UIが使い慣れている GitHub Projectsは、開発者が使い慣れているGitHubのUIとシームレスに統合されている点は大きなメリットになると感じました。 普段からIssueやPull Requestの確認で使い慣れたGitHubのインターフェースと操作感のままGitHub Projectsを利用できます。そのため、新たなツールを導入する際に付き物の学習コストは非常に低く、実際に導入した後もチームでスムーズに使い始めることができました。 ただ、元々のUIと同様、Issueのコメントは書いていくと段々見辛くなってしまいます。そのため、意識的にコメントを閉じていく必要があると感じました。 GitHub Wikiの利便性は△ GitHub Projectsとは直接関係の無い機能ですが、もともとNotionで管理していたページについても、主に開発・運用チームしか使わないものは GitHub Wiki というWiki機能に移すことも行いました。 しかし、正直なところ、GitHub Wikiは「痒いところに手が届かない」という印象を拭えませんでした。 具体的には、以下のような点が気になりました。 デザインやカスタマイズ面がシンプルすぎる: Notionで出来ていたような、目次の生成や検索機能、見た目のカスタマイズなど細かい部分で出来ないことが多いです。 権限管理が粗い: Notionのように、ページごとに閲覧権限を設定することができず、チーム全体に公開するか、完全に非公開にするかの二択になっています。 ページ管理の難しさ: ページ一覧をボードやリストで表示などが出来ないため、ページを作った後の管理に問題があると感じました。 もちろん、ページ数を抑えたシンプルなWikiとして利用するには十分な機能が備わっています。バージョン管理が容易であるなど、GitHubとの親和性の高さも魅力です。 このため、現段階では、開発者しか触らない内容をコンパクトに数ページ〜十数ページ程度にまとめると使いやすいのではと考えています。 おわりに 今回の内容は以上となります。 GitHub Projectsは無料プランでも利用できる機能です。すでにGitHubを使っているソフトウェア開発の現場では自然と取り入れられるプロジェクト管理機能で、利用ハードルが低いながらも、必要十分な機能を満たしていると感じました。 これからプロジェクト管理ツールを導入しようと考えている方や、今使っているツールに満足していない方は、ぜひ一度GitHub Projectsを試してみてはいかがでしょうか。 The post Notion vs GitHub Projects:プロダクト開発に最適なのはどっち? first appeared on Sqripts .
こんにちは、セキュリティエンジニアの河村です。 この度初めてsqriptsに記事を執筆することになりました。数回にわたって技術書を紹介していく予定です。 今回は技術書を読むための本、『「技術書」の読書術』の書評を行います。 「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック | 翔泳社 技術書の表も裏も知り尽くした人気作家が、読書を血肉にするコツとテクニックを教えます。おそらく本邦初、「技術書(コンピュータ書)」の読書術を指南する本が登場!次々と新しい技術が登場する時代、書籍からうまく知識やスキルを得られるかどうかがIT職のキャリ...  詳細はこちら  Shoeisha 関連情報 本の概要 『「技術書」の読書術』は、数々の技術書をヒットさせているIPUSIRON氏と、情報系の数学を研究している増井氏による、技術書や一般書を読む際のインプットとアウトプットの方法や心がけを記載した本です。二人とも圧倒的な数の書物を読む読書の達人であり、本を沢山読む人はもちろん、本に対して苦手意識がある人にも役に立つ技術書と向き合うにあたっての一般論が記載されています。 内容の要約|各章の解説 本書は「選び方」「読み方」「情報発信&共有」という章に分かれています。それぞれについて簡単に解説します。 本の選び方 書店の特徴 本を選ぶ方法の前に本の取得方法の一つの書店の特徴についてお話しします。書店ごとに特徴が当然あり、それを理解することでよりニーズにあった書籍と出会いやすい、というのは納得頂けるかと思います。私もこの企画のために技術書を三冊ほど買ったのですが、自宅から近い中堅都市の本屋では満足がいくレベルの技術書が見つからず、結局交通の要所となってる池袋のジュンク堂で買いました。需要と供給の関係から当然このような場所に大規模かつ専門的な書店は集約されます。池袋、新宿、東京駅などの本屋は規模も大きく、専門分野に特化した強さもあります。 これらの書店の店員は各分野の専門家たちとやりとりをしてるため、彼(女)らとコミュニケーションを取ることで新鮮な情報を収集することも出来ます。 この度書籍を買ったジュンク堂池袋本店は本書にも記載されていた、日本有数の「技術書のメッカ」である 書籍のレベル感 本を選ぶ際の注意点として、書籍のレベル感について知っておくと良いでしょう。技術書は大きく分けて、「概要を理解したい層」(PM、システム開発の発注者など)、「実装の手順を知りたい層」(プログラマなど)、「理論を理解したい層」(理系の大学生など)等の区分されており、ターゲットの読者層に応じて書籍が重点を置いてる内容が異なってきます。このようなレベル感の違いを知っておけば、例えば「実践的なコードを書けるようになりたいのに名著という評判であることを理由に「概要を理解したい層」向けの本を選んだ結果、知りたい内容が記載されていなかった」と言った失敗は避けることができます。 本を選ぶときに参考にすべきポイント 評判 著者のプロフィール 索引 出版者 索引、出版者などの観点は本を読み慣れてない人だとあまり着目しないことも多いと思います。 本のレビューサイトとの付き合い方 現代では書籍を探す際、レビューサイトを見ることが多いと思います。レビューの評価だけではなく、レビューを書いている人のレベル感にも注意するといいです。 図書館の活用 図書館はその性質上、古い本が多いですが、本屋よりも置いてある本にバイアスがかかってないと言えます。また、なんと言っても無料である点は嬉しいです。絶版本などが多く置いてあることから、技術の歴史、普遍的な基礎技術などについて調べる場合は、非常に有用です。 サブスクサービス 本のサブスクサービスを活用することで、普段なら目を通さない雑誌などにも触れることが増え、視野が広がる効果を狙えます。また、O’Reilly online learningやPacktなどの英語圏のサブスクサービスには非常に良質な技術書も含まれています。 本の読み方 この章では二人の著者が実践してる読み方が記載されています。紹介された読み方の中には中々エキセントリックなものもあります。その中から、私が参考にしてみようと思ったものを中心に紹介します。 電子書籍 検索機能が優秀で、またデジタルデータなのでかさばりません。その代わりに一ページ以上ページをめくることが困難であるといえます。 紙媒体 電子書籍より機能が限定されるため、より強い没入感があると言えます。当然所有感も満たされます。当然場所を占拠します。 プログラミング書の読み方 プログラミングは目的では無く、手段であるということが重要です。本に記載されている本を無条件に信じず、常に手を動かすことを念頭に置くべしです。 数学書の読み方 学校での数学と、ビジネスでの数学が求めるものの違いを意識することが重要です 学校では理論重視、また正解がある問題 ビジネスでは実践重視、答えがあるとは限らない 再読すること 再読する際には、以前とは違う感想を持ちます。そこから自らの、「価値観の変化」、「知識・スキルの向上」等を認識することができます。 場所を問わない読書 迷惑をかけずに、安全さえ確保できたら、読書はいつどこで行っても構いません。若干極端な例だと思いましたが、食事中、エスカレーターに乗ってる間、旅行中、入浴中などの読書について紹介されていました。本を読む情熱さえあれば、ほとんどどこでも本は読めます。 私自身、個人的に電車の旅が好きなのですが、それの大きな理由として、読書に専念できるからというのはあります。あえて鈍行列車に乗り、積ん読してた本を一気に読むことを定期的に行っています。電子書籍を用いればかさばる心配もいりません。 夏期と冬期に入手できる 青春18切符 と読書の相性は抜群です 媒体を問わない 紙媒体、電子書籍はもちろん、オーディオブックなども今は充実してきています。これらを活用することで隙間時間にインプットを行えたりします。ドライブ中などにもインプットが行えます。 私自身はスマホを持つことも困難なレベルの満員電車ではオーディオブックで本を聞くことをよく行います。 オーディオブックの最大手、Audible 分冊化読書法 本を物理的に裁断し、読みたい箇所だけを持ち運ぶ読書法です。当然本を破壊することになるので、お手軽な読書法とはいえません。ですが、特に試験勉強など、覚えることが中心となる読書の際には効果的といえます。 私自身、大学受験のときは1000ページ近くある数学の参考書でこれを行っていました。次また何か資格試験を受ける際にやってみようと思っています。 時間制限読書法 制限時間を設けて一定の箇所まで読書を行う方法です。この本では90分単位が薦められています。 似た概念として、「ポモドーロテクニック」があげられます。 ポモドーロ・テクニック - Wikipedia  詳細はこちら  ja.wikipedia.org 関連情報 このような読書法を行う場合、適度に本を読み飛ばす技術があるといいです。 これを行う際、集中力のさまたげとなるスマホ、パソコンなどとは距離を置く方がいいです。極力メモも取らない方がいいです。私自身、この読み方を行う際、付箋を活用して重要な箇所、SNSで共有したい箇所などをマークし、制限時間後にそれらをチェックするように心がけています。 マーキング読書法 読書の際に随時内容に応じて適当なマークを付ける読書法のことです。こうすることで、考えが整理されたり、集中力が向上したりなどのメリットがあると言えます。また、読み返した際に過去の自分が選定した箇所を見ることで、自分の成長を実感出来るなどのメリットもあります。当然本を汚すことにはなります。 私は今、Post-itの特定の色を用いてマーキングするようにしています。特定の色とは赤、橙、黄、青なのですが、なぜこれらの色かと言いますと、これはKindleで用いれるマーカーの色と同じだからです。また、Post-itの場合、綺麗に剥がせるので基本的に本を汚しません。参考までに私の色の使い方を共有します。 橙:技術的な内容、キーワード(覚えたい用語など) 赤:SNSでシェアしたい内容 ⇒ 読書中にSNSでシェアすると注意力が散漫になるため、マーキングしてからシェアするようにしてる 青:章全体が参考になりそうな場合 黄色:気になる単語、キーワード(橙ほど重要ではない) このように付箋を沢山貼ってます Kindleでも同様にマーキングできます PDFの読書 PDFに記載された文書を読む際、iPadなどにはGoodNotes等優れたアプリがあることが記載されています。私はNoteShelf2というアプリを用いていますが、これらのアプリはApplePencilで直接書き込むことが出来たりとハイスペックです。WindowsやAndroidにも優れたアプリはたくさんあるのでこれらを活用することで読書のインプットアウトプットの質を上げることは重要なことだと言えます。 英文の読書 日本人が英語の文献を効率的に読む際、翻訳ソフトはほとんど必須と言えます。DeepL等を上手に活用することでPackt等の良質な英語の技術書をかなりストレスを軽減した上で読めます。 私自身はChatGPTに英文読解の補佐をお願いすることが多いです。プロンプトをカスタマイズし、分からない文の構文解析、内容の要約など柔軟に活用出来ます。また、ある程度図なども読むことが出来る点が気に入ってます(OCR機能が優秀である程度ならばスクショからも読んでくれます)。 読書記録 読書を通して自己を計画的に成長させていきたい場合、読書記録を取ることは大変有用です。進捗を数値化したり、過去を振り返れるように出来ることが大字なので、読み始めた日、読了日を記録できることは重要です。本書では「読書メーター」などの読書記録サービスが勧められています。もちろんNotionでも可能です。 Notion用の読書記録向けのテンプレートがインターネットからダウンロードできます。 私自身のNotionで作った簡単な読書ログ、カスタマイズできる範囲が広く、楽しいです 一点突破読書法 分野を絞り、その分野の本を最低でも20冊ほど読み、強みに変えていく読書法です。ですが、強みとなる分野を一つに絞った場合、ナンバーワンになることは基本的に難しいです(情報セキュリティ、整数論、英語などの分野の場合、非常に困難)。ですが、これら3つの分野全てが得意な人となると途端に人数は減ります。このようにニッチな分野の組み合わせならば、オンリーワンを目指すことは出来ます。 この読書法はそのような人材を目指す際に有用な方法と言えます。 情報発信&共有 間違いに気付くために、アウトプットは必要 本を読み、インプットするだけでは、理解に誤りがあった場合にも、それに気付けない恐れがあります。ところが、自らの理解に自信がない場合アウトプットに躊躇してしまうことは多多あります。読書を通した自らの理解をより効率よく深めて行くためにも、とりあえずアウトプットする習慣を付けることは重要です。 アウトプットにも様々な種類があります。例をあげます。 資料の作成 ブログの執筆 コミュニティへの参加(LTへの挑戦) 人へのアドバイス、説明 資格試験の受験 レビューを行う 初心者の視点も貴重 上級者は初心者の視点というのを失いがちですが、確実に初心者の視点というものにも需要はあります。このように様々な視点それぞれに需要があるので、自分自身の視点でアウトプットを書くことが重要です。 たくさんアウトプットすることが重要 失敗を恐れてアウトプットを躊躇することはよくありません。継続的にアウトプットをすることが成長には必要なため、アウトプットに関してはある種の楽観主義でいた方がいいとも言えます。 本書を読んで インプット全般についての意識が変わった エンジニアにとって情報をインプットしていき、自らの技術に新陳代謝をもたらすことは必要不可欠です。本書は読書に留まらず、そのインプット行為全般についての指南書とも言えると感じました。 本書を読み、作者の一番伝えたかったことは、読書(その他インプットも含む)という行為そのものを楽しみ、情熱を持つことが優れた読書家になる上で一番大事だと言ってるように私は感じました。インプットを通して技術を身に付けるのにはどのようにしても時間などがかかります。この行為に時間を大きく割くことは一見非効率に思えるかも知れません。 読書等のインプットをすることが将来の自分への投資であるという感覚は多くの方がすでに持ってると思いますが、それ以上に自らのエンジニアとしてのキャリアを描く上での喜びであると捉えることが大事なんだと思いました。昨日の自分より明日の自分は少しだけ善き人生を生きてるという感覚に幸せを感じない者はいないはずです。例えばかつて難しいと感じた本を再読した際に、違った視点で見える自分、それが前の自分より優れた視点であると感じれたとき、技術の向上を感じれます。このように情報技術に限らず、自分自身の成長を実感する場としても読書は優れていると、本書を読み私は改めて実感しました。 このように感じれたのは、本書を執筆したお二人の読書への情熱を余すところなく本書を通して伝えてくれたからだと思いました。 The post 『「技術書」の読書術』書評 first appeared on Sqripts .
本連載ではプロジェクトマネジメントの全体像と、プロジェクトを成功させる上で最低限抑えるべき知識と技術はもちろん、プロジェクトを炎上させないための技術やコツをお伝えしたいと思っています。 みなさんのプロジェクトが今以上に充実し、笑顔でプロジェクト終結を迎えられるよう一緒に学んでいきましょう。 < プロジェクトマネジメント成功の技術 連載一覧> ※クリックで開きます 【第1回】プロジェクトマネジメントとは何か?  [連載初回全文公開中:Sqripts会員以外の方も全文お読みいただけます] 【第2回】プロジェクトマネージャーの役割とは? 【第3回】ステークホルダーマネジメントの重要性と進め方 【第4回】プロジェクトの統合マネジメント、7つのプロセス 【第5回】プロジェクトにおけるスコープマネジメント、6つのステップ 【第6回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[前編] 【第7回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[後編] 【第8回】コストをプロジェクトの武器にする! 【第9回】目に見えにくいプロセス管理こそ品質達成の鍵 【第10回】プロジェクトのリスクマネジメント[前編]リスクを徹底的に洗い出す 【第11回】プロジェクトのリスクマネジメント[後編]リスク分析とコンティンジェンシープラン 【第12回】人がプロジェクトの源泉!チームは育てて強くする[前編] 第12回となる今回は「資源マネジメント前編」です。 今回と次回の2回に分けて、プロジェクトマネジメントにおける人、チーム、物資にスポットを当てて解説します。 プロジェクトにおける「資源」 プロジェクトの資源には「人=人的資源」と「物資=物的資源」の二つがあります。プロジェクトマネジメントにおける資源マネジメントは「プロジェクトを成功裏に完了させるために必要な資源を特定し、獲得し、マネジメントする」と定義されます。チーム員が居てもその能力がプロジェクトの求める基準に達していない、プロジェクト遂行にあたってモノ/環境が整わない、というように、必要な「力=資源」が欠けていてはプロジェクトの成功は望めません。また、チームを組成してもチーム内にトラブルが生じてしまっては想定したパフォーマンスを発揮できずプロジェクトは座礁するでしょう。資源マネジメントの目的はプロジェクトの成功に必要なチームを組織し、モノを整備調達し、チームワークを育み、プロジェクトのパフォーマンスを高めることです。 資源マネジメントのステップ プロジェクト資源マネジメントは以下6つのステップで行います。「資源の獲得」「チームの育成」とあるように、プロジェクト目標を達成するために共同で活動するメンバやチームを獲得し、育て、動機づけ、必要な権限移譲などに努力を払う必要があり、プロジェクト活動中にプロジェクトマネージャーが多くの意識を傾ける活動がこの資源マネジメントです。資源は有限であり、その貴重な資源をできる限り「活かす」ことが重要です。 資源マネジメントを計画し資源を見積もる プロジェクトがなぜ資源を必要とするか、あたり前のようですがそれは「プロジェクト活動を行い、活動を通じてプロジェクトの目標・目的を達成する」為ですね。ですから「どんな人にプロジェクトに参加してほしい」「こんなスキルを持った人が必要だ」「かならずXX開発ソフトが必要だ」という条件やイメージがあるはずです。 1) 資源マネジメントのガイドラインを考える ①資源の獲得方法:プロジェクトのためのチームと物的資源の獲得方法を検討する ②人的資源に求める役割や責任の整理 ③資源のトレーニング(研修)や育成方法 ④表彰計画 例えば①では、希少なスキルを持つ人(資源)が他のプロジェクトでも同じ時間に必要となる場合に、どのように調整するかなども計画しておきましょう。④の表彰計画は困難なプロジェクトや参加メンバーを社内から募るような場合に有効です。「XXプロジェクト参加者の中から1名はXX研修に参加できる」「参加者全員に社内XXポイントを付与する」というように使います。その際に必要なコスト(例で言えば研修費用など)を組織から引き出しておくこともプロジェクトマネージャーの役割です。 2) 必要な人員をマトリックスで整理する 人的資源の役割と責任を整理するために「責任分担マトリックス(RAM: Responsibility Assignment Matrix)」を作りましょう。WBSで整理したワークパッケージと要員をマトリックスで表します。それぞれの役割を「RACI(レイシー)」という4つの分類で定義するため「RACIチャート」と呼びます。 Responsible(実行責任) :作業を実行することに責任を持つ(複数アサインOK) Accountable(説明責任) :作業の進捗状況などの各説明に責任を持つ Consult(相談対応) :作業実行等を支援して、アドバイスを提供する Inform(情報提供) :作業の進捗状況や状態について報告を受ける RACIチャートは誤った意思決定を防ぎ、承認プロセスをスムーズにしたり障害を回避することも期待されます。特にRとAについてはWBS本編上にも記載すると良いですね。 3)ガイドラインに基づいて、資源を見積もる プロジェクトで発生するタスク(アクティビティやワークパッケージごと)を洗い出し、必要となる資源やそのタイプ、量などを見積もります。見積もりの詳細さや具体化の程度はプロジェクトやその適用分野により異なりますが、いずれにしても資源の種類や量を見積もった根拠・前提条件、見積もり根拠は必ず記載します。見積もりができたら「資源ブレークダウンストラクチャ(RBS: Resource Breakdown Structure)」に整理し、資源に抜け漏れがないかを確認しましょう。 資源を獲得してチームを組成しよう 資源は無限ではなくコストもかかります。だからこそプロジェクトの成功のために必要な資源を意思を持って「獲得」する必要があります。また、プロジェクトに必要な資源は自社内に限らず、社外から調達する必要があるかもしれません。PMがその権限を発揮して資源を直接選定できることも、できないこともあるでしょう。「思うような資源が獲得できるか」はプロジェクトにおける大きな腕の見せ所です。 1) 資源獲得のポイント 資源提供者との交渉 PMやチームは、プロジェクトに必要な人的資源や物的資源を提供する立場にある人たちと積極的に交渉しましょう。 資源を確保しようという意思 プロジェクト開始時点から「リソースが枯渇している」という不満を耳にすることがあります。必要な資源を確保できなければ、スケジュール、予算、顧客満足、品質、リスクなど全方位的に影響を与えます。資源やその能力が不十分であればあるほど、プロジェクトの成功確率は低下し、最悪の場合プロジェクトが中止になることも。 代替え資源の検討 「XXに長けた人員を外部召集したいが調達コストがない」「XXさんは別プロジェクトの主要メンバーなので、どうしてもこちらのプロジェクトには参加できない」というように、経済的な要因や制約で資源が確保できないことがあるでしょう。そのような時はコンピテンシーやコストが異なる代替え資源も検討しましょう。 バーチャルチーム バーチャルチームモデルを採用することで、地理的に離れた地域に住む要員がチームに参加できるかもしれません。あらゆる可能性と組み合わせを検討しましょう。 2) プロジェクトチームの任命 プロジェクト初期に「XXプロジェクトに召集されたけれども、どんなことを求められているかわかってない(聞いていない)」という不安や不満が聞こえることがあります。プロジェクト初期は未決定事項も多いのも事実ですが、このような場合プロジェクトがその人に期待する役割や与える責任を明確に伝えられていないことが考えられます。多くの組織では人的資源は機能部門(人的資源が所属する組織)から割り当てられますが、その際十分な説明がなされておらず上記のような不安を抱くことが少なくありません。「所属部門・機能部門長がプロジェクト参加者にプロジェクト概要やミッションや役割を説明しているだろう」と思わずに(期待せずに)、できる限りメンバーひとりひとりに対して「任命説明」の時間を設けて対話しましょう。 3) 作っておきたい資源カレンダー 「資源カレンダー」という言葉は聞きなれないかもしれませんが、プロジェクトに割けるリソースを表したものです。誰が、いつ、どの程度プロジェクトに参加できるのかを明確にして管理します。その際は要員以外にも施設や機材などの資源も併せて記載して、プロジェクトの進捗に関わる情報を一元管理しましょう。 さいごに プロジェクトにおける「資源」について、また資源マネジメント、チーム組成の流れと重要性について解説しました。資源が足りてないといっても「ただ人・物が揃えばよい」ではなく、プロジェクトに必要な要素を満たしている必要があります(多くの場合ここがFITしていない)。また多くの場合「組織やプロジェクトにおける資源は十分に足りていて心配ない」というケースは少ないはずですから、より資源の獲得に向けた段取りがプロジェクトの肝になります。みなさんのプロジェクトにおいて、資源マネジメントがちゃんと「計画」されているかぜひ振り返ってみて下さい。 次回の「資源マネジメント」後編では、チームの育成やマネジメントにフォーカスしていきます。 連載一覧 【第1回】プロジェクトマネジメントとは何か? [連載初回全文公開中] 【第2回】プロジェクトマネージャーの役割とは? 【第3回】ステークホルダーマネジメントの重要性と進め方 【第4回】プロジェクトの統合マネジメント、7つのプロセス 【第5回】プロジェクトにおけるスコープマネジメント、6つのステップ 【第6回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[前編] 【第7回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[後編] 【第8回】コストをプロジェクトの武器にする! 【第9回】目に見えにくいプロセス管理こそ品質達成の鍵 【第10回】プロジェクトのリスクマネジメント[前編]リスクを徹底的に洗い出す 【第11回】プロジェクトのリスクマネジメント[後編]リスク分析とコンティンジェンシープラン 【第12回】人がプロジェクトの源泉!チームは育てて強くする[前編] The post 【第12回】人がプロジェクトの源泉!チームは育てて強くする[前編] first appeared on Sqripts .
※本ページに記載の部署名・役職名・所属は2024年6月12日現在の情報です 2024年6月12日(水)~14日(金)に幕張メッセで開催されたインターネットテクノロジーのイベント「Interop Tokyo 2024」に参加してきました。 今回は、6月12日に行われた基調講演のひとつ、株式会社AGEST、KELA株式会社、フォースポイント・ジャパン株式会社の3社による「 【情報漏洩/流出対策】最前線~ダークウェブ監視と内部不正対策のリーディング企業が組織内外の視点から語る、サイバーセキュリティとリスクマネジメント~ 」についてレポートします。 モデレーター  株式会社AGEST マーケティング本部 岡部 康弘 氏 スピーカー  KELA株式会社 Head of pre-sales 川崎 真 氏  フォースポイント・ジャパン株式会社 Sales Director 布宮 友寛 氏 なぜこのテーマを選んだのか 冒頭はモデレーターを務めたAGEST・岡部氏のセッションでした。 今回の講演テーマを選んだ理由について、IPAの「 情報セキュリティ10大脅威2024 [組織]」の中で「内部不正による情報漏洩等の被害」、「犯罪のビジネス化(アンダーグラウンドサービス)」が過去3年で順当に順位を上げてきていること、また2023年の日本国内における個人情報流出件数が過去最大であったことに触れ、「内部不正対策」「ダークウェブ監視」が企業にとって喫緊の課題であり、注目度の高いテーマであることについて解説しました。 【情報漏洩/流出対策】最前線講演資料より 情報漏洩とは?情報が漏洩すると何が起こるのか 情報漏洩とは何か?について講演では「”外部に公開すべきでない情報”が第三者に渡ってしまうこと」と定義していました。 “外部に公開すべきでない情報”とそれが漏洩した際に起こり得る事象の代表例が、以下のスライドで解説されていました。 【情報漏洩/流出対策】最前線講演資料より さらには報道によるイメージの低下、各種対応によるリソースの切迫、売上への影響などなど、ダメージは計り知れず、「情報漏洩がもたらす影響は 全てが致命的 」と考えられます。 情報はどこから流出するのか? では、情報はどこから流出するのでしょうか。情報漏洩のルートを大きく4つに分けて解説されていました。 【情報漏洩/流出対策】最前線講演資料より 自社が攻撃を受けて情報流出 不正な持ち出しによる情報流出(内部不正) 取引先が攻撃に遭い情報流出(サプライチェーン攻撃) 利用中のサービスが攻撃被害に遭い情報流出 スライド画像の左から番号を振って記載しましたが、3番(画像の右から2番目)は「自社ではなく取引先が攻撃を受けることにより自社の情報が漏洩し、自社も攻撃対象となってしまう」というケースです。 そして4番(画像の一番右)は業務上使用しているサービスの提供元が被害に遭い、登録してある認証情報などが流出してしまうケースです。 これらのケースから分かることは、 自社の努力だけでは防げない領域がある 情報流出のリスクを 0 にすることは難しい ということです。 リスクの深掘り 続いてKELA株式会社の川崎氏、フォースポイント・ジャパン株式会社の布宮氏の登壇です。 リスクを深掘りした上で、その対応方法までを解説しました。 ① 組織の外部という視点 流出した情報は、どこで、誰が、どのように扱っているのか? KELA・川崎氏は、流出した情報が「どこで、誰が、どのように扱っているのか」について、まずは「どのように流出したか」に着目するとのこと。 その上で、サイバー攻撃者がサイバー犯罪の目的で流出させたとなれば、当然のことながら情報は「サイバー犯罪者」に渡ってしまいます。 サイバー犯罪者たちの目的は、興味本位、政治的な目的、国家の支援によるものなどさまざまですが、大多数は「それを生業にしている」とのことでした。 サイバー犯罪者たちはインターネット上でコミュニティ(エコシステム)を形成しており、時として実際に売買を行う、情報を共有する、そのような場があるのだそうです。 このコミュニティはかなり大規模なものであるとのことで、会場参加者限定のスライドなども使って具体的に解説されていました。 【情報漏洩/流出対策】最前線講演資料より サイバー犯罪者のエコシステム内で行われていることの例としてクレジットカードの犯罪が取り上げられました。 フィッシング、スキミングなどの形でカード情報が盗まれると、その情報はエコシステム内で売買、あるいは共有されます。クレジットカード情報を取得したサイバー犯罪者たちは、その情報を使ってクレジットカードを不正利用します。クレジットカード情報を取引する場は闇サイト、ダークウェブなどと呼ばれる領域に存在していますが、最近の傾向としてはダークウェブだけでなく、テレグラムという匿名性の高いSNSを使用して取引している例も多いようです。講演会場では実例をスクリーンに表示し解説されていました。 配信無しの現地講演ならではの情報も多く(撮影・録音が禁止されていました)、会場では興味深くスクリーンに見入る聴講者の姿も印象的でした。 ② 組織の内部という視点 続いてフォースポイント・ジャパン株式会社・布宮氏のスピーチです。 内部から情報を持ち出すパターンを具体的に解説 今回は「内部から情報を 意図的 に持ち出すパターン」について解説しました。 【情報漏洩/流出対策】最前線講演資料より 情報漏洩は基本的には、普段使っている端末を起点に、上の図で示したような多様な経路からの流出が考えられるます。 個人のクラウドストレージへのアップロードやファイル転送サービスなどの利用も想定されますが、依然として主流なのは電子メールで、プリンタやUSBメモリといった外部出力機器からの流出も根強く残っているということでした。 内部から情報を持ち出すのはどんな人物なのか?その動機は? 会社の情報を持ち出すパターンとしては、 悪意を持って意図的に持ち出す(転職を機に情報を故意に持ち出す場合も含まれる) 意図せずに持ち出してしまった・漏洩してしまった この2パターンが考えられます。 悪意を持って持ち出すパターン 悪意を持って持ち出すパターンとしては、心理学的な要因として「不正のトライアングル」の下図が示されました。 動機、機会、正当化という3つが揃った時に不正が起こる、または起こりやすいという判断ができるとのことです。 【情報漏洩/流出対策】最前線講演資料より 意図せず持ち出すパターン 一方で、意図せず持ち出してしまうパターンについても、情報の漏洩が起きやすくなっているとの解説がありました。 背景としては、在宅勤務などの働き方の多様化や、BYOD(私的デバイスの業務利用)が盛んに行われるようになったこと、また多種多様なクラウドサービスを利用する上で設定を誤り、個人情報が見える状態になっていた、などさまざまな要因が考えられます。 便利な世の中になっている反面で、情報漏洩が起きやすくなっているのも事実とのことでした。 リスクへの対応方法 続いて内部不正による情報漏洩、そしてダークウェブなどに流出してしまった情報の対応方法についての解説がありました。 内部からの不正な持ち出しへの対策 内部からの不正な持ち出しへの対策として、布宮氏は以下のスライドで解説しました。 【情報漏洩/流出対策】最前線講演資料より 「内部不正対策」と検索すると、さまざまなツールも出てきますが、まず最も大事なのは「セキュリティ教育」で従業員のリテラシーをきちんと上げることだと解説されていました。 従業員の教育を最初に行い、その次にツールを検討します。中でも「DLP」が最適解ではあるものの、導入してもうまくいかなかった、効果的なのかもしれないが使いこなせなかった、という法人も多いということでした。 その理由としては、「データの棚卸ができていないこと」が挙げられます。 データの重要度 社外秘かそうでないか 等での分類ができていない法人が非常に多く、この状態でDLPを導入すると、誤検知や検知の頻発が発生して有効に使うことができない、という状況を招いてしまうということでした。 ではどうすればいいのか、その対策として「データの棚卸・分類 = 守るべき対象の見える化)」から始めましょう、と提案されていました。 具体的には、DSPM(Data Security Posture Management)という手法を活用し、さらにDLPと組み合わせることで効果的な情報漏洩対策が可能となるとのことでした。 【情報漏洩/流出対策】最前線講演資料より 外部に流出した情報の検知と対応 続いて、流出してしまった情報の脅威情報を検知したとき、何をすればいいのかについてKELA・川崎氏がスピーチしました。 「漏洩の検証」「影響範囲の特定」から始まり「再発の防止」までさまざまな対応、手続きが必要となりますが、まず大事なポイントとして、「その情報ソースは正しいのか」を見極める必要があります。 【情報漏洩/流出対策】最前線講演資料より サイバー犯罪コミュニティを自社で監視することはできるのか? また、脅威情報を検知したとして、サイバー犯罪コミュニティを自社で監視することはできるのか?について、講演では「安全性の観点から非推奨」とのことでした。 理由としては、 そもそもダークウェブへのアクセスそのものが難しい 仮にアクセスできても監視そのものが難しい 多言語への対応(特にロシア語や中国語など) コミュニティ特有のスラングが多用されている 投稿がバイネームであるとは限らないため、少ない情報から自組織に関連性があるか推測が必要 などが挙げられていました。 安全にダークウェブ監視を行うためには、やはり専門的な知見やプラットフォームを有する脅威インテリジェンスベンダーの活用が推奨されます。 【情報漏洩/流出対策】最前線講演資料より 40分ほどのセッションの終わりには、KELA、フォースポイント・ジャパン、AGESTの紹介を行って締めくくられました。 アンケート結果 聴講者の声 (満足)情報漏洩のリスクや、防ぐために何が必要か、などの概念的な内容について学べてとても面白かった。 (満足)情報漏洩が重大な問題であることは周知の事実としても、実際のところ漏洩した情報がどうなっているのかは正直、よくわからなかったのだが、非常に生々しい実態を教えていただき、危機感を高めることができた。 また、対策を行う前にまずやらなければならない対応(DSPM)についても理解でき、非常に有意義なセミナーだった。 (やや不満)技術的な話を期待していたため、少し目的とは異なったが、ダークウェブのリアルを知る良い機会となった。 まとめ ダークウェブ監視と内部不正対策というテーマでの講演でしたが、情報漏洩の「内部不正」にスポットを当てて具体的に解説されていたところ、また情報漏洩した後のダークウェブ監視、テレグラムなどの「エコシステム」の実態の紹介など、取材で参加した筆者もとても理解がしやすく、この講演を通じて課題意識が高まりました。 現地開催の講演ならではの、聴講者の反応もひしひしと伝わってきて、遠い幕張まで行った甲斐がありました。 また次のイベントもぜひ参加したいと思います。 ●講演資料ダウンロード 今回、こちらの記事をお読みいただいた方に講演資料をご用意しました。 下記のリンクよりダウンロードください。 なお、本資料は公開用に講演資料を簡易化したものです。 ■ 【情報漏洩/流出対策】最前線講演資料(ダイジェスト版)ダウンロードはこちら The post Interop Tokyo 2024参加レポート|基調講演【情報漏洩/流出対策】最前線「ダークウェブ監視と内部不正対策、サイバーセキュリティとリスクマネジメント」 first appeared on Sqripts .
こんにちは!ショウです。 先日、マイグレーション観点でのテスト設計を行う機会があり、どのような観点を意識して設計するべきか調べていたところ、 リプレイス という似た意味を持つ単語があることを知りました。よくよく調べてみると、似た意味の言葉ではありますが、それぞれのテスト観点には違いがあることが分かりました! 今回の記事では、そんなマイグレーションとリプレイスのテスト観点の違いについて、お話していきたいと思います。 マイグレーションとは? まずはじめに、今回の記事を執筆するきっかけとなった 「マイグレーション」 について説明します。 マイグレーションとは移転・移行などの意味を持つ英単語で、IT分野ではソフトウェアやデータを別の環境に移行したり、新しい環境に切り替えたりすることを意味する言葉です。旧式やサポート切れとなる古いシステムから新たに作り直した新式の環境へ移行する レガシーマイグレーション の他に、異なる装置やソフトウェア、データ形式間でデータを移動する データマイグレーション など、マイグレーションと一口に言っても様々なものがあります。 マイグレーションを行う目的としては、最適な環境に移行することで運用コストの改善を図り、ソフトウェアやデータをより有効的に使用出来るようにすることです。 主なメリットとして、移行前と移行後の動作が一致しているという明確な合格条件があるので、認識齟齬が起きにくく、システムの品質を向上させやすい点です。 デメリットとしては、新環境に向けたデータやシステムの変換作業と平行して大幅な仕様変更を行うことが難しく、仕様変更を行わない前提で開発を進める必要がある点です。 マイグレーションのイメージ図 リプレイスとは? 続いて、 「リプレイス」 についてです。 リプレイスとは「交換・置換」などの意味を持つ英単語で、IT分野では古くなったり破損してしまったハードウェアやソフトウェアなどを新しい物や同等の機能を持った別のものに置き換えることを意味します。リプレイスを行う目的としては、システムを安定して運用することです。システムに不具合が無くても運用期間が長くなると下記のような劣化が起きます。 処理データ量が増え、ハードウェアのスペックが追いつかずに動作が重くなる 最新のソフトウェアやアップデートに対応出来ない 進化を続ける最新のコンピューターウィルスに対抗出来ない この劣化によって、業務の非効率化や情報流出などのトラブルが発生するリスクがあるため、リプレイスが必要となります。 主なメリットは、ハードウェアやソフトウェアを新しいものに置き換えることにより処理能力が向上し、システム動作が安定することであり、デメリットはリプレイスの方式にもよりますが、コストがかかることや現行のシステムを継続する場合にリプレイス後に期待通りの動作にならない場合がある点です。 リプレイスのイメージ図 それぞれのテスト観点の違いとは? では、マイグレーションとリプレイスそれぞれのテスト観点の違いを考えていきます。 現新比較テストについて マイグレーションとリプレイスにおいてポイントとなるテスト観点のうちの一つとして、 「現新比較テスト」 が挙げられます。「現新比較テスト」とは、対象となるプロダクトの改修前後のデータや出力等を比較し、改修前後で問題となる現象や不具合が発生しないことを確認するテストとなります。 マイグレーションで有効なテスト観点 続いて、マイグレーションで有効となるテスト観点について考えてみましょう。 マイグレーションでは、システムの動作環境が新環境に変わるため、以下の3つの観点が必要となります。 1. システム全体の機能動作の現新比較 テスト観点:新環境に移行した影響によって移行前に起きていなかった不具合や問題等が発生していないか テスト例:DB処理(新規テーブルや新規レコード)に着目した機能テスト システム全体の単体機能に対する自動テスト 2. 性能(パフォーマンス)の現新比較 テスト観点:新環境への移行に伴って性能が前環境と同等または向上しているか テスト例:DB処理(新規テーブルや新規レコード)に着目した性能テスト 新環境と前環境のシステムに着目した負荷テスト 3. 業務視点の要求を満たしているか テスト観点:新環境に移行して業務運用する際、業務視点の要求から外れていないか テスト例:検証環境での本番データを流し込んだ受け入れテスト・運用テスト 機能要求に関するユーザビリティテスト 以上がマイグレーションで有効なテスト観点と各理由となります。 リプレイスで有効なテスト観点 次に、リプレイスで有効となるテスト観点について解説します。 リプレイスでは、古くなったハードウェア・ソフトウェアの全部、または一部を新しいものに置き換えるため、以下の3つの観点が必要となります。 1. リプレイス部分及び影響範囲での機能動作の現新比較 テスト観点:リプレイスを行ったことによる置換部分や関連する機能などで不具合や問題等が発生していないか テスト例: ハードウェアとのI/Fに着目した機能テスト システムテストでの全数テスト(難しい場合は単体テストでのDBテーブル値) 2. 性能(パフォーマンス)の現新比較 テスト観点:リプレイス前後で比較を行い、新環境の性能が同等または向上しているか テスト例: ハードウェアとのI/Fに着目した性能テスト ハードウェア・ソフトウェアに着目した環境テスト 3. リプレイス部分以外への影響の確認 テスト観点:リプレイスを行った箇所以外で想定外の影響・不具合や問題等が発生していないか テスト例: システム全体における確認テスト リプレイスで変更された部分に着目した自動テスト それぞれのテスト観点の違い 最後にマイグレーションとリプレイスでのテスト観点の主な違いを解説します。それぞれの有効なテスト観点を比較すると、以下のように重視しているポイントがテスト観点にも現れていることが考えられます。 マイグレーション: 「システム全体の影響確認」 を重視 リプレイス: 「リプレイス部分の影響確認」 を重視 ※ ※「リプレイス部分以外への影響の確認」の通り、リプレイス部分以外を確認しない訳ではありませんが、他2つの観点の方が重要度が高いように思われますので、上記のように記載しております。 補足 補足として、マイグレーションには「リライト」・「リホスト」・「リビルド」と呼ばれる、3つの手法もあります。 「リライト」とは、アプリケーションやプログラムのロジックは変更せずに、使用言語やプログラムを新しく書き換えて、新規プラットフォームにて動作するように移行する手法となります。「リホスト」とは、既存のシステムと同じ言語を使用して新規プラットフォームへ移行する方法となります。「リビルド」とは、改めてアーキテクチャやプログラム設計からやり直し、システムを再構築する方法です。 最後に 以上がマイグレーションとリプレイス、及びそれぞれの基本的なテスト観点の違いと補足になります。私が実際に担当したプロジェクトでは、「レガシーマイグレーション」の「リホスト」として既存システムに存在している膨大なデータを新システムの「検証環境」に移行してから1回目のテストを行い、完了後に新システムの「本番環境」へデータを移行してから、簡易的なテストを再度行うような形でテストを行いました。 テストのイメージ図 私自身、マイグレーション観点でのテスト設計は初めてだったため、どういったポイントに着目し、またどのような観点でテスト設計を行えばよいのかが当初はイマイチ把握できませんでした。しかし、本記事で紹介したように該当のテストの概要や方法などを調査し、対象のシステムに対して有効な観点をまとめたうえで、「求められる要件(移行データの一致)を満たすための期待結果の記述方法」や「それぞれ必要なテスト観点は何か」ということを意識しながらテスト設計を行うことで、情報も整理でき、新たな視点で設計作業に臨むことができました。今後のテストでもこのような経験を活かしていきたいと思います! 今回はマイグレーションとリプレイスについて考えてきました。似た意味の言葉・手法ですが、開発の手法に合わせて考慮すべきリスクが異なることが分かりました。また、実際のプロジェクトの状態やテスト対象となるシステムによっても、テストで優先的に必要となる観点やテスト技法が異なる場合もあるかと思います。記事の執筆を通して、あらゆる状況やリスクに応じたテストを行う意識が必要だと改めて認識しました。本記事がマイグレーションやリプレイスを含め、あらゆるテストで少しでもお役に立てたら幸いです。 The post マイグレーションとリプレイスのテスト観点の違いを考える first appeared on Sqripts .
こんにちは、QAエンジニアのヒイロです。 情報処理に触れていると2進数、16進数という言葉を見聞きしたことがあると思います。 知識はあるけれど実際に触れたことのない方や、n進数そのものをこれまで知らなかったという方向けに、その注意点をn進数の中の2進数と16進数に焦点をあてて執筆しました。 はじめに 私がはじめてテスト業務に携わったのはオープン系のシステムでしたが、すぐに制御系に移行し、それ以降は日々16進数を取り扱うことになりました。 しかし、n進数に馴染みがなかったため、テスト設計から実行まで一貫して行った結果、NGになった項目はシステムの不具合ではなく「n進数について学習レベルの知識のまま設計していた」ことが原因で、設計自体に問題があったことがほとんどでした。 そこで、この記事では「気を付けるべきn進数のポイント」を紹介したいと思います。 n進数概要 10進数とは 私たちが普段使用している数え方です。 0~9の10個の数字を使用しているので10進数です。 2進数とは 2進数は0と1の2個の数字しか使用しないので2進数です。 「0と1しかないの?2とか3はどうなるの?」という疑問は表1を参照してください。 16進数とは 0~9, A~Fの16個の数字を使用するので16進数です。 A~Fはアルファベットですが数字として扱います。 ※つまりn進数とは、n個の数字を使用して数を表す方法です。n進むと桁が繰り上がります。 2進数/16進数の存在理由 「なんでこんな面倒な数を使うの?分かりにくいなぁ」って思った方に説明します。 人間は両手の指の数を合わせて10になる数、10進数を扱うのが得意です。それと同じでコンピュータは0か1かの2つの数字で情報を扱うのが得意です。皆さんおなじみのフラグがわかりやすいと思います。ONは1、OFFは0という使い方がされますよね。 2は10、3は11、4は100というように、2進数では0と1以外は存在しません。けれど0と1だけで数字を表現すると桁がどんどん膨大になってしまうので、4桁毎の4ビットに区切って変換できる16進数が使われています。 【n進数が用いられている実例】 カラーコード、文字コード、デバイスIDなどで16進数が使用されています。 カラーコード 画像系アプリやhtml、CSSで色を指定するのには16進数のカラーコードが用いられています。 白色は#FFFFFF、黒色は#000000です。目にしたことがあるのではないでしょうか。 文字コード テキストエディタなどで任意の1文字を範囲選択などするとステータスバーなどに表示されるものもあります。 たとえばS=53 c=63 r=72 i=69 p=70 t=74 s=73でScriptsは53637269707473となります。 ※Sとsの違いで分かるように、大文字と小文字ではコードが異なります。 MACアドレス ネットワーク搭載機器(ルーター、PC、スマホ等)にも先述の0~9, A~Fの16進数が使われています。 デバイスマネージャ windowsのデバイスマネージャからデバイスの詳細を確認するとハードウェアIDに16進数が表示されます。 【業務での使用例】 Web系ではあまり馴染みがないですが、組み込み系や制御系のテストで扱う場合があります。特にCAN通信[※1]では必須となります。 私は電子部品の状態確認や制御、ログ解析等に16進数を用いました。とある案件では各種仕様書、設計書、マニュアル等からテスト設計もすべて16進数表記でした。一般ユーザ向けのスマホアプリで、機器の送信する値をPCで受信しながら動作確認するという事例もあります。 [※1] CAN通信:自動車などの機械に用いられる通信規格。部品同士の情報を送受信するもの。 「見たことあるかも!暗号みたいなものだと思ってた」という方もいるのではないでしょうか。暗号ではなく、ちゃんと意味のある数字(とアルファベット)なのです。 【n進数の変換】 ではその暗号のような数字をどう解読したら良いのでしょうか。 ぱっと見て頭の中で変換できる方はそうそういないと思うので、次のような計算が必要になります。 Windows標準の電卓 設定を「標準」から「プログラマー」というモードに切り替えます。DEC,BIN,HEX,OCTという略称が並んでいますがDECが10進数です。 DECに任意の数字を入力すると、それぞれに対応する値が瞬時に表示されます(略称については表2参照) (※4進数のみ非対応) 表計算の関数 例として10進数から変換する場合は=DEC2BIN,=DEC2HEX,=DEC2OCTを用います。 10進数の11を2進数にしたい場合は「=DEC2BIN(11)」とすると1011に変換されます。 2,8,16進数から変換したい場合はDECをBIN,OCT,HEXに入れ替えます。 (※4進数のみ非対応) 表1から割り出す 例として[0000 0111 1110 1000]という2進数を16進数に変換する場合 表1で0000=0, 0111=7, 1110=E, 1000=8と分かるので、結合して16進数は[07 E8]です。 (※4,8進数も同じ方法で変換可能) n進数取り扱い注意点 接頭辞の罠 先述の表2について「数字の前の0dとかhとかって何?見づらいよ!」と思いませんか? 私は最初の頃思っていました。これは接頭辞と呼ばれるものです(接尾辞になる場合もあります)。 10進数しか扱わない現場であれば[ 100 ]と言えば[ 0d100 ]のことですが[ 0d77 ]、[ 0d99 ]のようにすべての値に[ 0d ]などと記載するのは確かに面倒だし邪魔です。 ですが他のn進数を取り扱う現場では何進数なのかがハッキリしないと、2進数の[ 100 ]は10進数だと4、16進数の[ 100 ]は10進数では256となり、まったく異なった値となります。 【テスト設計例1】 あなたは温度を示すアプリのテスト設計をすることになりました。詳細設計書には下記の記載があります。 「項目Aの値を1/2し、その結果でフォント色を下記のようにする。 ・100以上:赤、51以上:オレンジ、それ以外:青色」 項目Aを確認すると値は[ 110 ]でした。そこであなたは「110÷2で55だから…期待値はオレンジ色ね」とテスト設計しました。 ところが… case1. 項目Aは2進数表記でした!(0b110だったのです) 表1を参照(または電卓のBINをクリックし[110]を入力)してください。2進数の110(0b110)は10進数では6(0d6)ですね。1/2すると0d3。つまり3度なので青色が正解でした。 case2. 項目Aは16進数表記でした!(0x110だったのです) 電卓でHEXに110を入力するとDECは272と表示されますね。1/2すると0d136。つまり136度なので赤色が正解でした。 接頭辞(接尾辞)の違いで同じ[ 110 ]でもここまで値に差が出てしまうのです。 エンディアンの罠 エンディアンの罠…16進数でのバイト順「byte order[※2]」のことで、下記3種類が存在します(なぜ1種類に統一されていないのかというと、所説あるようです)。 [※2] byte order:データは1byte(8bit)単位で記憶されるため、2byte以上の時に先頭からor末尾からのどちらから記憶していくかという順番。 ビッグエンディアン バイナリデータの先頭が頭になる方式。主な用途:TCP/IPプロトコルや、UNIX、モトローラ、Macintosh等。 例えば[ 0d1234 ]を電卓で変換するとHEXは[ 4D2 ]と表示されます。1バイト目が[ 04 ]、2バイト目が[ D2 ]で[ 0x04D2 ]です。 リトルエンディアン バイナリデータの末尾が頭になる方式。主な用途:Windows、USB、IntelやAMDのプロセッサ等。 先程の[ 0d1234 ]の場合、末尾からバイトをひっくり返した並びになるので[ 0xD204 ]になります。1バイト目が[ D2 ]、2バイト目が[ 04 ]ですね。 ※単純に末尾から数字を逆順にして02D4や2D40としないようにご注意を。私は最初の頃間違えました…)。 バイエンディアン ビッグ、リトルのどちらにもなる方式。主な用途:MIPS、ARMのCPU等。 10進数を4バイトの16進数にした時にbyte orderでどのような違いがあるかを表3に記載しました。 [ 00 00 00 01 ]はビッグエンディアンは0d1ですが、リトルエンディアンでは0d16777216です。10進数で考えると1と16777216では大きな差異になってしまいますね。 【テスト設計例2】 あなたは温度を示すアプリのテスト設計をすることになりました。詳細設計書には下記の記載があります。 「項目Bの16進数を10進数に変換したとき、その結果でフォント色を下記のようにする。 ・5000度以上であれば赤色、それ以外は青色とする」 項目Bの値は[ 0x121A ]でした。 16進数であることが判明しているので[ 0x121A ]を電卓で変換すると[ 0d4634 ]でした。 「4634度ね。5000度以上ではないから…期待値は青色ね!」 ところが、項目Bはリトルエンディアン表記でした。リトルエンディアンで[ 0x121A ]はビッグエンディアンにすると[ 0x1A12 ]で、変換すると[ 0d6674 ]。つまり6674度なので5000度以上となるため赤色が正解でした。 「全項目ビッグエンディアンで期待値算出してたよ…計算しなおさないと」ってことにならないように、私は16進数を見かけたら「ビッグエンディアンですか?リトルエンディアンですか?」と必ず設計前に確認するようにしています。 ※ちなみにエンディアンとは「ガリバー旅行記」で卵を尖った小さい方から食べる(little end)か、大きい方(big end)から食べるかで戦争をしている国のエピソードからきているそうです。 「こしあんか粒あんか」「頭からかしっぽからか」「タケノコかキノコか」みたいなものですね 小数点の罠1 [ 0xA.B ]と記載があった場合、[ 0xA. ]はそのまま[ 0d10. ]です。 「Bは10進数では11だから…0d10.11ね!」となりがちですが…16進数では0.1の位は1/16、0.01の位は1/256なので、0xBを10進数に変換(0d11)し、それを16で割ってください。11/16=0.6875で、正解は[ 0d10.6875 ]となります。 n進数で小数点以下の変換ができるサイトや、小数点第2位以下の計算についても記事がたくさんあるので興味のある方は是非調べてみてください。 小数点の罠2 現場や設計、プログラマにより小数点以下の扱いは四捨五入、切り捨て、切り上げなど仕様がさまざまです。 表4をご覧ください。B列は単純に0d100をA列の値で除算(=100/1 ~ =100/16)した値です。 C列はB列の値をround関数で四捨五入した値。 D列はC列の値を「=DEC2HEX(decemal→hexadecimal)」という関数で変換した16進数です。 E列はB列の値を「=DEC2HEX」で変換した16進数です。 赤背景の行は値が変わってしまいました。 【テスト設計例3】 温度を示すアプリのテスト設計をすることになりました。 詳細設計書には「項目Cの温度を1/2した値を16進数に変換し、項目Dの値とする」と記載されています。項目Cの値は[ 135度 ]です。 [ 0d135 / 2 ]は[ 0d67.5 ]ですね。 [ 0d67.5 ]を[ =DEC2HEX(67.5) ]すると[ 0x43 ]でした。 「じゃあ項目Dは [ 0x43 ]ね!」とテスト設計しました。 ところが… 項目Dは四捨五入で求める必要がありました。DEC2HEXという関数は小数点以下切り捨ての仕様となっています。 四捨五入や切り上げが必要な場合、round関数またはroundup関数をかませた後にDEC2HEXする必要があります。 この場合ですと次の手順になります。 135 / 2 = 67.5 を求める =round(67.5)で四捨五入し68にする =dec2hex(68)で16進数に変換し[ 0x44 ]を求める つまり項目Dは[ 0x43 ] ではなく [ 0x44 ]が正解でした。 「全項目切り捨てで期待値出してたよ…算出しなおさないと」ってことにならないように、私は小数を見かけたら「四捨五入ですか?切り捨て/切り上げですか?」と必ず設計前に確認するようにしています。 まとめ 以上が私がn進数を扱うときに注意しているポイントの紹介でした。 どんなことでも「学習レベルの知識」があっても「実務でやってみたら思っていたのと違った」とか「あの時勉強したのはこういうことだったのか!」という気づきがあると思います。もしこの先n進数を扱うことになったら「そういうえば昔、記事で読んだな…」と思い出してみてください。 この記事がこれからn進数を扱うみなさんのお役にたつことがあれば幸いです。 The post 実例から学ぶ n進数を扱うプロダクトのテスト設計で気をつけるべきポイント first appeared on Sqripts .
テストエンジニアが身につけておきたいスキルの一つ「論理のスキル」。 「論理の言葉」の意味や働きに注意が向くようになったら、文や文章の読み書きで実践していきましょう。 この連載では、「論理スキル“実践編”」と題して、「文章の筋道を把握する、主張を理解する」「文や文章の筋道を組み立てる」ことに役立つ 推論の形 を見ていきます。 <テストエンジニアのための論理スキル[実践編] 記事一覧> ※クリックで開きます 論理のかたち。推論とは [全文公開中!] 基本的な推論形式 前回「 “または”を使って推論する 」では、“または”という言葉(連言)を使った推論の形を取り上げました。 “または”を使って推論する|テストエンジニアのための論理スキル[実践編] テストエンジニアが身につけておきたいスキルの一つ「論理のスキル」。「論理の言葉」の意味や働きに注意が向くようになったら、文や文章の読み書きで実践していきましょう。この連載では、「論理スキル“実践編”」と題して、「文章の筋道を把握する、主張を理解する...  続きを読む  Sqripts 関連記事|Sqripts 今回は、条件を表す言葉“ならば”(条件法)を用いた推論の形を見ていきます。 前回クイズ解答 問題(再掲) ※第3回の問題で、図版に誤りがございました(問3が間違っています)。 ご覧になった方を混乱させたことをお詫び申し上げます。 以下に正しい図を掲載します。 解答 問1 。「Pか、またはQ」に対して、一方の否定から他方の肯定を結論する、選言三段論法の妥当な形をしています。 問2 。一方の肯定から他方の否定を結論とする、選言三段論法の妥当でない形です。実行手順の問題とテスト環境の問題は両立し得る事象です。 問3 。ふたつのモードは「相互に切り替えて利用できる」ことから、同時には一方のみが有効と考えられます。排他的な“または”と言えるので、この推論は妥当です。 仮言三段論法 ― “ならば”を使って推論する “ならば”の性質と推論 こんなことを言われても―― 今日中にリリースがないなら、明日のテストは中止だ。 これだけでは明日のテストについてはなんとも判りません。 が、ここに「今日はリリースはないってよ」という情報が加わると、「明日のテストは中止だ」と断言してよさそうに思えてきます。 あるいは、「例の課題を解決できないなら、今日中のリリースはない」といった情報が加わると、「例の課題が解決できないなら、明日のテストは中止だ」という新たな主張が得られます。 “ならば”(条件法)は推論で大活躍をする論理の言葉で、考えを進めたり議論をしたりする際に、言葉を変えたり隠れたりして頻繁に現れます(この節にも2ヶ所隠れています)。 この言葉を使った推論のよい形・よくない形を理解しておきましょう。 “ならば”を使って、前提から結論を導く 前提1が仮言判断(“ならば”を用いた条件つきの主張)である推論を 仮言三段論法 といいます(文献によっては、条件三段論法とも)。 前提2にどんな文が来るかによって、 純粋仮言三段論法 と 混合仮言三段論法 があります(図4-1)。 図4-1 仮言三段論法 純粋 仮言三段論法(図4-1 上): 前提2も仮言判断 。結論も仮言判断になる 混合 仮言三段論法(図4-1 下): 前提2が断言判断 。結論は断言判断になる 混合仮言三段論法から説明します。 混合仮言三段論法 “ならば”と、断言を組み合わせる 前提1「PならばQ」に対する断言形式の主張を前提2で述べることで、結論を引き出します。 結論は断言判断 になります。 ふたつの形があります。 混合仮言三段論法・(1)肯定式(前件肯定) ひとつめは、前提1「PならばQ」に対して「P(前件)は成り立つよ」と言う形です(図4-2)。 ①PならばQ。 ②P。 従って、③Q。 図4-2 混合仮言三段論法・肯定式(前件肯定) ①「PならばQ」に対して、②「P(前件)が真」が加わると、③「Qは真」が結論として導けます。 この形は「 肯定式(Modus Ponens, MP) 」「 前件肯定 」 と呼ばれます(文献によっては構成式とも)。 「 論理のかたち。推論とは 」冒頭の例でいうと: 例: ①雨が降っているなら、Aさんは自宅で過ごす。 ②今日は雨だ。 だから、③今日、Aさんは自宅にいる。 混合仮言三段論法・否定式(後件否定) ふたつめは、「Q(後件)は成り立たないよ」と言う形です(図4-3)。 ①PならばQ。 ②Qではない。 従って、③Pではない。 図4-3 混合仮言三段論法・否定式(後件否定) ①「PならばQ」の対偶は、「QでないならばPではない」です。そして②「Q(後件)が偽(=Qではない)」から、③「Pは偽(=Pではない)」という結論が得られます。 この形は「 否定式(Modus Tollens, MT) 」「 後件否定 」と呼ばれます(文献によっては破壊式とも)。 例: ①雨が降っているなら、Aさんは自宅で過ごす。 ②今日、Aさんは自宅にいない。 だから、③今日は雨は降っていない。 推論の重要なツール 前件肯定、後件否定は、“ならば”(条件法)の意味/働きから出てくる、とても重要な推論の形です。 条件つきの主張から結論を引き出したり、考えや議論を進めたり、話の筋道を確かめたり見直したりするのに欠かせません。 対偶と併せてセットで憶えましょう。 純粋仮言三段論法 “ならば”を重ねる 前提1, 2とも“ならば”を用いた言明(仮言判断)で、ふたつの条件つき主張のつながりから結論を引き出します。 この形では、 結論も仮言判断 になります。 “基本形” 「 基本的な推論形式 」で紹介したものが基本的な形です(図4-4)。 ①PならばQ。 ②QならばR。 従って、③PならばR。 (前提1, 2の順序は替わっても問題ありません) 図4-4 純粋仮言三段論法の“基本形” 「PならばQ」の後件Qが別の主張「QならばR」の前件となって両者をつなぎ、「PならばR」という主張を導いています。 例: ①雨が降っているなら、Aさんは自宅で過ごす。 ②Aさんが自宅にいるなら、Aさんは趣味のギターに没頭する。 だから、③雨が降る日はAさんは自宅でギターを弾いている。 この基本的な形から、多くの推論の形が導出できます。 “ならば”をさらに重ねる 前提が3つ(以上)ある形は、込み入った主張の展開でよく見かけます。 ①PならばQ。②QならばR。(……)③RならばS。従って、③PならばS。 一見飛躍があるように感じられる主張も、間をつなぐ条件つき主張が隠れていて、それを解き明かしていくとこの形の推論が浮かび上がることがあります。 対偶を織り込む 前提から結論の間に対偶が活躍することもあります。例をふたつ挙げます。(頭に「?」が浮かんだら、P, Q, Rの関係を図に書いてみてください)。 ①PならばQ。②RならばQではない。従って、④PならばRではない。 ①QならばR。②QでないならばP。従って、④PでないならばR。 前件肯定や後件否定との“合わせ技” 仮言判断の連鎖の後に前件肯定が来て: ①PならばQ。②QならばR。(……)③P。従って、④R。 また、後件否定が来て: ①PならばQ。②QならばR。(……)③Rではない。従って、④Pではない。 といった、長めの混合仮言三段論法といった感じの推論も作れます。 前提を否定する結論が出てきたら!? 時にはこんな形の推論も―― ①PならばQ。②QならばR。(……)③RならばPではない。従って、④PならばPではない。 「Pが成り立つなら~」から始まって結論が「Pは成り立たない」となったら 矛盾 であり、話の筋道に問題がある証拠です。 意図せずしてこういう状態に陥ったら推論を見直すことになりますが(前提の真偽や、条件法の前件・後件の関係を確かめましょう)、 「前提が間違っている」ことを示すためにこういう推論を立てることもあります。数学の 背理法 が有名ですね。 仮言三段論法・気をつけたい落とし穴(誤謬) 後件肯定、前件否定 「前件肯定」「後件否定」とよく似た言葉で、 「後件肯定」「前件否定」 があります。 これらは一般に 妥当でない形 です。違いに気をつけてください(図4-5, 4-6)。 後件肯定の誤謬(図4-5上) :①PならばQ。②Q。従って、③P。 前件否定の誤謬(図4-5下) :①PならばQ。②Pではない。従って、③Qではない。 図4-5 後件肯定の誤謬(上)と前件否定の誤謬(下) 「PならばQ」に対して、 後件肯定は「QならばP」という“逆” を主張しています。 前件否定は「PでないならばQではない」という“裏” を主張しています。元の主張が真でも、“逆”や“裏”は一般に真ではありません(QだからといってPであるとは限らないし、PでなくてもQである場合がある)(図4-6)。 図4-6 “ならば”と逆・裏・対偶 前提の仮言判断(条件つき主張)の内容に注意 仮言三段論法は“ならば”の意味・働きに依存しています。 もっともらしい主張と感じられるならなおさら、主張内容の真偽を吟味することが大切です。 前件、後件の真偽 前件と後件の関係性(つながりに必然性はあるか、関連しているか) クイズ 問1~問3の主張は妥当でしょうか。推論の形に着目して考えてください。(解答は次回に) 次回 「 基本的な推論形式 」で出てきた「両刀論法」を詳しく見ていきます。 参考文献 近藤洋逸, 好並英司 『論理学入門』 岩波書店 1979 藤野登 『論理学 伝統的形式論理学』 内田老鶴圃 1968 John Nolt, Dennis Rohatyn(著), 加地大介(訳) 『現代論理学 (Ⅰ)』 オーム社 1995 図版に使用した画像の出典 Loose Drawing 人物画をお借りしています。 テストエンジニアのための論理スキル[実践編]  連載一覧 論理のかたち。推論とは  【連載初回、全文公開中】 基本的な推論形式 “または”を使って推論する The post “ならば”を使って推論する|テストエンジニアのための論理スキル[実践編] first appeared on Sqripts .
みなさんこんにちは。テストエンジニアのしば太郎、ひめりです。 ソフトウェアテストの勉強を日々行っていますが、参考書などに書かれた内容について、ほかの誰かに解説してほしいな、と思うことがあります。 同じ部署の先輩に相談したところ「生成AIを使ってみるのはどう?」というアドバイスがあり、初めて「生成AI」の存在を知りました。 生成AIとは AIという言葉は聞いたことがありましたが、生成AIという言葉は耳慣れない言葉でしたので、Webサイトで調べてみました。 生成AIとは、「ジェネレーティブAI(Generative AI)」とも呼ばれるAI(人工知能)の一種です。AIを用いてクリエイティブな成果物を生み出すことができるのが特徴的で、生成できるものは楽曲や画像、動画、プログラムのコード、文章など多岐にわたります。 生成AIはAIが自ら答えを探して学習する「ディープラーニング(深層学習)」を用いて構築された機械学習モデルであり、AIの中では比較的新しく生まれたモデルです。 「AIが人間のようにクリエイティブな成果物を生み出せる」点が従来のAIとは異なっており、画像生成AIの「Stable Diffusion」や、テキスト生成AIの「ChatGPT」などが一例として挙げられます。 AIsmiley「生成AI(ジェネレーティブAI)とは?使い方・種類・仕組み・活用事例を解説》」 そしてWebサイトを調べていくうちに、生成AIには画像生成、動画生成、音声生成、テキスト生成など、各分野に特化したAIがあり、各分野のAIも複数存在することが分かりました。 生成AIから文章だけではなく、画像や動画などが作り出せることに驚いたのと同時に、自分が利用したい目的を明確にし、適切な生成AIを選択する必要があることが分かりました。 続いては、実際に生成AIを使って勉強する前に、自分たちにはどの生成AIが適しているのかを決めていきたいと思います。 学習に使用する生成AIの決定 私たちは、画像や動画を作るのではなく、ソフトウェアテストを学ぶにあたって、生成AIに説明をしてもらいたいため、質問を入力するとAIが回答を生成してくれる「テキスト生成」の生成AIから選びたいと思います。 いくつかの生成AIを試し、理解しやすい言葉で説明してくれる「Gemini」に決めました。 学習開始 では、実際に生成AI「Gemini」を使って学習を進めてみます。 質問内容、使用してみての感想 1.  質問をし、勉強のきっかけを作ってみる まずは「ソフトウェアテスト」という仕事について、イメージを掴めるような質問をしようと考えました。 回答はできるだけわかりやすくしてほしいことから、Geminiへの質問文に「わかりやすく」という文言を入れてみました。 質問:「ソフトウェアテストの目的と種類をわかりやすく教えてください。」 Geminiの回答はこちら。 「ソフトウェアテスト」という仕事の概要について要点を押さえ、すっきりとまとめてくれました。 多少情報の不足はありそうですが、概要を掴むには十分です。学習の入り口にちょうどよいと感じました。 2. 専門用語を使わずに解説してもらう 1.でだいぶわかりやすい回答をもらえたものの、初心者としては、「モジュール」や「コンポーネント」等、専門用語が多い点が気になります。 用語の意味は追々調べるとして、せっかく生成AI学習をしているので、Geminiを活用し、1.の回答をさらにわかりやすく、「専門用語を使わない」形で書き換えてもらうことにしました。 1.の質問に以下の追加質問をしてみます。 追加質問:「専門用語を使わないでもっとわかりやすくしてください。」 Geminiの回答はこちら。 質問文の「専門用語を使わないで」「もっとわかりやすく」を忠実に守り、「車」という誰でもイメージできる例を使って回答してくれました。 「モジュール」や「コンポーネント」という単語のイメージが着き難かったのですが、「エンジン」や「ブレーキ」を使った例えが非常にわかりやすく、ようやく「単体テスト」や「結合テスト」等テストの違いが理解できました。 難しい用語でつまずくことも、Webサイトで調べる時間を取られることもなく読み進められました。 3. 疑問点を質問してみる 初心者あるあるだと思うのですが、理解できない部分が増えて勉強が思うように進まなくなると、頭の中にどんどん疑問がたまっていきます。 「なんでこんなにたくさんのテスト技法があるのだろう?」 「たくさんのテスト技法があるけれど、自分でテスト設計するときが来たら、どうやって選べばいいのかな?」 疑問を解決したいのですが、Webサイトで調べても分かりやすく説明されている検索結果を見つけられないことが多くあります。誰かに教えてもらいたいと思っても、身の回りに気軽に質問できる人はなかなかいません。 そのような時、生成AIには遠慮する必要がないので、自分の聞きたいタイミングで質問することができます。 さっそくGeminiに聞いてみます。 質問1:「なぜこんなに多くのテスト技法があるのですか?」 Geminiの回答はこちら。 「ソフトウェアには様々な側面があり、それぞれの側面を効果的にテストするために、それぞれ異なる技法が必要だから」という端的にまとめられた回答を読み、テスト技法の1つ1つに異なる役割があるからこんなに多くのテスト技法があるのだな、と理解することができました。また、Geminiはまず結論を伝え、次に理由や具体例を提示してくれるので、とても理解しやすいと感じました。 続いて、もう1つ聞いてみます。 質問2:「何を基準にテスト技法を選べばいいのか分かりません。どのように選べばよいのでしょうか。」 Geminiの回答はこちら。 この回答から、テスト技法だけではなく、テスト対象の種類・規模・複雑性はどうなのか、テスト対象をどういった観点でテストしたいのか、そしてテストにかけられる時間・コスト・テストを実行する担当者のスキルはどのくらいあるのか、といったテスト対象の様子やテストを実行するリソースにも関係することが分かりました。そのため、テスト技法の学習段階では、それぞれのテスト技法の特徴をとらえておき、私たちがテスト設計できるようになったとき、今回学んだ内容を活かしたいと思います。 AI学習の利点と注意点 これまで試した内容から、生成AIを使って勉強するメリットを以下のようにまとめてみました。 【メリット】 生成AIを使うことで手軽に学習ができる。 生成AIを使うことで学習のハードルを下げることができる。 人に聞きづらいことも遠慮なく質問でき、納得いくまで再質問ができる。 メリットがある一方で、生成AIを利用する際、気を付けなければいけない点があります。 生成AIは事実とは異なる情報をもっともらしく回答することがあり、このような現象を「ハルシネーション」と言うそうです。 そのため、初心者には生成AIの回答が合っているかどうかという判断が難しく、生成AIだけでの学習は誤った理解につながる可能性があるため、やはり参考書などのテキストとの併用が必要と感じました。 最後に 「ほかの誰かに解説してほしいな」から始めた今回の試みでしたが、私たちの目的は達成できたと思います。 生成AIを使った学習方法は、手軽に利用できる点、情報が掲載されているサイトを自分で探す必要がない点、生成された回答では理解が不十分である場合、納得できるまで繰り返し質問できる点において、大きなメリットを感じました。 また、今まで理解が難しかったテストの種類や技法が理解できたことで、自信に繋がりました。 生成AIを使うことで、自分ひとりでは理解するまでに時間がかかっていた内容を今までより効率よく学習できることから、これからも日々努力をつづけて、一人前のソフトウェアテスト実施者を目指していきたいです。 The post ソフトウェアテスト初心者が生成AIを使って勉強してみた first appeared on Sqripts .
みなさんはブラウザのパスワード保管機能(ブラウザパスワードマネージャー)を使っていますか? パスワードを記憶し、自動で入力してくれるのはとても便利ですし、入力の手間も省けるので使用している方も多いのではないでしょうか。 では、ブラウザのパスワード保管機能の危険性について考えたことはあるでしょうか? 結論から言うと、ブラウザのパスワード保管機能は危険があると言えます。ブラウザは 利便性を追求するものであり、安全性は二の次であること が最大の理由なのですが、今回はより具体的にブラウザのパスワード保管機能の危険性を考えていきたいと思います。 ※今回の記事では「ブラウザパスワードマネージャー」を「ブラウザのパスワード保管機能」と表記しています。 ブラウザのパスワード保管機能が危険と言われる3つの理由 ここでは具体的に危険と言われるポイントについて紹介をしていきたいと思います。 1. 暗号化による保護が十分でない可能性 1つ目は暗号化による保護が十分でない可能性があることです。 一部のブラウザにおいてはエンドtoエンドでの暗号化がなされないため、パスワードが平文となる瞬間・場所が存在する可能性があります。(注:必ずしも常に発生するわけではない) 参考 エンドツーエンド暗号化 ( E2EE 、 E2E暗号化 )は、通信経路の末端でメッセージの暗号化・復号を行うことで、通信経路上の第三者からのメッセージの盗聴・改ざんを防ぐ通信方式である。E2EEを用いた通信では、メッセージは意図した受信者だけが復号できるよう暗号化してから転送されるため、通信が傍受されたり、通信を中継するサーバが危殆化(きたいか)したりした場合でも、通信の機密性が確保される。 Wikipedia「エンドツーエンド暗号化」 より引用 また、ブラウザのアカウントログイン時はパスワードの復号が可能です。これ自体は悪いことではありませんが、ほとんどの人が常時ブラウザにログインしている状態であることを考えると、その間ブラウザに保存されているパスワードは暗号化による保護がされていないことになります。 この点は 前回 の記事でも解説していますのでご参照ください。 【第2回】パスワードマネージャーの選定時のポイント 第1回目の記事【パスワードの基礎と主な管理手法について】で、パスワード管理手法のうち、業務効率化の観点及び安全性向上の観点からパスワードマネージャーによる管理が有効な手段であることをご紹介しましたが、今回は具体的な選定のポイントについてご紹介をして...  続きを読む  Sqripts 関連記事|Sqripts 2. ブラウザ自体の脆弱性 2つ目はブラウザ自体に脆弱性が存在する可能性があることです。 ブラウザが利便性を追求するものであるということは何度も言及していますが、便利であるが故にセキュリティ面では脆弱性を孕むことが多々あります。 例えば、 JVN iPedia で「Google Chrome」と検索すると、執筆時点(2024年5月)で 4,215件 の脆弱性情報を確認することができました。全てがパスワード管理に関係するものではありませんが、利便性を追求するブラウザを使用することで、日々多くの脆弱性と隣り合わせているということを考える上では参考になる数値です。 ブラウザのパスワード保管機能を使用するということは、このような脆弱性を抱えるツールでパスワードという機微情報を保管しているということです。 このことの危険性を知る必要があることは言うまでもありません。 3. ハッカーにとってブラウザは人気のターゲット 3つ目は、ブラウザがハッカーに人気のターゲットであることです。 ここではサイバー攻撃をする側の目線に立って考えてみたいと思います。 もし、あなたが「悪意あるハッカー」だったとして、 世界中のほとんどの人が利用している 多くの脆弱性が存在している 価値のある情報が沢山保存されている そんなものがあったら、真っ先に狙ってみたくなりませんか? この「狙いたくなるターゲット」の1つがブラウザです。 パスワードをはじめクレジットカード等の機微情報も保管されているブラウザは、悪意あるハッカーにとっては情報の宝庫と言えます。実際に、サイバー攻撃でブラウザが標的となるケースは多数報告されています。 身近なところでは、マルウェアの「Emotet」は端末に感染後、ブラウザに保存されているパスワード等を奪取することが知られています。 Emotet対策|警察庁Webサイト Emotetは、主にメールの添付ファイルを感染経路としたマルウェア(不正プログラム)です。過去にやり取りしたメールへの返信を装ったメールを送信し、添付ファイルの開封を促します。感染するとパソコンからメールアカウント、パスワード、メール本文等の情報を窃取...  詳細はこちら  警察庁 関連情報 ブラウザのパスワード保管機能に対する最新の動向 ブラウザのパスワード保管機能についてセキュリティ面での危険があることについて解説してきましたが、世界的な潮流はどうなっているのでしょうか。 ここでは著名なセキュリティ関連機関等の見解をご紹介したいと思います。 NIST(米国) NIST (National Institute of Standards and Technology)とは、日本語では「米国国立標準技術研究所」と呼ばれ、米国の科学技術分野における計測と標準に関する研究が行われている機関です。 世界的にセキュリティ対策の標準となることが多いNISTのドキュメントですが、パスワード関連では「Digital Identity Guidelines(SP 800-63)」が参考になります。 NIST SP 800-63 Digital Identity Guidelines NIST Special Publication 800-63 Digital Identity Guidelines  詳細はこちら  pages.nist.gov 関連情報 パスワード管理のベストプラクティスが記載されており、最近ではパスワードの定期変更は不要であると発表をしたことでも注目を集めたドキュメントですが、ブラウザのパスワード保管機能について利用の是非は明言されていません。 ただし、パスワードマネージャー(※ 第2回で解説している有償のパスワードマネージャーのこと )を利用することの有効性はFAQ内で言及があり、パスワードマネージャー利用時のチェックポイントとして、主に以下のような点が挙げられています。 攻撃から保護するために十分な長さと複雑性のあるマスターパスワードを利用することができ、盗難されないよう保護する。 パスワードマネージャーで保管する各サービスに対して、一意で複雑なパスワードを生成できる。 マスターパスワードの復元が可能なツールは避ける。アカウント回復ツールによってマスターパスワードが漏洩すると、全てのパスワードが漏洩する可能性がある。 多要素認証による保護メカニズムがあるパスワードマネージャーである。 ※上記は日本語への翻訳を行った上での要約です。正確な情報は原文にてご確認ください。 ( https://pages.nist.gov/800-63-FAQ/#q-b12 ) NISC(日本) 内閣サイバーセキュリティセンター・ NISC (National center of Incident readiness and Strategy for Cybersecurity)とは、日本政府の情報セキュリティ政策を遂行する機関です。 内閣官房に設置されている日本のセキュリティ機関です。パスワード管理関連では、NISCから発行されている「インターネットの安全・安心ハンドブック Ver5.00」にブラウザのパスワード保管機能に関する言及があり、 利用は非推奨 となっています。 出典: インターネットの安全・安心ハンドブック Ver5.00 全体版(115ページ)より インターネットの安全・安心ハンドブック - NISC 内閣サイバーセキュリティセンター(NISC)が制作した「インターネットの安全・安心ハンドブック」様々なサイバー攻撃とその対応策を、イラスト入りで分かりやすく解説しています。無料で自由にダウンロードでき、学校やご家庭、会社内での情報セキュリティ研修の教...  詳細はこちら  security-portal.nisc.go.jp 関連情報 非推奨とする理由としては 「 パスワードなどの自動入力は便利ですが、仕事場などであなたがパソコンをロックしないまま席を離れると、他人が各種サービスにログインし放題になります ※ 」 という言及がなされていることから、上記の「 1. 暗号化による保護が十分でない可能性 」でも言及した点と似たものと言えるでしょう(=ブラウザにログインしている間、パスワードは暗号化されていない) ※ インターネットの安全・安心ハンドブック Ver5.00 中小組織版(11ページ) セキュリティベンダーや専門家(各国) Webで「ブラウザパスワードマネージャー 危険性」などで検索すると、数多くのサイトや記事でブラウザのパスワード保管機能が非推奨として言及されております。 これらの多くが、「ブラウザのパスワード保管機能が危険と言われる理由」でご紹介した要素を理由に、ブラウザのパスワード保管機能の利用を非推奨としています。 それでもブラウザのパスワード保管機能を使う場合 ここまでブラウザのパスワード保管機能の危険性について解説してきましたが、決して「ブラウザパスワードマネージャー = 悪」というわけではありません。 押さえるべきポイントを理解して利用すれば、ブラウザのパスワード保管機能はコストが発生しないというメリットを持つ有効なツールにもなり得ます。 ここでは、ブラウザのパスワード保管機能を使う場合のポイントを紹介します。 セキュリティリテラシーを持つこと ブラウザのパスワード保管機能の危険性を理解できること 。これはブラウザのパスワード保管機能を使う場合の必須事項であり、第一歩です。言い換えれば、「なんとなく便利だから」というだけの状態 = これまで解説してきたような基本的な知識を持たない状態では、ブラウザのパスワード保管機能を利用すべきではありません。 ブラウザアカウントへのアクセス管理 ブラウザアカウントへのアクセス管理を適切に行うこと が重要です。特に二要素認証は必須と言えるでしょう。法人利用の場合には、グループポリシー等で二要素認証を一括で強制的に有効するなどの対策が考えられます。個人利用の場合も設定から二要素認証を有効にしておきましょう。 また、パスワード保管をする全てのブラウザアカウントで、例外なく二要素認証は有効にすべきです。 管理の責任は個人に依存することを理解する 「ブラウザのパスワード保管機能を利用する」=「パスワード管理を個人に委ねる」ことを意味します。ここで注意が必要なのは、組織的にブラウザのパスワード保管機能を利用する場合です。 以下が考え方のポイントとなります。 個人でパスワードマネージャーを利用する場合 パスワード管理をする人=個人 パスワード管理の責任=個人 →管理する人と責任の所在が一致するため、自分の責任で管理するという極めて基本的な考え方となります。 組織でパスワードマネージャーを利用する場合 パスワード管理をする人=個人 パスワード管理の責任=組織 →管理する人と責任の所在が一致しません。そのため、パスワードを管理をする人のミスや不注意の責任を組織が負うことになり、リスクが発生します。 まとめ ブラウザのパスワード保管機能は便利ではありますが、セキュリティの観点からは危険が存在します。 具体的には、不十分な暗号化、多くの脆弱性といった危険が挙げられます。 セキュリティ関連機関等の見解では、ブラウザのパスワード保管機能の利用は非推奨の傾向があります。 政府、専門機関からブラウザのパスワード保管機能に対するいくつかの考え方、指針が出ているので参考にすることができます。 どうしてもブラウザのパスワード保管機能を利用する際は、危険があることを理解した上で、ポイントを押さえて利用しましょう。 ブラウザのパスワード保管機能を組織的に利用するにはリスクがあるため、リスクの理解が必要です。 シリーズ「組織におけるパスワード管理」記事一覧 【第1回】パスワードの基礎と主な管理手法について 【第2回】パスワードマネージャーの選定時のポイント 【第3回】ブラウザのパスワード保管機能を使う危険性 The post 【第3回】ブラウザのパスワード保管機能を使う危険性 first appeared on Sqripts .
この連載では、ITエンジニアにとって親和性が高く「スキルアップしたい」と思う方にとっては役に立つであろう知的生活について、いろいろなアクティビティやツール、仕事での活用方法などについてご紹介します。知的生産・知的生活の考え方や、「そもそも知的生活とはどうあるべきか」等の話ではなく、できるだけエンジニアの普段の生活や仕事に役立てられるテクニックよりの話をするつもりです。 前回 の記事では、知的生活の母艦となるツールの選び方や、新しい価値を生み出すための材料として情報を蓄積すること等について解説しました。 【第2回】知的生活の母艦としてのツールを選び、活用する この連載では、ITエンジニアにとって親和性が高く「スキルアップしたい」と思う方にとっては役に立つであろう知的生活について、いろいろなアクティビティやツール、仕事での活用方法などについてご紹介します。知的生産・知的生活の考え方や、「そもそも知的生活と...  続きを読む  Sqripts 関連記事|Sqripts 今回は情報をインプットする代表的な手段である読書について、とくに技術書以外の書籍を読んで情報として蓄積する際のやり方や、読んだ本を活かす際の考え方についてご説明します。 <ITエンジニアの仕事を楽しくする知的生活 記事一覧> ※クリックで開きます 【第1回】知的生活とはなにか?エンジニアにどう関係するのか [全文公開中!] 【第2回】知的生活の母艦としてのツールを選び、活用する 技術書以外を積極的に読み、幅を広げる ITエンジニアとして仕事をしていると、プログラミングやソフトウェア開発、そして品質やテストなど、技術書を読む機会は多いです。日々の業務に直接関わるジャンルであり、結果として自分のスキルやキャリアに活かしやすいというメリットがあるでしょう。 しかし、技術書以外の書籍を読むことも、とくに知的生活という点ではとてもオススメです。 世の中で活躍するエンジニアの方は、もちろん技術書もたくさん読んでインプットしていますが、そのほかにも – ピープルマネジメント・プロジェクトマネジメント – 組織開発 – 教育心理学 – 資料作成 – 営業・マーケティング など多様なジャンルについて学んでいます。身の回りのエンジニアに対して「そのようなことまで詳しいんですか!」と驚いた経験はありませんか? こうした、即効性はないかもしれないけれども自分の知識の幅を広げてくれるような本は、とくに若いうちに読み漁っておくとのちのち効果を発揮します。 以下のようなつぶやきをしたことがありますが、何人かの方から「わかる」「やってた」という反応をいただきました。みなさん優秀な方ばかりでしたので、実際に効果がある方法のように思います。 たまにおじさんらしいことでも言っておくと、 20代、月収の10%本買っておけば あとでブーストになると思います — Yoshiki Ito/伊藤由貴 (@yoshikiito) May 3, 2024 読書で得た情報を蓄積しておく 業務に直結する技術書以外を読んで知識を蓄えておくことが大事です、という主張に関しては、ほとんどの方が賛同してくださるでしょう。 では、その「蓄える」のは、どこにどうやって行うのか。頭で記憶しておくだけでは、せっかくのインプットが揮発してしまいます。 そこで、前回もご紹介した知的生活の母艦となるツールの出番です。 知的生活を楽しんでいる方には読書家も多く、ほぼ皆さんが読書メモの形で書籍からインプットした内容をまとめています。 たとえば、私がまとめている読書メモの例をご紹介します。 読書メモのポイントはいくつかありますが、主な内容としては以下を記録しておくとよいでしょう。 – 買おう、読もうと思ったきっかけ – いつ読み始めたか – 書籍の中の気になる・グッときたフレーズ – 書籍を読んでいて考えたこと、疑問、感じたことなど 必須ではありませんが、書影の画像なども添付しておくとツール上で探しやすくなりますし、「きれいなメモをしている感」も得られるのでオススメです。 また他にも、単純に書籍のなかから文章を抜き書きするだけではなく、自分の感じたことや疑問なども書いておきましょう。これは詳細に書ければベストですが、読書をしながらメモをたくさん書いているとリズムを損なう場合もあります。そういったときは「なるほど!」や「わかる!」などの簡単なものでもいいので感情を添えておくと、あとで思い出しやすくなります。 大切なのは、ツールにメモをすることによって適切に忘れることです。 「あの本のこのページにこんな文章が書いてあった」とすべて記憶しておくのは大変です。そうではなく、「たしかこの本に書いてあったはず」というレベルで記憶しておいて、実際に思い出すときにはツールに検索をかけられる状態にしておく。これがポイントです。 たとえば「心理的安全性が大事、とどこかの本で読んだ気がするぞ」と覚えていれば、検索をかけて上記の読書メモにたどり着くことができます。同時に、同じ心理的安全性という単語が出てくる他の情報も表示されるので、情報同士を組み合わせて新しい価値を生み出すことが行いやすくなります。 「利他的な読書」を仕事に活かす 技術書以外の本を、なるべく幅広く読み、そして知的生活の母艦に蓄積する。 「理屈はわかるけど大変そう」と感じられるかもしれません。そして、本連載は「ITエンジニアの仕事を楽しくする知的生活」です。単に苦しいだけの読書では継続できません。 読書はそれ自体ももちろん楽しいものですが、仕事に活かせたとき、役に立ったという実感を得られたときも楽しみを感じるポイントです。 自分が仕事をしていて困ったことやわからなかったことを解決するために、本を読み実践する。これも良いことですが、ここではあえて「利他的な読書」という楽しみ方を提案したいです。 利他的な読書というのは私の造語で、他人のために読書をする、という意味です。大きく二通りのやり方があります。 ひとつは、職場の同僚がなにか困っている際に、解決のヒントになりそうな情報を得るために本を読み共有する方法です。課題ありきで本を選ぶやり方です。 このやり方であれば、自分の興味の範囲を越えたジャンルの書籍を読むきっかけにもなるので、幅広い知識をインプットすることにもつながります。 もうひとつは、普段からさまざまな本を読んでおいて、同僚が困っているときに読書メモからサッと「こうするといいよ」「この本が参考になるよ」と取りだすやり方です。 こちらの方法も幅広いインプットにつながりますし、さらに「情報をサッと取り出せるようにしておく」ための努力に自然につながるというメリットがあります。 いずれの方法も、自分のためだけに読書をする場合と比べて幅が広がりますし、なによりひとの役に立てます。もちろん、手段や書籍の押し付けにならないよう注意が必要です。 しかし、適切な情報提供ができれば相手から感謝されますし、それによって次のインプットを行うモチベーションにつながっていきます。こうした良いサイクルを作って回していくことが、ITエンジニアの仕事を楽しむことにつながる、と考えます。 皆さんも、普段の読書で得た情報を蓄積し、それを自分や他人のために役立ててみてください。 ITエンジニアの仕事を楽しくする知的生活 連載一覧 【第1回】知的生活とはなにか?エンジニアにどう関係するのか [全文公開中!] 【第2回】知的生活の母艦としてのツールを選び、活用する The post 【第3回】技術書以外の本を読み、仕事に活かすには first appeared on Sqripts .
ソフトウェア品質の向上に向けた活動は終わりの無い、息の長い取り組みです。 活動の成果を出すためには開発現場任せにせず、計画的・組織的なプロセス改善を行う取り組みが王道です。 本書では、そのような取り組みに活用できるテストプロセス改善モデルの一つ、「TPI NEXT」の概要をご紹介します。 テストプロセス改善の課題 テストプロセス改善には下記に示すような課題があり、必要性は感じていながらもなかなか思うように進まないのが実情です。 コスト、リソース、スケジュールの制約のため、テスト実施が優先されてプロセス改善まで手が回らない ステークホルダーを巻き込んだ取り組みが必要であり、利害関係者の意見調整に労力と時間がかかる 現状の課題対応優先順位やプロセス成熟度レベルの把握が難しく、改善目標の設定が難しい テストプロセスの課題解決によって実現される品質向上効果が測定しにくい 又、品質向上にはテストプロセスだけではなく、開発プロセスと連携した取り組みも重要です。 プロジェクトの限られた期間と工数の中で、タスクの優先順位付けとそれに応じたリソース配分を適切に行うことは、熟練した経験者でも大変であり、テストプロセス改善のハードルを高くしています。 テストプロセス改善への取り組み これらの課題を解決していくためには、ソフトウェア開発・保守・運用をささえる三要素である「人」、「プロセス」、「技術」をバランス良く改善することが成功の秘訣です。 テストプロセス改善も一般的な業務プロセス改善と同じく、上記三要素に着目しながら次の順番で進めていきます。 現状の課題を整理・分析し、根本課題を把握する 根本課題を解決する施策案を検討する 最終目標を設定し、達成までのステップとマイルストーンを策定する ステップ毎の具体的な取り組み内容を決める リソースとスケジュールをアサインして実行する これら一連の取り組みを効率的に進めていくためには、実績に裏打ちされた方法論、進め方のガイドライン、改善状況を測定するための評価指標等があると、効率的に進めることができます。 TPI NEXT はこのようなニーズを満たすツールの一つとして活用することができます。 TPI NEXT とは TPI NEXT は Capgemini グループである Sogeti 社が、欧米 1,000 社近くのコンサルティング結果をまとめたテストプロセス改善のモデルです。 1998年に発表した TPI(Test Process Improvement) の実践事例に基づく改訂版として、2009 年に TPI NEXT が発表されました。 テストプロセスの成熟度を多角的な視点から可視化するためのツール、改善活動を達成するためのコツや提案が、実践を通じて蓄積されたノウハウを盛り込んで体系的にまとめられた改善モデルです。 ツールとしての TPI NEXT の概要 全体像と構成要素 TPI NEXT の全体像と構成要素を(図1)に示します。 図1:TPI NEXT 全体像と構成要素 テストプロセスの成熟度を測定、可視化する 「テスト成熟度マトリクス」を中心として、下記の各要素で構成されています。 テストプロセスを 16の切り口で分類した 「キーエリア」 各「キーエリア」毎に、下記の 4段階で定義された 「成熟度レベル」 -Level0:初期レベル ⇒ テスト活動の構成要素が充分に文書化されていないアドホックな活動 -Level1:コントロールレベル ⇒ 行うべきことに取り組み、テスト対象の品質を十分に把握できるレベル -Level2:効率化レベル ⇒ テスト活動を適切に実施するように方法を改善するレベル -Level3:最適化レベル ⇒ 刻々と変化する状況に絶えず順応するレベル 「成熟度レベル」を定義・測定するための「チェックポイント」 「チェックポイント」達成のためのヒントと提案を提示する、「改善提案」、及び 「キーエリア達成のコツ」 複数の「チェックポイント」をグループ化し、効率的な改善活動の順序を提案する 「クラスタ」 テスト成熟度マトリクスの見方 「テスト成熟度マトリクス」 のイメージを(図2)に示します。 図2:テスト成熟度マトリクスのイメージ 縦軸方向に SR( S takeholder R elation)、TM( T est M anagement)、TP( T est P rofession)の3カテゴリに分類された 16 の「キーエリア」が配置されています。 横軸方向には「初期レベル」~「最適化レベル」の 4つの「成熟度レベル」が並び、各レベルはキーエリアに応じて更に 2~4 レベルの「チェックポイント」に細分化されています。 各「チェックポイント」の達成条件は別途チェックシート形式で提供されており、そのチェック項目に “Yes”、”No”、”N/A” で回答していくことによって、テスト成熟度マトリクスの各「チェックポイント」が “条件を満たす(グリーン)”/”条件を満たさない(オレンジ)” で色分けされます。 テスト成熟度マトリクスによる評価 チェックポイント達成状況の評価が一通り終わったら、キーエリア毎の成熟度が評価できます。 ある成熟度レベルの全チェックポイントが条件を満たしたとき、そのキーエリアが当該成熟度であると評価します。 図2の例であれば、「03:テスト戦略」、「05:コミュニケーション」、「06:報告」、「10:欠陥管理」、「12:手法の実践」~「15:テストツール」、の各キーエリアが「コントロールレベル」にあると評価します。 又、「16:テスト環境」のキーエリアは「効率化レベル」にあります。 評価結果に基づくアクション策定 この成熟度マトリクスは、現状テストプロセスの成熟度を可視化しているとともに、次に実行すべきアクションを提案しています。 基本的な改善のアプローチ方法として、キーエリア毎に成熟度の低い(マトリクスの左側にある)未達成のチェックポイントを達成するように対策を検討します。 TPI NEXT は対策検討のためのヒントとして、チェックポイント毎に「改善提案」、及び「キーエリア達成のコツ」を提供しており、これらの情報を参考にアクションプランを策定することができます。 又、成熟度マトリクスには「クラスタ」という概念が導入されており、各キーエリア間でバランス良く改善対策を検討できるようになっています。 図2の例では、各チェックポイントに “A” ~ “M” 迄のアルファベットが付番されており、同じアルファベットが付番されたチェックポイントを一つの「クラスタ」と呼びます。 クラスタ単位でアルファベットが若い順番(A ⇒ M の順番)にチェックポイントを達成していくことによって、キーエリア横断的な視点で優先順位を考慮したプロセス改善が図れるという考え方です。 図2 の場合であれば例えば、 「”A” のクラスタは全て条件を満足しているので、 “B” ~ “E” のクラスタにある未達成のチェックポイントを対策することで、テストプロセス全体の成熟度を “コントロールレベル” に底上げしよう」という目標設定が考えられます。 このクラスタは TPI NEXT のツールでデフォルトとして提案されている他、ビジネスニーズに合わせて優先度をカスタマイズすることができるので、テスト組織のニーズや戦略に合わせてテスト成熟度マトリクスを活用することができます。 テストプロセス改善への TPI NEXT の活用例 ここまで、TPI NEXT のツールとしての側面を中心にご紹介してきました。 TPI NEXT 自体はテストプロセス改善モデルですので、企業毎、組織毎の改善活動の中に組み込んで上手に活用することが品質向上のキーとなります。 本章では活用例として、ソフトウェア開発企業の 「品質管理組織」から委託を受けたTPI NEXT のコンサルタントが、同企業のステークホルダーを巻き込んで現状プロセスの成熟度診断を行うケースを紹介します。 尚、TPI NEXT のモデルに基づく改善は本来、現場主導のボトムアップ アプローチであり、コンサルタントによるアセスメントは必要ありませんが、プロセス改善のリソース不足対策や、第三者視点での現状評価・改善のアイディア導入等の目的で外部コンサルタントの支援を得ることもあります。 登場人物と役割分担は下記を想定しています。 コンサルタント:全体プロセスリード、TPI NEXT ツールの準備、及びワークショップのファシリテーション 品質管理組織:自社のテストプロセス改善をミッションとしたタスクフォースのリード ステークホルダー:同企業の開発組織や運用組織の責任者・リーダー 全体の流れを(図3)に示します。 図3:TPI NEXT を活用した成熟度診断例 (1) TPI NEXT 概要説明 コンサルタントは、品質管理組織に対して全体の進め方とTPI NEXT 概要を説明します。 品質管理組織は、TPI NEXT のチェックシートを用いて自己診断を行います。 TPI NEXT コンサルタントはチェックシートの質問内容の趣旨、判断基準の考え方、用語の意味等について、品質管理組織の自己診断をサポートします。 自己診断は各チェックポイントの Y/N 判定だけでなく、判定理由を記入するとともに、課題の現状を示すエビデンス資料(テスト計画書、進捗管理表、欠陥管理表、課題管理表、品質分析資料等)を入手して現状を客観的、定量的に把握できるようにします。 (2) ステークホルダーへのヒアリング コンサルタントは品質管理組織と協力して、各ステークホルダーに個別にヒアリングを行います。 品質管理組織が自己診断で判断できなかった項目の他、各ステークホルダー間での認識の齟齬、組織間の利害関係、品質戦略の理解浸透状況 等の課題についてもヒアリングを行います。 ヒアリングはTPI NEXT のチェックシート 1問1答形式ではなく、各チェックポイントの趣旨を現状課題に置き換えて、ステークホルダーに身近な課題として回答を引き出せるように準備します。 必要に応じて開発委託先や運用委託先企業のリーダーにもヒアリングを行います。 コンサルタントは品質管理組織と協力して、ヒアリング結果を基に「TPI NEXT チェックシート」に記入します。 (3) 改善施策検討ワークショップ 事前準備として、コンサルタントは「TPI NEXT チェックシート」、「テスト成熟度マトリクス」を中心に、ヒアリング結果や課題のエビデンス資料を分析し、ワークショップの論点整理を行います。 品質管理組織とステークホルダーによるワークショップを開催し、コンサルタントのファシリテーションで主要課題の認識合わせと論点の検討を行います。 ワークショップ参加者は、「テスト成熟度マトリクス」、「改善提案」、「キーエリア達成のコツ」 等を参考に、実施するべき施策を議論し、合意します。 品質管理組織はステークホルダーと協力して、合意した施策のスケジュールとリソースを決定し、アクションプランとして取りまとめます。 取りまとめたアクションプランについて、品質管理責任者の承認を得ます。 おわりに テストプロセス改善モデルの一つである、TPI NEXT の概要と活用例をご紹介しました。 TPI NEXT は日本語化された excel ツールや、活用のための分かり易い手引書等も出ているので、比較的容易に始められるのではないでしょうか。 又、手法自体のカスタマイズ性も高く、必要な箇所だけをセレクトする等の使い方も柔軟にできるので、部分的なテストプロセス改善等に適用して試してみて頂ければと思います。 Appendix:参考となるサイト、書籍 など TPI Next ツール Test Process Improvement (TPI) Sogeti’s Test Process Improvement model – TPI NEXT® – reflects the changes in today’s business dynamics and technology developments. The model still provides a step-by-step guide to developing an insight into the relative maturity of an organizati...  詳細はこちら  TMap 関連情報 TPI NEXT テスト成熟度マトリクス ツール(日本語版 ver 2.1.2) TPI NEXT テスト成熟度マトリクス ツール ユーザーマニュアル(日本語版 ver 1.2.1) TPI Next 関連参考資料 「TPI NEXT ビジネス主導のテストプロセス改善」 (トリフォリオ:日本語翻訳版) 「はじめてのテストプロセス改善」 (翔泳社:電子書籍) 「テストチームの健康診断」 (JaSST東海実行委員:JaSST ‘17 Shikoku 講演資料) The post TPI NEXT®を活用したテストプロセス改善 first appeared on Sqripts .
はじめまして。テストエンジニアの藤江です。2023年9月に現在の勤務先にJOINし、テスト実施管理者として顧客の課題やお困りごとに最前線で対応しています。今回は、テスト実行プロセスにおけるモニタリングとコントロールについてご紹介したいと思います。 テスト実行プロセスにおけるマネジメントのための事前準備 事前準備として重要なのは、マネジメントを行うための基準を決めることです。モニタリング及びコントロールのプロセスを最適化し、調整するための基準をテスト計画の段階で策定します。具体的には以下のような基準の調整を行います。 テスト対象、テスト範囲、テストスケジュールの把握 テスト実行プロセスにおけるモニタリングを行う際には、現時点の状態を正しく把握し、問題を検出することが重要です。テスト計画の時点でテスト対象、テスト範囲、テストスケジュールについて合意を取り、計画と実績の差分を取れるようにします。 モニタリング対象の選定とQCDバランスの合意 計画と実績の差分が取れるような基準を決めた後、テストの進行状況に合わせてモニタリングの対象を決めます。計画時には、上手く行かなかった場合の対応策を事前に決めておくことも重要です。QCD(品質(Quality)、コスト(Cost)、納期(Delivery))のうちどれを重視し、 計画との乖離がどれくらい出たら実行に移すのかを予め決めておくことが必要です。 テストと開発が並行で実施される場合の留意点 テストと開発が並行している場合、開発側のスケジュールに影響してテスト計画を変更することもあるため、特にスケジュールに留意し、テスト実施のスケジュールだけでなく、実施の前提となっているシステム実装側のスケジュールも確認する必要があります。 モニタリングとコントロールとは モニタリング 対象の状態を連続または定期的に観測・記録し、監視し続けること。ソフトウェアテストにおいては、問題やエラーを早期に検知するためにテストの進捗状況や結果をリアルタイムで把握し、テストプロセスを最適化するためのデータを収集します。 コントロール 対象を目的の状態にするために操作すること。ソフトウェアテストにおいては、テスト実行中に発生する問題への対処や修正を迅速に行い、テスト実行の流れを管理し、リソースやテスト実行プロセスに対する行動を調整します。 テスト実行プロセスのマネジメントで行うモニタリングとコントロール テストのモニタリングとコントロールに関して、JSTQB テストマネージャーのシラバス「2.3.4 テストプロセスにおけるテストの優先度付けと工数の割り当て」から一部抜粋します。 テスト実行では、テスト計画作業で決定した優先度に従ってテストを実行すべきである。 ただし、計画を作成した後で得られた情報に基づいて、定期的に優先度付けを更新することも重要である。 テスト結果と終了基準ステータスを評価しレポートする場合、テストマネージャは、リスク、要件、利用方法プロファイル、およびチェックリストに関して、評価し、レポートする必要がある。 さらに、テストを選択し優先度付けするために使用するそれ以外のガイドについても、評価し、レポートする必要がある。 必要に応じて、テストの優先度付け方式に基づいて、テストのトリアージ(実行順序判定)を行う必要がある。 ソフトウェア開発において、問題を迅速に検出し解決するためのモニタリングは、早期に問題を発見し修正するうえで非常に有益です。以下にいくつかのモニタリングの例を紹介します。 不具合箇所の早期発見 特定の不具合により実行できない箇所がないかを厳密にモニタリングします。これにより、開発プロセス全体において生じる影響を最小限に抑えることが可能です。 不具合によって実行できていない箇所をモニタリングするためには、試験項目のバックログ(BK)を不具合のチケット番号と紐付けし、各チケットごとに関連する試験項目数を一覧化することが有効です。これにより、不具合チケットによって何件のテストケースが実行できないかを把握し、効果的にモニタリングすることができます。 品質向上によるテスト効率改善 品質が低い場合、テスト効率を損なう原因となります。モニタリングを行い、品質が悪い箇所を特定し改善することでテストプロセス全体の効率を向上させます。 品質が悪い箇所をモニタリングするためには、不具合報告の際に予めさまざまな属性をタグ付けし、タグごとに集計したデータを確認する手法が有効です。これにより、特定の機能ブロックに不具合が集中している場合、その部分の改修を行うことで全体の効率を向上させることができます。 進捗状況の把握 テストの現状と目指しているゴールとの差分を常に確認し、周知することが重要です。全体の進捗状況を把握することで、チーム全体が同じゴールに向かって進むことができます。 計画との乖離を確認する方法としては、WBS(Work Breakdown Structure)による各機能のテスト進捗確認に加えて、EVM(Earned Value Management:実績と計画をコストの面から状況を把握する手法)を使用して、項目の消化状況と使用したコストが計画通りに進行しているかを確認することが有効です。この数値を日々確認することで、計画からの乖離が起きていないかをモニタリングすることができます。 これらのモニタリング手法を実践することで、ソフトウェアテストの実行状況を把握し、問題の早期発見とそれによる迅速な対応ができるようになります。 また、同様に問題を修正するためのコントロールも重要です。以下にいくつかのコントロールの例を紹介します。 実装スケジュールに併せての実施テストの入れ替え 開発の進捗に合わせてテストを調整し、特定の機能やコンポーネントのテストを実行する順番を変更することが重要です。リソースや時間の制約下で柔軟に対応することが必要です。具体的には、実装が遅れている機能のテストを後回しにして他のテスト実施を優先的に実施するといった対応を行います。 不具合にて実施できないテストスイートとの順番入れ替え 不具合の発生により特定のテストが実行できない場合、他のテストスイート(テストの目的や条件が似ている複数のテストケース)と順番を入れ替えて進行することで、効率的なテストの実施を維持します。 予め乖離が出た際に決めておいた合意に従っての変更 プロジェクトの進行において、予め設定された計画からの乖離が生じる可能性があります。その際には、事前に合意された方針や変更手順に従って適切に調整を行います。 例えば、テスト実施時に計画から3割以上の乖離を確認したら重要な機能テストにのみテスト実施者を集中させる、開発チーム側としてデバッグや修正を迅速に行うための専任の担当者を配置するといったことを実行します。 システム開発において、テストフェーズと実装フェーズが同時進行する際には以下の留意点が重要です。 開発側の実装スケジュールとの調整 開発チームの実装スケジュールとテストの実行を調整し、スムーズな進行を図る必要があります。 不具合の追跡と修正処理 開発者が修正を行うため、不具合の特定から修正までの速度を明確にし、リスクを管理することが欠かせません。 デグレード等の検証 実装とテストが重なることから生じるデグレードなどのリスクに適切に対処し、品質を維持する必要があります。 テスト結果に基づく意思決定 テスト中止やスケジュールの見直しの基準を適切に設定し、進捗状況をモニタリングして、プロジェクト全体の進行状況を把握します。 これらの留意点を踏まえ、開発とテストが同時進行する場合には適切な調整やコミュニケーションが不可欠です。異なるフェーズが連携して効果的な結果を生み出すためには、定期的なリポートやミーティングを通じて全体像を把握し、適切な対応を行うことが重要です。 イレギュラーケースの対応事例 様々な面からテストに関する要望が寄せられることが増えてきました。特にイレギュラーかつ重要な対応が求められる場面も多く、以下のような要望を頂くことがあります。 消化スケジュールに対する要望 要望内容: 人員を増やしてでも項目を早く消化してほしい。 検討事項: スケジュールの短縮はプロジェクトにとって重要です。迅速な対応のため、追加スタッフの配置や最適化を実施し、進捗を優先的に考える必要があります。 作業追加に対する要望 要望内容: 検出された不具合に関する優先度の高いものを精査してほしい。 検討事項: 高い優先度の不具合については適切な対応を行うため、検証プロセスを改善し、緊急性を優先的に考慮する必要があります。 これらの要望に対しては、以下の手順で支援を行っています。 品質保証の芯についての確認 テスト品質の中心部位を確実に把握し、対応を行うための基礎となる情報を整理します。具体的には優先順位の再整理として、絶対に落としたくない機能や超えてはいけない期日等を明確にしていきます。 後ろに控えている作業や要望の背景の確認 現在の要望の他に、背景に潜む問題や要求事項なども含めて把握します。何を求めているのか、要望を言葉通り捉えて良いのかといった点を特に確認します。 例えばですが、試験項目をもっと消化してほしいという要望があるとします。詳細なヒアリングを行ってみると、複雑な手順については開発チームでのツール導入を検討している。軽微な手順の箇所を先に終わらせてほしい。複雑な手順の項目に対して各テスターが仕様書を見て時間をかけないようが良いといった試験実施順序の入れ替えの要望だったりすることがあります。 QCDのうち何をトレードオフとするのか QCDに関して、何を優先し、何を譲歩するかを明確にします。例えば、単純にコストと納期の優先を要望されたので、品質を落とします。といったトレードオフは出来ず、トレードオフを行うにも納得してもらう必要があります。 具体的に納期の優先を要望された場合に、品質を落とすのであれば、試験実施のエビデンス取得手順及びエビデンス確認によるクロスチェックを止めます。これによって試験実施を行ったことに関する証左や後から実施内容のトレースが出来なくなってしまうことを了承してもらうといったトレードオフが必要になります。主なトレードオフとなりやすいのは以下となります。  ・作業手順を減らす  ・テスト環境を減らす  ・テスト項目を減らす どの場合もトレードオフのリスクについて同意を得る必要があります。 要望に対する具体的な対応案の作成 施策や改善策を具体的にまとめ、実行可能な提案を作成します。手順としてはトレードオフとなったことで、確保することができたリソースをどう分配するかを検討します。先ほどの納期優先のためにテストの手順を一部削減する例であれば、手順を削減することでどのくらい試験実施が進むのかを見積もり新しいスケジュールを作成、お客様と相談の上計画に問題ないかを確認します。 変更の経緯及び作業影響に関するテスト実施メンバーへの説明 変更の経緯や予定の変更箇所についてテスト実施メンバーに的確に説明し、スムーズな実行を促します。要望対応についてテスターとしてどのような対応が必要か、新しいスケジュールに関して何に意識を向ければ良いかを説明します。 こちらに関しても、先ほどの手順を削減する例であれば、削減した手順に関する説明とそれによって変更になった1日当たりの消化目標数等具体的な日々の作業がイメージできるように説明する必要があります。 まとめ テスト実行時のモニタリングやコントロールの目的は、問題の早期発見と早期解決です。問題に対する解決が不十分であると顧客から判断されると様々な要望を頂くことがあります。要望を頂くということは、既に問題の発見と対応に失敗しかけている状況であり、そのような事態でもトレードオフや要望の背景を確認しながら進めることが重要です。 テストエンジニアとして、これらのポイントを意識しながら、顧客の期待に応えるために最善のテストプロセスを提供していきたいと考えています。 The post テスト実行プロセスのモニタリングとコントロールについて first appeared on Sqripts .
ソフトウェア開発の世界では、アジャイル開発やスクラムが一般的になってきました。そのアジャイル開発のコアとも言えるのが、対話や協調です。この連載では、アジャイル開発におけるコミュニケーション・コラボレーションスキルを解説しながら、ファシリテーションスキルのレベルアップを目指します。 第5回目のテーマは前回解説した「ファシリテーション」と合わせて学びたい「コーチング」です。 <スクラムマスターのためのコミュニケーション講座 連載一覧> ※クリックで開きます ・ #イントロダクション:優れたスクラムマスターが絶対に言わないこと 【連載初回、全文公開中】 ・ あなたの提案はなぜ受け入れられないのか?|ファシリテーション技術-1- ・ よりよい場を作るための9つのルール[前編]|ファシリテーション技術 -2- ・ よりよい場を作るための9つのルール[後編]|ファシリテーション技術 -3- 前回のおさらい 前回 はファシリテーション技術について解説しました。今回はコーチング技術の解説になりますが、ファシリテーションもコーチングも、トレーニングなどに参加してみるとよくわかるのですが、共通して学べる部分が多くあります。 ここでは、コーチングの中でも、スクラムイベントなどアジャイル開発におけるコミュニケーションで使えるポイントを中心に解説していきます。 よりよい場を作るための9つのルール[後編]|ファシリテーション技術 -3- ソフトウェア開発の世界では、アジャイル開発やスクラムが一般的になってきました。そのアジャイル開発のコアとも言えるのが、対話や協調です。この連載では、アジャイル開発におけるコミュニケーション・コラボレーションスキルを解説しながら、ファシリテーション...  続きを読む  Sqripts 関連記事|Sqripts コーチングの代表技術 昔、熟練のコーチに「コーチとは何か?」を質問したときに、その方は「コミュニケーションのプロフェッショナル」と答えていました。コーチングを学んでみるとそう答えた理由がよくわかるのですが、コーチングの本質は相手(クライアント)とパートナーシップを結び、共通のゴールの達成へと進んでいく方法です。よって、チームメンバーのような「相手」との会話の質を高められるヒントがたくさんあります。 コーチングの代表技術 コーチングの主たる技術は「傾聴」、「質問」、「承認」、「フィードバック」です。それぞれの技術をみていきましょう。 傾聴 傾聴(けいちょう)は、しっかり聞くことです。漢字が表しているように、相手に傾きながら聴きます。「聞く」ではなく「聴く」です。コーチの頭の中を覗いてみると、相手が発する言葉を聴くだけでなく、その背景まで読み取ろうとします。 たとえば、コーチングの練習でよく聞くテーマが「片付けができない」や「ダイエットが続かない」です。ずばり「片付けましょう」や「おかしを食べるのを止めましょう」と言いたくなりますが、 プロのコーチは問題そのものではなく、その言葉の裏側を考えます 。 コーチ : 「今日、何か話したいことはありますか?」 クライアント : 「そうですね。片付けができなくて困っています」 コーチの心の中: (この人は片付けができないことで悩んでいるのか。すぐ片付ければいい気もするけど、なぜこの人は「片付けができない」と考えているのだろうか? そうしてしまう状況や環境があるのだろうか? できないと思いこんでしまうなにかがあるのだろうか?) 聴くことの難しさを学ぶなら、相手と二人一組になって、5分間聴き続けるトレーニングを試してみるといいでしょう。思った以上に聴くことが難しいと感じるはずです。ついつい話をしてしまいがちですが、コーチングの8割は聴く時間と言われたりします。 アジャイル開発の現場に置き換えて、傾聴について考えてみましょう。 スクラムマスターもアジャイルコーチも、教えるケースはもちろんありますが(ティーチングやトレーニング)、チームの自律性を考えると、チームで主体的に考えられるようなコミュニケーションを取っていく必要に迫られます。 よって、当初は経験やアイデア、基本や応用を語る時間が多くなるでしょうが、徐々にコーチング的な関わり方を増やし、「よく聴く」時間が増えてくるはずです。積極的に聴くことで、状況を理解し、選択肢の整理ができます。積極的に聴くことで、チームメンバーが自律的に話すように変わっていきます。 もし、スクラムマスターやアジャイルコーチがいる現場において、1年ぐらい経ったのに、彼らがとうとうと知識や経験を語っていれば注意が必要です。なぜなら、スクラムマスターやアジャイルコーチが、チームの自律性をうばっている可能性があるからです。 質問 質問例 質問によって相手は内省をはじめます。良い質問は相手を深く考え込ませ、彼らの中にあるポテンシャルを引き出していきます。ここでは、質問やその例の概要をまとめておきます。 視点を変える質問 : 自分たちの視点に凝り固まってしまったときは、視点を変える質問によって、より大きな視点や、違った視点に切り替えることで、議論の幅を広げていきます。 時間を変える質問 : 自分たちのいる時間軸にしばられてしまったときは、時間を変える質問で、過去や未来にタイムトラベルを行い、それぞれの時間軸で問題を考え、新しい発見を得ようと試みます。 リソースを確認する質問 : 自分たちの力量に限界を感じたら、リソースの確認によって、自分たちに使えるリソースを考えます。リソースとは、詳しい方とのつながり、お金、時間、環境など、チームが使えるものすべてを指します。 オープンな質問とクローズドな質問 : 広くアイデアを集めるならオープンな質問が良いでしょう。オープンな質問は答えが複数になる質問です。逆に、議論が発散した場合は、選択肢の中から選ぶようなクローズドな質問も使えます。 チャンクダウンとチャンクアップな質問 : 大きな問題は小さく分割すると物事を進めやすくなります。逆に小さすぎる問題は、すこし大きく組み立ててから考えると扱いやすくなるかもしれません。 アジャイル開発の現場では、良質な質問が飛び交います。発想やアイデアを広げたり、より最適な解決策を見つけたり、行動の源泉に結びつけるために質問を活用するのです。 承認 承認とは認めることです。コミュニケーションにおける承認とは、相手の話を受け入れ、認める行為を指します。承認にはいろんな方法があります。 「おはようございます。◯◯さん」 「ふんふん。なるほど」 「◯◯さんは、そう思ったんですね」 「目標を達成しましたね」 「つまり、〜〜だったんですね」 あいさつはわかりやすい承認方法です。あいさつするだけでなく「◯◯さん」と相手の名前を呼びかけるのも承認につながります。あいづちも承認です。「〜だったんですね」、「〜をしましたね」と相手の話を復唱したりする行為や、「つまり〜なんですね」といった要約する行為も、承認になります。 承認がない会話は、一方通行になりがちです。話している相手も「この人、私の話を聞いてくれているのかな?」と不安になってきます。コーチは傾聴とあわせて承認を加えることで、相手に「ちゃんと聴いてますよ〜」という反応を送り続けます。 承認は共感を生み出します。コーチングはあくまでクライアントとのパートナーシップ(1on1のような上下関係がない)なので、共感が生まれないと信頼関係に繋がりません。 アジャイル開発の現場における承認はどういったものになるでしょうか? まず、スクラムを利用していれば多種多様なイベント(MTG)が開催されます。ソフトウェア開発の仕事ではチーム力が求められるため、コミュニケーションは避けて通れないイベントと言えます。イベントの中で気軽にアイデアを話しても、反応がなければモチベーションは下がります。次、また意見しようと思う人は少ないはずですよって、可能な限り、お互いに承認を繰り返していく必要があります。 承認はコミュニケーションが主体になるソフトウェア開発において、重要なスキルなのです。 フィードバック 最後はフィードバックです。承認とセットで語られるケースもありますが、ただ受け入れる承認とは違い、相手に何かを伝えるフィードバックとして、ここではわけて解説します。フィードバックは、いわゆる承認を超えた反応になります。ふんふんと受け入れるだけでなく、相手に言葉を渡します。 「今の話を聞いて、感じたことを話してもいいですか? 私は〜〜と思いました」 ファシリテーションでも解説した「提案と質問を組み合わせる」形に似ています。コーチングにおいて、フィードバックを受け入れるかどうかは相手が選びます。よって、伝え方にも注意が必要になり、伝え方を間違えると「コーチのアドバイス」になってしまい、コーチングの効果が期待できなくなり、相手も自分事として考えてくれなくなります。 承認で出てきた、「◯◯さんは、そう思ったんですね」や「目標を達成しましたね」もフィードバックの一種と言えます。「そう思ったんですね」という一言によって、今ここにある感情を確認できます。「目標を達成しましたね」という一言によって、相手の前進が明確になります。 ちなみに「目標を達成してすばらしいですね!」はコーチング観点だとあまりおすすめされないコミュニケーションになります。すばらしいかどうかはクライアントが決めることで、コーチが決めることではないからです。ただし、1on1など、部下の育成の場においては、「がんばろうね」といった一言が相手の背中を押すケースもあります。 * 今回は、コーチングの主要技術について解説しました。ファシリテーション技術とあわせて使うと、アジャイル開発やスクラムの現場が活性化されていきます。ただ、ファシリテーションもコーチングも、それぞれが独立したスキルになるため、アジャイル開発の全てに適応できるわけではありません。 あくまで「活用できる部分が多い」ことを理解しておかないと、コーチングの基礎的な部分を自分の都合よく間違えて解釈してしまい、期待した効果が得られなくなる問題が発生してしまいます。いわゆる「自分に都合の良いコーチング」です。 次回はコーチングの中で、もっとも難しく奥が深い「質問」について深掘りしていきます。 連載一覧 ・ #イントロダクション:優れたスクラムマスターが絶対に言わないこと 【連載初回、全文公開中】 ・ あなたの提案はなぜ受け入れられないのか?|ファシリテーション技術-1- ・ よりよい場を作るための9つのルール[前編]|ファシリテーション技術 -2- ・ よりよい場を作るための9つのルール[後編]|ファシリテーション技術 -3- The post コーチング技術 〜 基本技術を学ぼう|コーチング技術 -1- first appeared on Sqripts .
みなさん、はじめまして。たけちゃんです。 私はこれまで2回のジョブチェンジを経験しており、現在は第三者検証会社にてテスト業務を中心に様々な案件に携わっています。本ブログではジョブチェンジを実施してきた経緯とメリットについてお伝えできればと思います。 これまでの経歴について 私はこれまで以下のジョブチェンジを行ってきました。 勤務先 勤務年月 業務内容 システムエンジニア (以下SE)時代 2011/4~2019/9 某地方銀行傘下のシステムを運用・保守を実施 システムインテグレーター(以下SIer)時代 2019/10~2023/3 様々な地方銀行の案件に携わり、要件定義・基本設計書などの上流工程を実施 第三者検証会社時代 (現在) 2023/4~ テスト設計・テスト実施などのテスト業務を中心に実施 SE時代について お客様と協力しながら某銀行のシステム改善を目的とした案件を実施することにより、以下のスキルを習得することが出来ました。 特定の作業のみ実施するのではなく、プログラミングから本番反映までの作業を経験することが出来た。 銀行業務に関する知識を身に着けることが出来た。 一方で、以下の理由から、世間に通じるようなスキルが身についていないのではないかと、幾ばくかの不安を覚えていました。 携わったシステムはレガシー化が進んでおり、一般的ではないプログラミング言語を扱っていること。 お客様は某銀行のシステム担当者のみであるため、お客様が一緒に働く仲間であるという意識が強く、不特定多数のお客様と会話する機会は多くなかった。 SIer時代について SE時代と比べ、様々な銀行の案件に携わるようになりました。また、より一層、要件定義や基本設計書などの上流工程の作業を中心に行うようになり、以下のスキルを身に着けることができたと感じています。 案件の見積もりの経験を通じて、お客様との折衝スキルを身に着けることができた。 他の銀行のシステム担当者と会話する機会が増えたことにより、コミュニケーション能力が以前よりも向上した。 上流工程を経験することにより、要件定義および基本設計書を作成するスキルが向上した。 下流工程のリーダーとして、下流工程担当の方に指示を行う経験を積むことで、マネジメントスキルが向上した。 一方で、SIerとして仕事を行うことにより、以下の気づきを得ました。 上流工程に携わる機会が増えたことで、自分は下流工程のほうが向いていることに気づいた。 新しい環境においても扱うプログラミング言語はレガシー資産のままであり、新しい技術に触れる機会が少なく、SE時代と変わらず、世間に通じるようなスキルが身についていないと感じた。 休日勤務および残業が増加したことで、自分の使える時間が減少し、仕事に対するモチベーションが低下した。 上記の気づきを受けて、自分に適した働き方が明確になったため、転職エージェントを通じて転職活動を開始しました。これまでの上流工程の経験を活かして、下流工程を含めた全体の品質管理に関わることができ、さまざまな業種でのレガシーではない資産に携わることで、一般的に価値のあるスキルを身につけられる職場を模索しました。多くの人事担当者との面談を経て、最終的には現在の第三者検証会社での勤務が決まりました。 第三者検証会社時代(現在)について 第三者検証会社にジョブチェンジしたことによる気づき 第三者検証会社で案件をこなすことで、以下の気づきを得ることができました。 これまで勤めていた会社では経験則によるテストを実施していましたが、第三者検証会社では様々なテスト技法を用いた論理的なテストを実施しており、これまでのテストは品質が担保されていなかったことに気づきました。 以前は残業することが当たり前の環境でしたが、第三者検証会社では、しっかりと計画を立ててプロジェクトを受託し、進行することで、ワークライフバランスが取れていることに気づきました。 第三者検証会社で身についたスキル 第三者検証会社で案件をこなしながら、以下のスキルを身に着けることができたと自負しています。 自分もテスト技法を学び、案件を通じて実践することで、これまで以上に質の高いテストを実施できました。また、経験則による資料作成から脱却し、テスト技法を用いた体系的な資料作成を心掛けることで、プロジェクト経験の浅いテスターでもテストを実施できるようになり、属人化を防止できるようになりました。 前職ではお客様がほぼ固定だったため、雑なコミュニケーションでも通じていましたが、第三者検証会社入社後は案件ごとにお客様が異なるため、丁寧なコミュニケーションが必要になりました。そこで、テスト技法を用いた資料を作成し、それを基にお客様へ説明を行いました。その結果、説明責任が果たしやすくなり、コミュニケーション能力が向上しました。 効率的に作業するために、お客様との打ち合わせを頻繁に行い、作業の優先順位を付けました。優先順位の高い作業を重点的に行い、優先順位の低い作業はお客様の了承を得て実施しないことで、効率的な作業を実現し、作業効率を向上させるスキルを身に着けました。また、効率的な作業により残業時間を減らし、ワークライフバランスを向上させることができました。 まとめ これまで働く環境を変えてきたことで、ジョブチェンジには以下のメリットがあると気づきました。 新しい環境に慣れるのは大変ですが、未経験の仕事に携わることで新しいスキルを身につけることができる。 新しいスキルを身につけることで、自分の適性を知ることができる。 自分の適性を把握することで、自分の強みを活かしたジョブチェンジが可能になる。 これまで当たり前だった常識を新常識にアップデートできる。 ワークライフバランスを向上させることができる。 ジョブチェンジを行うことで新しいスキルを身につけ、そのスキルを通じて自分の適性を理解することができました。ジョブチェンジは新しい環境への適応が必要となるため勇気がいりますが、更なる成長を望む方や現在の環境を改善したい方にはぜひ挑戦をお勧めします。 今回の記事がジョブチェンジを検討する際の参考になれば幸いです。 The post ジョブチェンジを行うことによるメリットの紹介 first appeared on Sqripts .
こんにちは。バックエンドエンジニアのカズです。 今日はExcelのベータ版に提供されているPython in Excelを紹介します。 Python in Excelとは? Python in Excelとは、その名前の通り、Excel内でPythonコードを実行できる機能です。 PythonコードはMicrosoft Cloud上のAnacondaで実行されます。 セルに直接Pythonコードを入力することで、Pythonコードがクラウド上で実行され、データの加工などを行うことができます。 Python in Excelの利用方法 現在はプレビュー版であり、Microsoft 365 Insider Programのベータチャネルでしか提供されておらず、Windows版でのみ利用することができます。詳しくは こちら を確認してください。 Microsoft 365 Insider プログラムに参加する - Microsoft サポート Microsoft 365 Insider プログラムに参加する  詳細はこちら  support.microsoft.com 関連情報 Python in Excelの使い方 セルに =py( と入力するか、数式リボンから Pythonの挿入 を選択してください。 選択すると、セルと数式バーにPYという表示が表れて、コードを受け付けられる状態になります。 その上で、セルもしくは数式バーにコードを記述しCtrl+Enterを押下することでコードが実行されます。 Python in Excelの基本機能 記述したコードの実行結果はセルに出力されます。 また、 ["A", "B"] などの型を持つコードの場合、 Pythonオブジェクト を選択すると、Pythonオブジェクトの型が表示されます。 リストなどの多次元配列に対応している場合、そのセルだけではなくデータの形状によって他のセルにも展開されて表示されます。 以下の図は、A1セルに x = 1 を入力し、そのほかのセルに x += 1 を入力した状態です。 基本的に、Python in Excelにおいての計算は、列順で計算が行われた後、行が移動し再度列順で計算が行われます。ただし、計算方法の設定において手動を選択した場合は、その法則に従わず計算が行われます。 上の例では、A1→B1→C1→A2→…の例で計算が行われています。 下の例では、上の表を作成した後にE1に式を設定しています。 本来であればE1に式を設定した場合はC1の後に計算が行われるため結果は 4 となりますが、計算方法を手動に設定しているため、A6の 13 となる計算結果の後に演算を行っているため、結果は 14 と出力されています。 Pythonコード内でのセルの指定 Pythonコード内でセルにあるデータを利用する際は、 xl() 関数を用いて指定します。 利用できるPythonライブラリ Python in Excelの実行環境は、前述のとおりAnacondaを利用しているため、基本的にはAnacondaに搭載されているライブラリを利用できます。また、予めインポートされているライブラリもあり、初期化ボタンを選択すると、そのライブラリを確認することができます。 その他の利用できるライブラリに関しては、 こちら を確認してください。 Open-source libraries and Python in Excel - Microsoft Support This article describes the open-source python core libraries and how to import them  詳細はこちら  support.microsoft.com 関連情報 コンソール出力 print() やエラーコードなどは診断画面に出力されます。また、エラーのため実行できなかったセルには、 #PYTHON! が表示されます。 関数の利用 セル内で関数を定義し、その他のセルでその関数を利用することも可能です。 以下の例は、引数を2つ与え、その引数を足し合わせて返却する関数を作成し、その関数に対して2つの引数を与えた結果です。 他にできること グラフ描画を行うことのできるmatplotlibを利用して線形回帰や散布図を生成したり 線形回帰サンプルから引用 散布図サンプルから引用 データ分析やデータの前処理を行うことのできるscikit-learnなどのライブラリを活用することで一般的な機械学習をすることもできます。 また、Excel関数で出力させた値に対して、Pythonコードで処理を行うことも可能です。 Python in Excelでできないこと Pythonをローカルで実行する Pythonはクラウド実行のみの環境となっているため、今後ローカルで実行する予定も無いとの発表があります。( 公式ブログ ) Pythonから外部ファイルへアクセスする Python in Excelはクラウド実行となっているため、そのままの状態ではローカルファイルへのアクセスはできません。Power Queryを使用することで外部データを使用することができます。( 公式 ) また、requestsなどのライブラリを使用したインターネットへのアクセスも不可能です。 まとめ 今まではExcelファイルを使って分析をするためにPythonからExcelを読み込んで行っていたものが、一部だけですが、Excel単体で行えるようになったことは大きいのではないかと思います。 今後、Windows版だけではなく、Mac版などにも実装されることを期待したい機能の一つだと考えています。 The post Python in Excelを使ってみた first appeared on Sqripts .
本連載ではプロジェクトマネジメントの全体像と、プロジェクトを成功させる上で最低限抑えるべき知識と技術はもちろん、プロジェクトを炎上させないための技術やコツをお伝えしたいと思っています。 みなさんのプロジェクトが今以上に充実し、笑顔でプロジェクト終結を迎えられるよう一緒に学んでいきましょう。 第11回となる今回は「リスクマネジメント後編」です。 前回と今回の2回に分けて、プロジェクトマネジメントにおけるリスクの考え方と具体的なリスク分析方法、対応策の立て方について一緒に学んでいきましょう。 < プロジェクトマネジメント成功の技術 連載一覧> ※クリックで開きます 【第1回】プロジェクトマネジメントとは何か?  [連載初回全文公開中:Sqripts会員以外の方も全文お読みいただけます] 【第2回】プロジェクトマネージャーの役割とは? 【第3回】ステークホルダーマネジメントの重要性と進め方 【第4回】プロジェクトの統合マネジメント、7つのプロセス 【第5回】プロジェクトにおけるスコープマネジメント、6つのステップ 【第6回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[前編] 【第7回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[後編] 【第8回】コストをプロジェクトの武器にする! 【第9回】目に見えにくいプロセス管理こそ品質達成の鍵 【第10回】プロジェクトのリスクマネジメント[前編]リスクを徹底的に洗い出す 前回のおさらい 前回 はリスクの概要、リスクマネジメントのステップ、リスクの洗い出しについて解説しました。 【第10回】プロジェクトのリスクマネジメント[前編]リスクを徹底的に洗い出す 本連載ではプロジェクトマネジメントの全体像と、プロジェクトを成功させる上で最低限抑えるべき知識と技術はもちろん、プロジェクトを炎上させないための技術やコツをお伝えしたいと思っています。みなさんのプロジェクトが今以上に充実し、笑顔でプロジェクト終結...  続きを読む  Sqripts 関連記事|Sqripts リスクがプロジェクトに及ぼす影響を分析する 洗い出されたリスクは、プロジェクトへどのような影響を及ぼすかを分析して、管理可能な状態に落とし込んでいきます。分析にはリスクの優先順位を付けるための定性的分析と複合的な影響を分析する定量的分析とがありますが、定量分析は全てのプロジェクトに必須ではなく且つ分析に必要なデータが入手できる場合に行います。 ※以下では単純化した定量リスク分析のイメージを記載しています リスク定性的分析:多くのプロジェクトで実施する分析手法で、リスクの発生度や影響度などから優先順位を付ける リスク定量的分析:大規模または複雑なプロジェクトで使用されることが多く、リスク影響を数量的に分析する 1) 定性的分析で優先順位を決める リスクの優先順位付けとは <先に手を打つべきリスクを決める> ことです。 リスクの発生頻度と影響度、その他の特性を査定して、その後の分析や処置のために個々のプロジェクトリスクにおける優先順位付けを行います。優先順位の高いリスクに集中することで、プロジェクトのパフォーマンスを向上させることができます。 具体的には、以下のように個々のリスクを配置していくことからはじめましょう。マトリックスの縦軸は「発生頻度」として、そのリスクが発生(リスク発動)してしまう可能性の高低を設定します。横軸はリスクがプロジェクト目標達成にに与える「影響度」を設定します。 発生頻度:リスクが起こるのはどれくらいの頻度と考えられるか 影響度 :リスクが発動した場合、どのような結果がもたらされるか この発生頻度と影響度に対しての閾値は、実は人やその人の経験などによって感じ方が大きく異なります。またプロジェクトの性質によっても異なります。その閾値の違いがリスク分析に影響を及ぼさないように、それぞれの指標を必ず決めておきましょう。 2) 定量的分析で対応範囲を決定する 大前提としてリスクを管理することはお金がかかります。リスクを洗い出してみると、多くのリスクが出てくることに驚くことも少なくありませんが、全てに対応して備えることはコストの面でも時間の面でも限りがあり困難です。ですから「このプロジェクトではどのリスクにフォーカスしていくべきか」ということを明確にして、対応範囲を決めておくことが重要になります。 先ほどの発生頻度×影響度のマトリックスに配置したリスクに対してポイントを割り当てていきます。例えば、各軸の高は3PT、中は2PT、低は1PTとしましょう。縦軸の数値×横軸の数値が各ますのポイント=リスクポイントとなります。 リスク対応の大原則はこのリスクポイントが高い順に実施します。場合によっては6PTと4PTの中間あたりというように迷う場合や個別の判断が伴うリスクもあると思いますが、リスクの数値化により例えば「6PT以上のリスクに対応する」と意思決定し、集中してリスク対応予算や対応工数を充当することができるでしょう。 筆者の経験から、概ねリスク対応対象となる(上記の例で言えば6PT以上)リスクは全体の20%程度、受容するリスク(6PT以下)が80%程度になる印象です。注意したいのは「リスクには全て対応策を考えなければならない症候群」です。これは間違いであり且つ間違いなくコストがかかりすぎます。リスクアイデアに上がったリスクは網羅的に対応しよう!とするのは聞こえはいいですが、そんなシーンには注意が必要です。 リスク対応策を考えておく プロジェクトマネジメントにおけるリスク対応策には「5つの分類」があります。洗い出したリスクがどの対応分類で対処できそうか検討します。 リスク対応策はその後の対応実現可能性や難易度、コストなども踏まえて決定する必要があります。例えば「Aというリスクを回避する方法はあるが、それには莫大な対応コストがかかる為、発生頻度も鑑みて一旦は受容することにする」ということもあるでしょう。リスク対応策はバランスが大切です。 リスク対応策検討の材料(評価軸)例: 残存リスク(リスク対応策実施後に残るリスクはどうか) 二次リスク(リスク対応策を実施した直接の結果として生ずるリスクはどうか) 対応難易度 対応工数 対応コスト 対応にかかる特別なリソースが必要とされるか コンティンジェンシープランを作ろう リスク対策とセットでコンティンジェンシープランを立てておきましょう。コンティンジェンシープランがあることで、より迅速・的確にリスク対応を進めることができます。またコンティンジェンシープランを実施するための費用などのリソースをコンティンジェンシー予備と呼びます。リスク対策をすると感じると思いますが、リスク対策をいくらしてもリスクが残ることが多く、リスクが発生する可能性をゼロにすることは難しいです。リスク発動時にすぐに対応を開始できるようにすること、準備がなによりも大切です。 コンティンジェンシープラン: リスク発動時の耐性や手順、意思決定手段などを文書などで明らかにしておく(起こってもすぐ対応できる) コンティンジェンシー予備: コンティンジェンシープランに対応できる人やもの、コストを準備(見積りと確保)しておく 実行計画を策定していない時点の見積もり→プロジェクト原価の「 X% 」 実行計画策定後→各受容できるリスクの Σ{(対策時間または費用)X(発生確率)} 1) リスクトリガーを決めておこう タイムリーに対策を発動するため「リスクトリガー」を決めておきましょう。このリスクが発動しそうだ、発動したようだ、という兆候またはメトリクス、閾値を決めておくことです。そのために、リスク毎にリスク監視担当者を決めておくことをおすすめします。リスクが発動しても、トリガーに達しているか判定する人がおらず見過ごされることが実はよくあります。 例)地震の緊急速報(震度XX以上、津波の計画があるとアラームがなるという閾値) リスクを管理する リスク管理表またはプロジェクト管理ツール等の機能を活用して、リスクをマネジメントする管理表を作成するようにしましょう。最低限必要な項目は、リスクの洗い出しで特定したリスク内容、リスク分類、リスク対策、リスクポイント、対応コスト、リスク対応開始日、伴う終了日、リスク担当者です。 「リスク管理表はPMが管理していて(だろうから)見たことがない」と聞くことがありますが、リスク管理表はPMだけが管理するものではありません。リスク特定方法や経緯、なにより監視に力点があります。そのためリスク管理表はプロジェクトの中で目につきやすい、管理しやすい場所(ディレクトリなど)に格納するなどして、誰でも閲覧・確認・更新できるようにしておきましょう。また、リスク管理表作成後は最低月1回程度棚卸し(状態の確認)を定例化するなどしましょう。 棚卸しでのチェック例:リスク監視 (検討済みの)リスク対応策は効果的に実行されているか リスク対応策実施によりリスクレベルは下がっているか(効果があるか) リスク状況は変化したか 新たなリスクは生じていないか、新たな脅威はないか 見逃しているリスクトリガーの発現はないか リスクマネジメントの方針と手順は守られているか さいごに 完璧な計画がないように、リスク(不確実性)のないプロジェクトも存在しません。プロジェクトの目標達成の為に、リスクと適切に向き合って、その影響を自らコントロールできるようになればリスクは決して「ただ恐る」ものではなくなるはずです。 次回のテーマは「プロジェクト資源マネジメント」です。 連載一覧 【第1回】プロジェクトマネジメントとは何か? [連載初回全文公開中] 【第2回】プロジェクトマネージャーの役割とは? 【第3回】ステークホルダーマネジメントの重要性と進め方 【第4回】プロジェクトの統合マネジメント、7つのプロセス 【第5回】プロジェクトにおけるスコープマネジメント、6つのステップ 【第6回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[前編] 【第7回】WBSだけでスケジュールはできない!正しいスケジュールの導き方[後編] 【第8回】コストをプロジェクトの武器にする! 【第9回】目に見えにくいプロセス管理こそ品質達成の鍵 【第10回】プロジェクトのリスクマネジメント[前編]リスクを徹底的に洗い出す The post 【第11回】プロジェクトのリスクマネジメント[後編]リスク分析とコンティンジェンシープラン first appeared on Sqripts .