オシロスコープを購入しました

オシロスコープを購入しました。
f:id:stacked-tip:20190928200550j:plain:w400
f:id:stacked-tip:20190928200813j:plain:w400

OWON製の2chデジタルオシロスコープです。
いやぁ、思えば趣味で電子工作始めた時から、
いずれはオシロ欲しいなぁと思っていましたが、
ようやく一般人の手の届く範囲のものが出回るようになりましたね。

f:id:stacked-tip:20190928201031j:plain:w400
テスト波形(0V-5V, 1kHzの矩形波)もしっかり出ます。

試しに、手元にあったmicro:bit用の電池ボックスを
接続してみました。
f:id:stacked-tip:20190928202040j:plain:w400
f:id:stacked-tip:20190928201930j:plain:w400

単4電池直列2個なのでフル充電なら3.0V出力のはずですが、
2.64Vしか出ませんでした。へたってるな。

Unityで製品紹介ビデオ制作にトライする

f:id:stacked-tip:20190815183758g:plain:w400
製品を紹介するビデオを作成したい。
具体的には、3Dの製品が画面の真ん中でクルクル回るような映像を作りたい。

この記事では、

  • 回転させたいものの3DCADデータがある状態で
  • Unityを使って

それを実現する方法を紹介します。

…3DCADデータがない?Blenderで作ってくれ。
私もBlender初心者だったが、色々ググって数時間でモデリングできるようになったから。
なお、トップの文字列が回転しているものについては、
もっとお手軽に「TINKERCAD」でモデリング、objデータをエクスポートしてUnityにインポートしています。

開発環境

私の開発環境は以下のとおり。3D映像制作をするのには、余りに貧弱だが仕方ない。
PC: SONY VAIO Pro 11 (VJP111B01N)
CPU: Intel Core i7-4510U @ 2.00GHz
RAM: 8.00GB
GPU: なし
OS: Windows 8.1
Unity: 2018,4,6f1 Personal

今回は、以下のようなコインをクルクルさせようと思う。
(本当はBlenderで組んだモデルを見せたいところだが、大人の都合でそれはできないので…)
f:id:stacked-tip:20190815133659p:plain:w400

コインをクルクルさせる

3Dオブジェクトをクルクルさせるには、そのようなC#スクリプトを書いて、そのオブジェクトに紐づければOKです。

もう少し丁寧に言えば、

  • [Assets]エリアを右クリックし、[Create]→[C# Script]を選択してC#スクリプトを作成し、
  • それをダブルクリックしてコードエディタを開き、
  • そこにコードを記述、保存して閉じてから、
  • C#スクリプトをコインにドラッグ&ドロップして紐づける

とやればOKです。

C#コードはこんな感じです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class rotate : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(new Vector3(0,0,90)*Time.deltaTime);
    }
}

結果は以下のとおり。
f:id:stacked-tip:20190815135312g:plain:w400
メインカメラの位置について、開発画面と再生画面を一致させています。

  • [Hierarchy]で[Main Camera]を選択したうえで、
  • メニューバーの[GameObject]→[Align With View]を選択

因みに、このコードは下記書籍を参考にしています。
藤森将昭『Unityではじめる おもしろプログラミング入門』リックテレコム

背景を黒にする

さて、上記の映像でOKならそれでいいのですが、私は、背景を真っ黒にしたいなと思いました。
暗闇の中で、モデルがクルクル回っているイメージです。

Unityで背景を真っ黒にするのにはいくつか設定が必要なのですが、
詳しくは以下のブログ様を参照してください。
私もこれに従って背景を真っ黒にできました。
murasame-labo.hatenablog.com

1. シーンに配置された光源を無効にする

新規でシーンを作成すると、ディレクショナルライトという光源がデフォルトで設定されています。
詳細は割愛しますが、ディレクショナルライトとは、シーン内のすべての場所に対して、一定の方向から光を当てる光源です。
これを無効にすると、以下のようになります。
f:id:stacked-tip:20190815165341g:plain:w400
確かに暗くはなりましたが、予想よりもまだまだ明るいです。

2. 環境を構成する天と太陽を消す

実は、シーンを照らす光は、光源だけではありません。
光源とは別に「環境光」なるものがUnityにはあります。
私のバージョンでは、
[Window]→[Rendering]→[Lighting Settings]
で環境光の設定画面に到達できます。

先に紹介したブログ様では、環境光の強さ(Intensity Multiple)を0にしていますが、
ここでは、そもそも環境光の存在自体を消してしまいます。
ついでに、シーンの背景にある空も消してしまいましょう。

先ほど開いた設定ウィンドウの、

  • Skybox Material
  • Sun Source

を見てください。
f:id:stacked-tip:20190815171212p:plain:w300
私のバージョンでは、デフォルトでは

  • Skybox Material: Default - Skybox
  • Sun Source: Directional Light (Light)

となっていました。

ここで、それぞれを次のように設定します。
f:id:stacked-tip:20190815171856p:plain:w300

  • Skybox Material: None (Material)
  • Sun Source: None (Light)

これにより、開発画面も目に見えて真っ暗になってしまいました。
f:id:stacked-tip:20190815172125p:plain:w400

再生画面もこのとおり。
f:id:stacked-tip:20190815172423g:plain:w400

3. カメラの背景色を黒にする

「カメラの背景色」とは?と思うでしょう。
実は、カメラの設定として、オブジェクトの背景を何にするという設定ができます。
ここで、背景色(Background)の色を変更します。
f:id:stacked-tip:20190815173013p:plain:w400
ここを、デフォルトの群青色から、黒にします。
f:id:stacked-tip:20190815173606p:plain:w400

こうして、シーンを完全な暗闇にすることができます。
f:id:stacked-tip:20190815173816p:plain:w400

光源を有効にしてみる

本当に完全な暗闇では、何も見えないので、オブジェクトを照らすくらいの光は欲しいです。
そこで、最初に無効化した光源「ディレクショナルライト」を再度有効にしてみましょう。
すると、このようになります。
f:id:stacked-tip:20190815174233g:plain:w400

背景を白にしてみる

背景を白にしたい?先ほどのカメラの背景を白にすれば、再生画面の背景も白になります。
f:id:stacked-tip:20190815174750g:plain:w400
でもこれだと、背景は白なのにコインは暗くて違和感がありますね。

カメラのClear FlagsをSolid Colorにする

実は、カメラの背景の設定として、Clear Flagsというのがあります。
デフォルトはSkyboxですが、これをSolid Colorにしてみましょう。
その上で、環境光の設定を元に戻してみてください。

  • Skybox Material: Default - Skybox
  • Sun Source: Directional Light (Light)

すると、開発画面での背景は、以前の空と地面がある背景なのに、
Camera Previewでは背景が白色になっています。
f:id:stacked-tip:20190815180004p:plain:w400

再生画面もこのとおり。
f:id:stacked-tip:20190815180704g:plain:w400

参考情報

GIFアニメーションは、「ScreenToGif」というソフトウェアで作成しました。
github.com

プロジェクトマネージャ試験に合格しませんでした

先週、IPA公式ホームページで、プロジェクトマネージャ試験の合格発表がありましたが、残念ながら合格できませんでした。
f:id:stacked-tip:20190629201545p:plain:w200
午後1が合格ラインギリギリの60点、午後2はC判定でした。
やはり、PMとしての実務経験がない(しかも職種的にも試験が想定する業務プロセスから外れている)状態での合格は難しいようです。
さて、リベンジの有無ですが、他の私事もありますので、暫くはいいかなと考えております。また必要になったら受験を検討しようと思います

プロジェクトマネージャ試験の午後1の本番でやったこと

プロジェクトマネージャ試験の午後1の本番で私がやったことを、
問題用紙を見ながら説明してみようと思います。

午後1の問題は「S→ぐ→W」で解ける

小見出しにあります「S→ぐ→W」ですが、これは私が高校生のころ受けていた現代文の授業で、
代ゼミの笹井講師が毎回のように掲げていたフレーズです。
3つの文字は

  • S:主語は?
  • ぐ:具体的に言うと?
  • W:なぜ?

であり、この順で現代文の問題に当たれば解ける、というものです。

今回、午後1の問題で、最初から「S→ぐ→W」を使おうとしていたわけではありません。
問題を解く中で、設問と本文を行き来するのが面倒で、
本文の方に設問を端的にメモしたのが始まりでした。

例えば、今回(H31)の問2の設問2 (1)の問題は、以下のようなものでした。

〔プロジェクトマネジメントの要素のリスクへの対応〕について,(1),(2)に答えよ。
(1)本文中の下線②について,H課長が考えた,G社プロジェクトが遅延するリスクがG社に与える非常に大きな影響とは,具体的に何を指すか。35字以内で述べよ。

このとき、私は、本文の下線②にある「非常に大きな影響」を丸で囲み、余白まで線を引っ張り、「ぐ」と書きました。
こうすることで、いちいち設問を見直すことなく、本文の方に集中できる効果がありました。
f:id:stacked-tip:20190425210807j:plain
以下、同じように、

  • 下線③の「人選」に「どのような?」とメモ
  • 下線④全体に「なに?」のメモ
  • 下線⑤全体に「なぜ?」のメモ
  • 下線⑥の後にある「確認すること」に「なに?」のメモ

を書いていき、各々の設問の答案を作っていました。

改めてこの時の設問の文末に注目してみると、

  • 設問1:「~のはなぜか。」
  • 設問2
    • (1):「~具体的に何を指すか。」
    • (2):「~どのような人選か。」
  • 設問3
    • (1):「~とは何か。」
    • (2):「理由は何か。」
    • (3):「~確認したことは何か。」
  • 設問4:「特性とは何か。」

となっており、結局

  • これは何?
  • 具体的には?
  • それはなぜ?

の3つしかないことに気づきました。
他の2問についても、基本的にはこの3つに集約できる設問だったので、
きっと、過去の問題についても同じなのではないかと思います。
(スイマセン、未確認です)

問題点のある表現にはマークすること

これは、今回私が使ったテキスト、ITのプロ46『うかる!プロジェクトマネージャ2019年版』でも使われている手法です。

否定的表現や違和感を覚える部分などを含め,問題点を見つけたら,ほぼ必ず設問に関係してくる。
したがって,わかるようにマークしておこう。
(p258)

問3の本文では、問題点のある表現にひたすら「マイナス記号」をメモしていきました。
f:id:stacked-tip:20190425210935j:plain

  • 「担当者が認識する品質と実際の品質との間にギャップ」をチェック
  • 「初回のレビュー実施時期は,レビューイの判断で決定」をチェック
  • 「チームメンバがクリティカルパス上の活動を認識していない」をチェック

こうすると、設問を解くタイミングで、最初にチェックポイントを確認するようになり、
効率的に答案を作れるようになりました。

やはり問題用紙にガシガシとメモを書いていった方が、答案を作りやすかったと感じています。
演習時にわざわざ紙に印刷して解くのは、あまり現実的ではないですが、
問題用紙にメモをするイメージで解いてみるといいかもしれません。

プロジェクトマネージャ試験を受験してきました

本日4月21日、IPAのプロジェクトマネージャ試験を受験してきました。
ひとまず速報として、ざっくり内容について書こうと思います。
なお、昨年の秋季にシステムアーキテクト試験に合格しているので、午前1は免除でした。

午前2

例年どおり、40分で25問の4択問題に回答するマークシート方式でした。
半分弱くらい(ネット上では25問中10問とも)過去問流用でした。
特に計算問題が25問中2問しかなく、そのうち1問は過去問流用だったので、私は15分くらいで一通り解き切ってしまい、見直しをしたり、答えを暗記していた問題について、何でそうなるんだろうとか考えたり(例えば問9の生産性の問題)していました。
何ぶん午前2は途中退出ができないので。

(2019/4/22追記ここから)
解答が公開されましたね。
21/25=84%なので、午前2はクリアでした。
(2019/4/22追記ここまで)

午後1

こちらも例年どおり、3問中2問選択して解く記述式でした。
3つをばーっと流し見し、問1の図が何か嫌だな、というそれだけの理由で、問2と問3を選択しました。

問2は「IoTを活用した工事管理システムの構築」というテーマで、
納期必達のプロジェクトで、いくつかのリスクに対応するというものでした。
話としてはよくあるパターンでしたが、答案の文を作るのに少し苦労しました。
とは言え、30分くらいで書き終え。

問3は「プロジェクトの定量的なマネジメント」というものでした。
いわゆるKKD(勘・コツ・度胸)でシステム開発しているところに、定量的なマネジメントを普及されていく話。
この問題はストーリーがとても良く、個人的には良問でした。
是非IPAのWebサイトで問題だけでも読んでほしいです。
PM業やっている人にとっては当たり前のことかもしれませんが、「PMとは単に手法を運用するだけではなく、こういうことも気にするんだぞ」というのが心に沁みます。
平成31年度 春期 プロジェクトマネージャ試験 午後I 問題


2問で60分弱、10分くらい見直ししていましたが、流石に飽きてきたので途中退出しました。

午後2

やってきました高度試験の総本山、2時間で最低でも2000文字以上書かなければならない論述式。
ここ数年は2問中1問を選択する形で、両方とも不得手なテーマだと即死する、少し運ゲー的です。
特にこの2問制になってからは組み込み系問題が全く出ず、組込み出身の私にはとっては、本当に出題テーマ次第で合否が決まってしまう感じでした。
それでも一応は8問くらい過去問を解きました(詳しくは別記事で)。

さて今年はどうだったかと言えば、
問1はコストに関する問題。私はそもそもPM経験がないのでコストなんて考えたことなどなく、最初の文を読んで即パス。
運命の問2は…「システム開発プロジェクトにおける、助言や他のプロジェクトの知見などの活用」。
これ、過去問演習で解いた、平成17年問1の「プロジェクトにおける重要な関係者とのコミュニケーションについて」で同じようなことを書いたぞ。この時に使ったネタもそのまま使えそうだ。
正直、これは行ける、と思いました。

後は前回のシステムアーキテクト試験の時と同様、
30分でストーリー構成を考え、残りの90分でひたすら書く、という戦略で進みました。
ネタも半分以上実話だったこともあり、ストーリーの破綻もほとんどなく、妄想を練る必要もあまりなく、大コケすることなく最後まで書き上げられました。
それでも時間はぎりぎり、問ウからは時計を見ながら汚い字で600字ちょっとまで書きとおし、書き終えた時点で残り10分で、今回も途中退出ならず。
見直し、わずかな書き足し、汚い字の修正をし、時間が来ました。

今回は大変運が良かったと思います。どうせなら合格していてほしいですね。

プロジェクトマネージャ試験の午前2の過去問演習をする

プロジェクトマネージャ試験の午前Ⅱの対策は、
過去問演習が最適と言われています。

それは、出題される午前問題の何割かは、過去問がそのまま出るからです。

今回は、下記のWebサイトを紹介いたします。

www.pm-siken.com

私も、このサイトで演習して対策します。

プロジェクトマネージャ試験の午後2問題のタイトル整理

プロジェクトマネージャ試験の、午後Ⅱの問題はどのような分野から
出ているのかを調べるために、IPAのWebサイトから、
平成21年以降の過去問を見てみることにしました。

具体的には、午後Ⅰの2問(平成25年以前は3問)の最初の一文を
ピックアップしてみました。これで、大雑把な傾向は掴めるかなと思います。

過去問はこちらから:
IPA 独立行政法人 情報処理推進機構:過去問題

午後Ⅱの問題のタイトル

H30PM2

Q1: システム開発プロジェクトにおける非機能要件に関する関係部門との連携
Q2: システム開発プロジェクトにおける本稼働間近で発見された問題への対応

H29PM2

Q1: システム開発プロジェクトにおける信頼関係の構築・維持
Q2: システム開発プロジェクトにおける品質管理

H28PM2

Q1: 他の情報システムの成果物を再利用した情報システムの構築
Q2: 情報システム開発プロジェクトの実行中におけるリスクのコントロール

H27PM2

Q1: 情報システム開発プロジェクトにおけるサプライヤの管理
Q2: 情報システム開発プロジェクトにおける品質の評価、分析

H26PM2

Q1: システム開発プロジェクトにおける工数の見積りとコントロール
Q2: システム開発プロジェクトにおける要員のマネジメント

H25PM2

Q1: システム開発業務における情報セキュリティの確保
Q2: システム開発プロジェクトにおけるトレードオフの解消
Q3: システム開発プロジェクトにおける工程の完了評価

H24PM2

Q1: システム開発プロジェクトにおける要件定義のマネジメント
Q2: システム開発プロジェクトにおけるスコープのマネジメント
Q3: システム開発プロジェクトにおける利害の調整

H23PM2

Q1: システム開発プロジェクトにおけるコストのマネジメント
Q2: システム開発プロジェクトにおける品質確保策
Q3: システム開発プロジェクトにおける組織要員管理

H22PM2

Q1: システム開発プロジェクトのリスク対応計画
Q2: システム開発プロジェクトにおける業務の分担
Q3: システム開発プロジェクトにおける進捗管理

H21PM2

Q1: システム開発プロジェクトにおける動機付け
Q2: 設計工程における品質目標達成のための施策と活動
Q3: 業務パッケージを採用した情報システム開発プロジェクト