today::エンジニアに憧れる非エンジニア

今のところは、エンジニアとは言えないところの職種です。しかしエンジニア的なものの考え方に興味津津。

テスト駆動開発における、3つの実装手法

前書き

www.amazon.co.jp

現在、「テスト駆動開発(Kent Beck 著・和田 卓人 訳)」の写経に取り組んでいます。 その中で学んだことについて記述してみる、という記事です。

以降記述していく「3つの実装手法」というのは、テスト駆動開発の基本になる考え方ではないかと思います。

全ての前提

いかなる実装方式を採用するにせよ、全ての前提となるのは「実装より先にテストを書き、テストが通らないことを確認してから実装に移る(RED)」という順序です。 「テストを書かずにいきなり実装に着手する」というのは、テスト駆動開発とは言えません。

仮実装

以下の手順を踏んで実装していく手法です。

  1. 直値でもなんでもいいので、とにかくテストが通るような実装を作る(GREEN)
  2. テストが通る状態を維持したまま、より理想的な実装に近づけていく(Refactoring)

テスト駆動開発における実装手法の中で、最も基本的な実装手法と言えるでしょう。

明白な実装

以下の手順を踏んで実装していく手法です。

  1. 正しいと思われる実装をいきなり書く
  2. テストが通ることを祈る

「正しいと思われる実装」の見通しが明確である場合に用いる手法です。 想定した実装手法がうまくいかないなら、「仮実装」や「三角測量」といったアプローチに転換していくのですね。

三角測量

以下の手順を踏んで実装していく手法です。

  1. 複数の実例をテストパターンに記述する
  2. 全てのテストが通る(GREEN)ように実装していく

「実装方法が皆目見当もつかない」という場合に用いる手法です。

まとめ

テスト駆動開発における実装手法には、以下の3つが存在します。

  • 仮実装
  • 明白な実装
  • 三角測量

以上3つの手法は、場面に応じて使い分けていくものです。 どの手法を用いるかを考えるにあたっては、以下のような判断基準があります。

  • 「正しいと思われる実装」の見通しが明確に存在するか否か
  • 実装方法について見当がつくか否か

施工管理・現場監督は、どうしても年功序列の要素が強くなる職業である

概要

施工管理・現場監督という職業は、どうしても年功序列の要素が強くなります。 以下のような理由から、どうしても経験年数がものを言うためです。

  • 事業構造上、イテレーションのサイクルが長い
  • 「強くなる方法は、実務経験によってしか得られない」という性質が強い
  • 教育訓練も、雇用主主導で行わなければならない
  • 法制度上も、実務経験の期間が重要視されている

この記事では、上述の事柄について記述してきます。

事業構造上、イテレーションのサイクルが長い

zenn.dev ↑「イテレーションのサイクル」等についての言及です。

建設業は、長期の請負契約に基づくビジネスです。 特に土木構造物・オフィスビル・インフラ施設のような大規模なプロジェクトの場合、プロジェクトの期間が数年~十数年となる場合も存在します。 それだけに、事業着手から成果が出るまでには長い時間を要する1ことになります。 Webプロダクトにおける「1ヶ月~数ヶ月」とは大きな差ですね。

イテレーションのサイクルが長いため、「職業人として通用するレベルの経験を積むために必要な期間」も長いものとなってきます。 従事者の平均経験年数も長いものとなってきます。 年功序列の要素が強くなる原因の一つですね。

「強くなる方法は、実務経験によってしか得られない」という性質が強い

www.oreyume.com

施工管理で必要とされる以下のようなスキルは、実務経験によってしか得ることができない性質のスキルです。

  • 職人や協力会社の活用法
  • 顧客を安心させるテクニック
  • 工程管理のテクニック
  • 協力会社を値切るテクニック

各スキルはプロジェクトごとに個別性が強く、体系化が困難で、どうしても属人性が強いものとならざるを得ません。 Web開発などとは異なり、業務外で勉強することが構造上不可能なのです。

「強くなる方法は、実務経験によってしか得られない」「成果を出すためには実務経験が必要である」となってくると、「評価体系が成果主義ベースでも、成果を挙げるために年齢(経験)を重ねなければならない」という現実に直面することとなります。 年功序列の要素が強くなる原因の一つですね。

教育訓練も、雇用主主導で行わなければならない

上記「強くなる方法は、実務で経験を得ることによってしか得られない」という特徴に由来する現実です。 「職場外の教育訓練により蓄積可能なスキル」には、宿命的な限界が存在するのです。

「実務経験が求められる」となれば、当然「実務経験を積むことができるのは職場のみ」という話になってきます。 建設業のような、「事業を行うにあたって許認可が必要となる事業」となればなおさらです。

「教育訓練を雇用主主導で行う」となると、雇用主と被雇用者との間に、以下のような関係性がどうしても発生してきます。

  • 雇用主と被雇用者との間の貸し借り
  • 被雇用者の雇用主に対する負い目

年功序列の要素が強くなる原因の一つですね。

法制度上も、実務経験の期間が重要視されている

www.oreyume.com

主任技術者や監理技術者といった、建設現場全体のリーダーレベルの職位につくためには、(建設業内の業種にもよりますが)施工管理技術検定に合格して施工管理技士の資格を取得する必要が出てきます。 施工管理技術検定の受験そのものも、一定の期間の実務経験が必要とされます。

2級施工管理技術検定の第2次検定受験には、原則1年~8年(学歴により異なる)の実務経験が必要となります。

また、1級施工管理技術検定の第2次検定受験には、以下の実務経験が必要となります。

  • 3年~15年(学歴により異なる)の実務経験
  • もしくは、2級第2次検定合格から5年の実務経験
  • いずれも「1年以上の指導監督的実務経験」を含む必要がある
    • 下記「実務経験に基づく監理技術者の選任」とは異なり、「請負代金4500万円以上の元請工事」という要件はないとみられる

一方で、施工管理技術検定が存在しない業種の場合、主任技術者や監理技術者の選任要件は実務経験年数によるものが主流となります2

  • 主任技術者になるためには、3年~10年(学歴等により異なる)の実務経験が必要
  • 監理技術者になるためには、3年~10年(学歴等により異なる)の実務経験が必要
    • 「請負代金4500万円以上の元請工事における、2年以上の指導監督的実務経験」を含む必要がある

権限と責任のある職位につくために、実務経験が必要とされる。 年功序列の要素が強くなる原因の一つですね。


  1. 建設業は、「1つのプロジェクトが複数の会計期にまたがるほど長期にわたることが一般的である」等の理由により、財務会計についても、建設業独自の作法が存在します。「未成工事支出金・未成工事受入金等の勘定科目の存在」がその代表例です。

  2. 「業種別に、対応する技術士の資格」といったルートがあります。しかしながら、技術士試験の受験にも所定の実務経験が必要となります。

通信建設業界は、さらなる土建業界化へ

「コアネットワーク・無線アクセスネットワークの完全仮想化」という流れ

newswitch.jp

NTTドコモをはじめとするMNO各社は、5Gネットワークの構築にあたり、コアネットワークの仮想化を進めています。

japanese.engadget.com

その中でも最も先進的でラディカルな事例は、MNOとしての楽天モバイルです。MNOとしての楽天モバイルは、「無線アクセスネットワークも含めた完全仮想化を実現したこと」を謳い、それをセールスポイントともしています。 「無線アクセスネットワークも含めた完全仮想化」まで実現すると、「MNOでなければならない」という機能は、ほぼ「土建設備+α」にまで収斂することになります。

交換・伝送系の仕事は、さらに侵食されていくだろう

「通信事業者のネットワークの仮想化」が進むと、汎用技術で交換・伝送が回るようになります。 汎用技術で交換・伝送が回るようになると、ネットワークインテグレーター1の事業範囲はさらに広がることが期待できます。

一方で、通信建設会社の交換・伝送系事業の事業範囲は、ネットワークインテグレーターに侵食されて狭くなっていくトレンドと考えられます。 極端な話、通信建設会社の交換・伝送系事業は、「レガシーシステムのお守り」が主な仕事になっていくのではないでしょうか。

土建系の仕事はなくならない

土建系の仕事の対象となる設備としては、例えば以下を挙げることができます。

  • 電柱
  • ケーブル
  • 基地局
  • 鉄塔
  • プラットフォーム

通信建設会社の仕事の中でも、土建系の仕事は、やはり通信建設会社にしかできない仕事と思われます。そう考える理由は以下です。

  • 「建設業法」「労働安全衛生法」等の法的制約が厳しい業界である
  • 重層下請構造により、工事従事者の所属企業に至るまで強力に系列化されている

かくして、「通信建設業界の土建業界化」が進んでいくことになります。

もっとも、「アクセスネットワークも含めた完全仮想化」に至れば、基地局の設備も大幅に簡略化されます。 基地局の設備が簡略化されると、実際に現場作業に携わる工事従事者の事業運営には影響が出てきそうです。

通信建設会社の仕事の中で、他になくならない仕事としては、「通信電力系の仕事」でしょうか。

無線において進む仮想化の流れは、有線にまで波及するのだろうか

現時点で、「コアネットワークやアクセスネットワークの仮想化」が進んでいるのは、無線通信事業が中心です。 有線通信事業のネットワーク設備の仮想化は、無線通信事業ほどには進んでいません。

ただ、「交換・伝送機能の仮想化」が有線通信事業まで波及するとなると、通信建設業界の土建業界化はより一層進みそうです。

「令和の光の道構想」はあるのか

ここで言う「令和の光の道構想」というのは、「有線アクセス設備事業の法的分離」等のことを指します。

「交換・伝送機能の仮想化」が進むと、「有線アクセス設備事業の法的分離」が可能になるかもしれません。 「有線アクセス設備事業の法的分離」が実現すれば、有線通信事業においても、「発電事業者と一般送配電事業者」のような関係が発生しそうです。


  1. 具体的な事業者名としては、「伊藤忠テクノソリューションズ」や「ネットワンシステムズ」などが挙げられます。

大規模工事の元請企業は、「自分の力で稼ぐ」という意識が希薄になりやすい

概要

大規模工事の元請企業に勤めていると、「自分の力で稼ぐ」という意識が希薄になりがちです。その理由として、以下4つの要素について記述していきます。

  • 扱う金額のスケールが大きすぎる
  • 長期の掛売りをベースとした取引慣習が存在する
  • 外部調達の比率が非常に高い
  • 発注がなければ仕事もない

扱う金額のスケールが大きすぎる

大規模工事の元請だと、扱う金額が「月数千万円〜数億円」「年間十数億円」というスケールになってきます。 自分で事業を行っている人であればともかく、一般的な被雇用者がイメージできる金額は大きく超えています。

ここまで金額の桁が違うと、「生きたお金が動いている」と考えるのが難しく、「単に数字が羅列されている」という認識になりがちです。かくして、「自分の力で稼ぐ」という認識は薄れていくのです。

長期の掛売りをベースとした取引慣習が存在する

建設業のような長期の請負契約に基づくビジネスの場合、お金の流れも長期の掛売りをベースとしたものとなります。 事業構造上、どうしてもキャッシュアウトが先行し、資金繰りが逼迫するためです。

長期の掛売りをベースとした取引の場合、「キャッシュの出入り」と「会計上の費用・収益の発生」が時間的に大きく離れたものとなります。キャッシュの動きと費用・収益の発生が時間的に離れると、どうしても「お金の流れと費用・収益の関係」がイメージしづらくなってきます。かくして、「自分の力で稼ぐ」という認識は薄れていくのです。

外部調達の比率が非常に高い

建設業、とりわけ元請側の事業者は、事業原価に占める外部調達の比率が非常に高いです。

スーパーゼネコン5社は、いずれも全原価に占める外部調達1の比率が85%前後になります。 そのうち外注費のみで全原価の3分の2です。

結局のところ、「付加価値を生んでいるのは協力会社の工事従事者」ということになるのではないでしょうか。 自分たちが何を付加価値として提供しているのかわかりづらい、ゆえに、「自分の力で稼ぐ」という認識は薄れていくのです。

発注者に強く依存する

建設業には、「発注がなければ仕事もない」という宿命があります。建設業に限らず、受注・請負業態全体の宿命といえます。

特にインフラ工事の場合、発注者そのものが非常に少ないです。 鉄道事業者、一般送配電事業者、通信事業者…「インフラ種別ごとに、発注者は片手で数えられる程度の数」となってきます。

発注者に強く依存する事業構造ゆえ、どうしても甘えが生まれてきます。かくして、「自分の力で稼ぐ」という認識は薄れていくのです。

関連リンク


  1. ここで言う「外部調達」は、建設業会計における材料費・労務費・外注費の合計を指します。元請側の事業者の場合、労務費はほぼ労務外注費となるので、これも外部調達に含まれます。

長距離フェリーに乗りながらプログラミング学習してみた

前書き

prog-8.com

「長距離フェリーに乗りながらProgate」ということをやってみました。 その時に考えたことのレポート記事です。

2020-08-27,太平洋フェリー「いしかり」

航路による向き不向き

好都合…太平洋フェリーの仙台→名古屋航路

2020-08-27,太平洋フェリー「いしかり」,仙台港フェリー埠頭ターミナル

太平洋フェリーの仙台→名古屋航路は、「長距離フェリーに乗りながらプログラミング学習」には好都合な環境と思います。 理由は以下です。

  • 航路全区間の大半にわたり、4G回線に問題なくアクセス可能
    • 特に日中時間帯は、比較的陸地に近い場所を航行する
  • 日中にまとまった時間がとれる
    • 1日目午後…仙台出港から房総半島沖合まで
    • 2日目午前…静岡県沖合から名古屋入港まで

やや不都合あり…苫小牧発着諸航路

2018-07-15,商船三井フェリー「さんふらわあ ふらの」

以下が苫小牧発着諸航路の例です。

苫小牧発着諸航路においては、「長距離フェリーに乗りながらプログラミング学習」は十分に成り立ちます。 しかしながら、「苫小牧〜恵山沖〜下北半島沖で4Gの電波が入らない海域を航行する」ことによる支障があります。 苫小牧発着諸航路でプログラミング学習を行う場合、できれば当該海域を夜間に通過する便を選びたいものです。

一長一短…瀬戸内海航路

2019-10-22,名門大洋フェリー「フェリーおおさかⅡ」

以下が瀬戸内海航路の例です。

瀬戸内海であれば、全体的に4Gの電波が入る海域が多く、この点ではプログラミング学習に好都合と言えます。 一方で、瀬戸内海航路は航行時間12時間程度であり、睡眠時間・食事時間・洗面時間等を差し引くと、実際にプログラミング学習に割くことができる時間はさほど多くありません。

不向き…日本海航路

2020-08-23,新日本海フェリー「ゆうかり」

以下が日本海航路の例です。いずれも新日本海フェリー運航です。

  • 小樽〜舞鶴航路
  • 苫小牧東〜敦賀航路
  • 小樽〜新潟航路
  • 苫小牧東〜秋田〜新潟〜敦賀航路

これら日本海航路は、4Gの電波が入らない海域を航行する時間の比率が高いです。 日本列島の形状から、日本海航路は陸地から離れた海域を航行するためです。 特に北海道〜若狭湾航路の場合、航行20時間の大半の時間で電波が入らないでしょう。

長距離フェリーで実現するワーケーション

kotobank.jp

以下のような条件を満たすのであれば、「長距離フェリーで仕事を進める」ということも可能かと考えています。

  • 主にPCを用いる仕事である
  • 航路全体において、大部分の区間で電波が入る

長距離フェリーで使われるような船の場合、全長200m前後の大きさがあり、仕事中の気分転換に用いることができそうな設備も用意されています。 「1つの場所に留まり続けることにより、アイディアが煮詰まってしまう」という悩みとは縁遠いのではないでしょうか。

特に「同じような場所、同じような状況が続いている中で何かをしようとすると、どうしてもマンネリ化してしまう」という人には、「長距離フェリーで実現するワーケーション」という仕事のスタイルはおすすめできます。

一般的なプロジェクトマネジメントと、建設業の施工管理の相違

前書き

一般的なプロジェクトマネジメントと建設業の施工管理。 「利幅を確保し、要求品質を満足し、納期までに完成させる」という目的は同じです。 それゆえ、以下のような業務が存在する点については類似しています。

  • 工程管理
  • 原価管理
  • 品質管理

しかしながら、建設業の施工管理には、一般的なプロジェクトマネジメントとの相違点も多く存在します。 建設業はプロジェクト型産業の中でも特殊性が高い産業であるためです。

この記事では、こうした「一般的なプロジェクトマネジメントと、建設業の施工管理の相違」について記述していきます。

安全管理の重要性

建設業は、全産業の中でもトップクラスに危険有害性が高い業務を伴う産業です。 「建設業に存在して、多くの他産業に存在しない危険有害業務」としては、例えば以下の業務が挙げられます。

  • 高所作業
  • 重機を用いた作業
  • 重量物運搬作業

上記のような特有の危険有害業務の存在ゆえ、建設業における安全管理の重要性は、他業種とは比べ物にならないほど高いものとなります。 建設業においては、安全管理が工程管理・原価管理・品質管理と同列に扱われるのです。

労働者の安全確保を目的とする法律である労働安全衛生法においても、明らかに建設業を主な対象としたルール・制度が多く存在します。例えば以下のルールです。

  • 労働安全衛生法に基づく免許、技能講習
    • 特定の危険有害業務に従事する際に必要となる
    • 対象は労働者に限らない
  • 労働安全衛生法に基づく特別教育
    • 労働者を特定の危険有害業務に従事させる際に必要となる
  • 労働安全衛生規則による、作業環境についてのルールの設定
    • 「転落防止措置が必要とされる作業環境」「必要な転落防止措置の内容」等

建設業法の存在

建設業は、建設業法という業法が存在する規制業種です。 規制業種である以上、仕事の進め方にも法的制約が発生します。 例えば以下のような制約です。

  • 建設業法に基づき、業種が著しく細分化されている
    • その数実に29業種
  • 一定以上の規模の工事を受注する場合、建設業許可を取得しなければならない
    • 建設業許可は上記業種ごとに必要となる
  • 現場の技術水準を確保するため、各工事に対し、建設業法で定める主任技術者を配置しなければならない
    • 場合によっては、より要件が厳しい監理技術者の配置が求められる
  • 一括下請負は原則禁止である
    • 公共工事や集合住宅の工事では例外なく禁止
    • 請負契約における「仕事の遂行方法の自由」の例外である
  • 契約行為に対しても、建設業法により制約が存在する
    • 契約締結後の書面交付義務
    • 下請事業者に対する代金の支払期限の存在

特に公共工事の場合、建設業法その他の要求に基づく書面の作成・交付は、施工管理において非常に大きな割合を占める業務となります。

重層下請構造の存在

建設業の仕事は、一般に重層的な下請構造により進められることになります。 その理由としては、以下のような事柄が挙げられます。

  • 1つの事業者で仕事を完結させることが事実上不可能である
    • 上述の通り、建設業内部でも業種が著しく細分化されている
    • 管理側の業務の内容と現場作業側の業務の内容が著しく異なる
  • 労働集約的な産業であり、「固定費の変動費化」が強く求められる
    • 工事の進捗段階ごとに、必要な労働の内容・量が大きく異なる
    • 現場作業を行う労働者の直接雇用は、固定費の発生要因として忌避される

重層下請構造の存在ゆえ、建設業の施工管理には、「外注業者管理」という独自のプロセスが発生します。 建設業法においても、「施工体制台帳の作成義務」等、重層下請構造を前提としたルールが多く存在します。

「特定元方事業者」という制度の存在

労働安全衛生法においても、建設業が重層下請構造であることを前提とし、建設業を主な対象とした安全管理のルールが定義されています。「特定元方事業者」というのがそれです。

特定元方事業者という制度は、「複数の事業者に属する労働者が一つの場所で混在して作業を行う状況において、下請事業者の安全管理の一部責任を元請事業者に負担させる」という趣旨の制度です。

特定元方事業者を元請とする事業においては、労働安全衛生法上、他業種にはない独自のルールが存在します。以下がその例です。

  • 各種責任者の選任義務
    • 統括安全衛生責任者
    • 元方安全衛生管理者
    • 安全衛生責任者
  • 協議組織の設置義務
    • 「災害防止協議会」「安全衛生協議会」等と称される
  • 下請事業者の安全衛生教育に対する元請事業者の指導・援助義務
  • その他、現場全体に適用される各種ルールの設定義務

社内LANでも許したくない警告メッセージ

どの警告メッセージか

「ユーザー名とパスワードは、セキュリティで保護されていない接続で基本認証を使用して送信されます」という警告メッセージです。

何を意味する警告メッセージであるか

以下2つの実態を意味する警告メッセージです。

  • ユーザー名とパスワードを、セキュリティで保護されていない接続でやり取りしている
  • ユーザー名とパスワードを、暗号化せずに平文でネットワーク上に流している
    • 「基本認証」というのは、「ユーザー名とパスワードを暗号化せずに平文で流す」ということ

許したくない理由

このような警告メッセージを出してしまう業務環境というのは、「相当に価値観が古く、世の流れに背を向ける環境である」ためです。 「人手不足」と言われて久しい雇用情勢のもとで、「世の流れに背を向ける業務環境」というのは、それだけで採用の足枷になりえます。

具体的には、以下の点で価値観の古さを感じるのです。

  • 「社内LANなら安全」というのは、もはや古い考え方である
  • ロケーションフリー」という世の流れに背を向けるものである

以下、それぞれ説明していきましょう。

「社内LANなら安全」というのは、もはや古い考え方である

「ユーザー名とパスワードを、セキュリティで保護されていない接続で暗号化せずにやり取りする」というのは、明らかに「社内LANは安全である」という考え方に基づく運用実態です。

何が「古い考え方」であるかについて説明していきましょう。

前提として、ここ10年くらいでも、情報セキュリティに対する脅威は大きく増大しています。 とりわけ、「社内LAN内部からの情報漏洩」という脅威の増大が顕著です。 「社内LAN内部からの情報漏洩」に関する具体的な脅威としては、以下のような事柄が挙げられます。

  • 標的型攻撃の一般化
  • 内部犯行による情報漏洩のリスク増加
    • 情報漏洩発生時の社会的影響の増大

www.soumu.go.jp

これだけ社内LANに対する脅威が増大している昨今において、「社内LANは安全である」という考え方に基づいて構築・運用されている社内LANは、間違いなく「古い考え方」です。 もはや従業員が会社に不信感を抱くレベルの欠陥である、そう言ってしまっても過激ではないと思います。

ロケーションフリー」という世の流れに背を向けるものである

働き方の多様化により、デスクワークについては「オフィスで働く」以外の働き方が注目される時代になりました。 そうした「ロケーションフリーな働き方に向かう」という世の流れにおいては、業務システムも「社内LANというセグメントを設けず、インターネットのみで完結する」という方向に向かっていくものと推測されます。

www.akamai.com

「業務がインターネットで完結する」という状況において、「セキュリティで保護されていない接続で情報をやり取りする」というのは、情報漏洩のリスクが極めて高い運用形態であることは間違いありません。 あまつさえ、「ユーザー名とパスワードを平文でやり取りする」というのは、「どうぞ情報を盗んでください」と宣言しているようなものではないでしょうか。

「業務がインターネットで完結する世の中を想定していない」この点で、「ユーザー名とパスワードを、セキュリティで保護されていない接続で暗号化せずにやり取りする」というやり方は、「ロケーションフリー」という世の流れに背を向けるものなのです。