かざいむ日誌

IT関係で知ったことなどを記事としてあげていきます。内容に不備や質問などあればぜひコメントをよせてください。

『挫折論への招待』を読んだ。

技術同人誌で、Boothでダウンロードできる『挫折論への招待』を読んだ。

f:id:name_untitled:20200725223518p:plain

今とても活躍されている方の経験やストーリーを挫折にフォーカスして読めたのはとても良かった。これは自分の経験を話したくなる良いトピックだなと思った。

私の場合は、身近で優秀な人がいたもののそれをちゃんと認めないまま、自分の優秀さをなにがしかの形で証明しようとして、プロジェクトの区切りの良いところで外されたことがある。この時ばかりは本当に自分がダメだと思っていた。

今振り返ってみると、生活環境が変わったばかりで、色々と慣れないことが多く、成果を出しづらいタイミングだったし、できないならできるように改善するとか相談するとかできたはずだったなぁと思う。

今振り返ってどれだけできているかというと心もとない。これからもちょっとずつ失敗するんだろうし、その時にどう行動するかは問われ続けるんだろうなと感じている。

Linux標準教科書を読んでざっくり動かした

f:id:name_untitled:20200725223159p:plain

あまりLinux触ったことなかったのでそこそこちゃんとやりたいと思い、Linux標準教科書をダウンロードしてやってみた。そこまでひっかからずにできた。権限周りは全然やってなかったのでうっすら知れて良かった。もう少し勉強したい感じ。だけど、WSL環境だとできなことが多くてちょっとストレス。

ITで国際協力の仕事をするには。

主に2つあると思います。

  1. 開発コンサルに入り、技術協力プロジェクトにITの専門家として参加する
  2. JPOなどを経由して国連機関に就職する

1.の場合は、スキルとしてSIerで求められるような、プロジェクトマネジメントや要件定義などのスキルが望ましい。2.の場合は、正直分からないけど、IT全般の知識およびデータ分析、地理情報、スマホアプリなどの知識・経験が評価されるのじゃないかなと思う。

どちらのコースでも、実装ではなく、理論や組織の情報マネジメントのスキルが必要で、基本情報や応用情報の試験で問われる知識は役に立つのではないかと思う。

業界未経験からスクールに通ってソフトウェアエンジニアになる、について 2020年7月版

最近、自分の知り合いの知り合いあたりで複数人掲題のような相談が寄せられたのでちょっといくつか考えたことを書いておく。

今の時期に転職はあまりお勧めしないので(時間がかかると思うので)、会社に所属しているなら退職せずにスクールに通うのが良いと思う。独身で大卒すぐとかなら第2新卒というような形で入ることもできると思うので、その場合はフルタイムで通うのは止めない。

Web系は分からないけど、聞いた話だと、Vue.jsができると良いとのこと。GraphQLはできたらいいのは確かだけど、RESTができるとより良いらしい。

業界未経験でスクールに行くと大体フロントエンドエンジニアのコースを受ける。そこで作成するポートフォリオはWeb系のものになる。

ここで、Web系かSIerがいいかだけど、どっちもどっちな気がする。Web系が良いなら作成したポートフォリオとそれを言葉で説明できるだけの理解を元に就活をするのがいいのかも。

微妙なWeb系に入るなら、微妙なSIerに入った方がいいような気がする。微妙なSIerはSESとかやっているので、ぬるいSESだと現場を変えながらいろんなのを見れるので量をこなすことができる。一方で、Web系(自社サービス)だとメインのは出来上がっているので自分で色々と試して経験を積めないように思う。

あと、運用監視は一番ハードルが低いように思うし、やりようによってはスキルアップもできるけど、環境が整わないとこなす仕事になりがちな印象。

SIerに転職するなら、ポートフォリオJAVA+Springがいいんじゃないかな。なんとなく、React+GraphQLのポートフォリオだと、Web系に憧れてるのかな、うちに合わないかもなと思われるかも。

でも、自分の経験で言えることは限られてるからいろんな人の例が聞きたい。

デジタルトランスフォーメーション(DX)がなんでこうもふわっとしているのか。

f:id:name_untitled:20200709000147j:plain

デジタルトランスフォーメーションという言葉はちょっと前から聞くようになったが、バズワードの印象が強く、ちょっと警戒してたけど、フォローしている人の投稿でも登場するようになり、追ってみることにした。多少知恵がついたので今日、他のSEさんにDMMの松本さんの投稿の話をしてみた。すると、全然伝わらず、逆に彼からDXだとRPAとか聞きますよと言われて、ようやくかみ合った話ができてないのに気付いた。その後で、『ソフトウェア・ファースト』に出てきたキーワードを出して少し言いたいことが伝えられた。で、後から本とかサイトを読み直すとやっぱり自分の理解が足りてなかったので、ここで復習を兼ねてまとめておく。

まず、デジタルトランスフォーメーションはいくつかの定義があるのでまずはその紹介から。まずはもっともよく引用される定義がこれ。

企業が外部エコシステム(顧客、市場)の破壊的な変化に対応しつつ、内
部エコシステム(組織、文化、従業員)の変革を牽引しながら、第3のプラ
ットフォーム(クラウド、モビリティ、ビッグデータ/アナリティクス、ソ
ーシャル技術)を利用して、新しい製品やサービス、新しいビジネス・モデ
ルを通して、ネットとリアルの両面での顧客エクスペリエンスの変革を図る
ことで価値を創出し、競争上の優位性を確立すること

 IDC Japan株式会社の定義(デジタルトランスフォーメーションレポート

また、上記の引用に続いて、

企業が生き残るための鍵は、DX を実装する第 3 のプラットフォーム上の
デジタルイノベーションプラットフォームの構築において、(中略) IT を強力に生かせるかにかかっています。

とも書かれており、現存する、第1、第2のプラットフォームから第3のプラットフォームの確立が説かれている。ちなみに、この第3の前のプラットフォームはそれぞれ、第1のプラットフォームはメインフレームと端末システム、第2のプラットフォームはクライアント・サーバーシステムとのこと。*1DXがふわっとしたバズワードになっているのは、第1、第2のプラットフォームからの移行も含めてDX化とされていて、さらにそこにいろんなベンダーがDX化を進めるものとして、自社の製品を紹介しているからなんじゃなかろうか。

ちなみに、この点については、及川卓也さんが『ソフトウェア・ファースト』でとても分かりやすく説明している。以下はこの本を元に説明をする。彼によると「DXの本質はIT活用を「手の内化」すること」、つまり、「ITの企画、設計、実装、運用というすべてのフェーズを自らコントロール可能な状態にすること、つまり手の内化していくことが大事」なのだそうです。これは、従来のビジネス一辺倒の経営から、ビジネス、テクノロジー、クリエイティビティ(BTCモデル)が求められるようになったことが背景にあります。

そして、このDXの前段階として、デジタイゼーションとデジタライゼーションがある。デジタイゼーションはデジタル化のこと、デジタライゼーションはデジタルデータを用いたプロセスのこと。及川さんが例として挙げているのはカセットテープがCDになるのがデジタイゼーション、曲がMP3でインターネットで共有されるのがデジタライゼーションとのこと。この2つを前提として、ユーザーに新たな価値を提供するのがDXとのこと。

 

一般的なDXの理解は上のもので良いと思う。

次にテックカンパニーでDXというと何かについても押さえておきたい。これについては2つほど参照できるものがある。一つ目はDMMの松本勇気さんのNoteの投稿。

note.com

そして、もう一つは、Googleが提供するCourseraの機械学習のコース。

www.coursera.org

松本さんの投稿では、

DMMの改革を進める中で、ソフトウェアでより成長を加速する、より多くの事業を立ち上げられる会社にしていこうと取り組んできた。その中で一番意識しているのは表題の「失敗をコントロールし継続的に改善し続ける」状態に至ることだと考えている。これは、近年のソフトウェアスタートアップがなぜ成長しているか、ということに答える重要な特徴だと考えている。

と述べられており、IT活用を前提としたうえで、情報をとりながらいろいろな試みを行うことだと言えると思う。同じテックカンパニーのGoogleはそのコースの中で、機械学習の導入に向けて業務の改善は手順を踏むべきとしている。

 まずは1人がうまく業務を回せること。次に複数人で業務が分担できること=明文化されていること。業務がデジタル化されること、そして、そのデジタルデータを分析して改善すること。こうやって自分の言葉で書くとありきたりな気がするのだけど、業務を設計して、それぞれから情報を収集してそれを改善に生かすという基本ながらも大事なことがしっかり行われているんだなぁと感じた。

最後にTransformationで良い感じの写真をググってたのだけど、このさなぎの写真が出てきた。そういえば、確かに蝶も芋虫からそのまま蝶になれるのではなく、いちどさなぎになって体を作り変えてからじゃないと蝶になれないんだよな。デジタルトランスフォーメーションも華々しい成果をあげる前にあんまりきれいじゃないさなぎの時期を通らないといけないんだろうな。

 

Photo by Suzanne D. Williams on Unsplash

PWAの設定をしたときに問題解決したときのメモ

先日、GatsbyJSのプラグインを利用してサイトをPWA化したのだけど、その流れが後から考えるとなかなかイマイチだったのでメモしておく。ちなみにこの作業をする途中で別のトラップを踏んだのでそれも略さず書く。

 

まず、GatsbyJSのGitBook-Starterという、GitbookのスタイルでWebサイトができるものを使っていた。で、そのうち、語学の音声ファイルも入れたいと思い、PWAで全部オフラインでキャッシュ出来たらアプリ要らないなと思った。で、作ってたサイトをPWAにするのはこのStarterの設定をすれば良さそう(PWA=True/Falseという設定項目あり)だったのだが、設定してもうまくいかない。

ブラウザはEdgeを使って開発者ツールを立ち上げたが特にエラーはなさそう。

ふと、気づいたのはサイトがHTTPSになっていないこと。同じ環境で立ち上げた別のサイトはHTTPSになっている。おかしい。そういえば、画像ファイルは外部URLから読んでいてそれがHTTPだった。

これをHTTPSでとるように変更して、Gatsbyのコマンドを動かしたら関連するプラグインをアップデートしてね、と出たのでこれをアップデートしたら、全く動かなくなった。ここから始まる。

で、NPMをYarnに変えてみるとか、Package.jsonを元に戻してみるとか色々とやってみて2,3時間たってもうまくいかず。で、リポジトリからクローンしてローカル作り直してみることに。すると、エラーメッセージが変わった。このエラーメッセージでググったらGitHubにIssueが立ってて同じタイミングで同じエラーになっている人が生まれつつあった。

で、Same Hereと書いて、別作業をしてた。しばらくすると、IssueにコメントがついてGatsbyJSと関連プラグインはこのバージョンの組み合わせにしてとのこと。それにするとあっさりエラーは解消。ただし、PWAはやはりできないまま。

で、元々やろうとしてた画像ファイルのHTTPS化を試した。やはりうまくいかない。しかもPWAだからHTTPSじゃないと確認できないから何度もPushするのだるい、でもうまくいかないというのを何度か繰り返した。で、そもそもPWAがうまくいかない原因を調べる方法ないのかな、と思ってググったところ、PWAの開発のために、localhostであればChromeの開発者ツールで確認できると書いてあった。なんてこった。

そこで、Chromeを立ち上げ、開発者ツールのアプリケーションタブを確認。するとPWA用のアイコンが見れないとのメッセージ。しかも、コンソールにそのメッセージが表示されている。でも、この時、プラグインのデフォルト設定のままで、そのアイコンが表示されるはず、と思ってたのにそもそも読めてなかった。

つまり、クローンしてきたプロジェクトの設定が、足りないところがあった。これを解消するために、アイコンをどう読み込んだらいいか調べたけど、動的に読み込みができない作りになっていた。で、静的ファイルはどうしたらいいのかと思って調べたら、GatsbyJSではstaticフォルダというものを置くのがお作法らしい。これは、スターターの説明ではなく、GatsbyJSのチュートリアルとか見ればもっと早く知れたかも。

 

これらの設定を見直してアイコンを設定しなおしたらPWA化が成功した。

改善点や検討すべき点は以下の通り。

  • 安請け合いはしない
    NPMの依存ライブラリはそれらが参照しているライブラリのバージョンが異なる可能性があるので、あまり知らないときのアップグレードは慎重に。
  • 混ぜるな危険。
    一度に確認するのは一つ。HTTP→HTTPSとバージョンのアップグレードを一緒にしない
  • 正しくフィードバックを得る
    手がかりがないときに自分が参照しているものは正しくフィードバックを返してくれるものか確認する(Edgeではなく、Chromeを使う)
  • 簡単に確認する方法はないか探す
    Chromeの開発者ツールが情報多い
  • そもそもどこに確認すべきかを考える
    スターターの作成者のサイトではなく、大本のGatsbyJSのサイト

How Google Does Machine Learningのコースの概要部分を受講した。

www.coursera.org

このコースの概要部分を受講したので、備忘録としてエントリをあげておく。このコースはGoogleが提供しているコースで、似たようなコースにCrash Courseというものがある。Crash Courseはどちらかというと手を動かして学ぶ開発者向け。それに対して、このCourseraのコースは機械学習を導入したい組織向けのコースといった印象。機械学習のライブラリの使い方にはそんなに触れず、どうやって機械学習を組織として取り入れていくかがしっかりと説明されている。これを見ると機械学習はAIエンジニアを入れたらすごい成果が得られるのではなく、組織としてどうやってデータを集めて、検証サイクルを回せるようにするかが重要であるように思う。

 

 

この辺りの考え方が最近気になっているキーワードDXの真のゴールになるのじゃないかと思う。単純に技術を使うのではなく、どうやって検証をして、改善していくか、そのためにデータをどのように利用するか。DMMの松本さんがDXについてNoteで書いていて参考になる。

note.com

 

本編に戻ると、このコースでは、どのように組織に機械学習を取り入れるかが丁寧に説明されている。よくイメージされる、ぱっと自動化されるというのは実際には最後の方のステップで、まずその仕事の手順がはっきりしていて、複数人で分担できる、手動で分析ができるなどを経て最終的に機械学習が導入されるとのこと。

また、機械学習では現実の世界に存在するバイアスが反映されるのでそれについても意識的に対策を促していてとても勉強になった。例えば、特定のポジションの採用を機械学習にした場合、これまでにたまたま男性が就いていることが多かった場合、男性を優遇するよう間違えて学習してしまうことがある。

機械学習ではこういった点に自覚的に取り組むべきとのこと。