コーディング無しでアプリが作れます。

エンドユーザがコーディングなしでアプリを作成する試みはいままで死ぬほど行われている。

商用アプリであれば
EXCELのマクロ記録
ACCESSマクロ
・RPAツール

ゲームであれば
RPGツクール
FF12ガンビット
マリオメーカー

あたりが有名なところだとおもう。

ただし、ほぼすべてのコーディング無しアプリケーションは「後方互換」を犠牲にして成り立っている。後方互換とはそのアプリが動作する土台の仕様が変わっても、ユーザ作成のアプリが動作する事だ。例えば、windows7用に作成したアプリがWindows10で動作する場合、このアプリはWindows10に対して後方互換性があると言えるが、Excel95で作成したアプリがExcel2007で動作しない場合は、後方互換性が無いと言える*1


動作環境の後方互換が無い場合、バージョンが変わるたびに、アプリの移植作業が必要になる。そもそも移植というのはより低レベル(コンピュータ寄り)な理解が必要になってくるため、コーディング無しでしかアプリを作れないメンバーにはハードルが高くなってしまう*2


大体の職場において、「先人が作成した偉大なEXCELマクロ」は、とにかくマクロの記録に依存しており、余計な記載が多い。さらに言えば、EXCELマクロは「キーストロークの記録」に過ぎないものも多くEXCELの仕様が少し異なっただけで動作しなくなってしまう。

ACCESSに至っては、そもそも世代違いでACCESSファイルに互換がなくなって、最新のACCESSでは古いACCESSファイルを使用できなかったり、マクロをVBAに変換していた環境*3では日本語関数名、日本語変数名が正しく移行されなかったり、まあいろんなトラブルが発生する。

それでもEXCELACCESSならばMicrosoft社の製品なので、(移行不具合が多く発生しようとも)使い続けるのは不可能ではない。しかし、コーディング無しツールはMicrosoft社だけが作成しているのではなく、いろんな会社が作っている。その会社が5年後存在するか?そのツールは5年後存在するか?をあらかじめ考えてから手を出すべきだろう。または「プロトタイプ作成」と割り切ってツールを使用するのも一つの手だろうと思う。

コーディング無しで作成されたアプリは「プロトタイプとしては優秀」だが寿命が短い。延命するためにはコーディングできるレベルの担当者が必要になる。そのような担当者を継続的に確保できないなら、外注するなり、プログラマを雇うなりして「寿命を迎える前にコーディングで別途アプリ化しておく」必要がある。

今後、問題になりそうなのはRPAツールだろう。コーディング無しで作れるかもしれないけれど、どうやって維持していくのかということを、ツールの選定と維持するための運用方法を制度化しておくべきと思われる。

*1:Excelがプラットフォームとして後方互換性が無いと言っているわけではない。あるExcel95アプリケーションがExcel2007に対して後方互換性が無かったというだけ

*2:例えばExcelの仕様で、新規Bookが作成される際、Excel95では10個のシートが作成される。Excel 2007あたりでは3つのシートが作成され、現行のExcelでは1つしかシートが作成されない。シートがデフォルトで3シートあるか、10シートあることに依存するマクロは、1つしかシートが作成されない現行のExcelでは動作しない。

*3:ACCESSではマクロとVBAが異なる存在、マクロでは細かい制御ができないのでVBA変換が可能だが、勝手に関数名やコントロール名に日本語が使用されたりする。その結果https://docs.microsoft.com/ja-jp/archive/blogs/office_client_development_support_blog/ver1708-issue-japanesenamevbamoduleこんなことが起こったりする。

他人の言葉の使い方を非難するときは調べてからにしましょう

結構な昔話。確かアナウンサーの生島ヒロシ氏だったと思うが、宮沢りえ氏インタビューの言葉に突っ込んでいた。
「りえさんは全然大丈夫と言っていますが、本来全然は否定の時に使う言葉です」

そう言われてみれば、私もマンガ雑誌の裏に「全く簡単だ」という言葉が記載されていた時に、「全くって、否定の時に使うんじゃないの?」と思っていた。全然と全くは同義だろうから、生島さんの言葉が正しいんじゃないかと思った。しかし、よく考えてみると、全くという言葉は結構な頻度で肯定に使われているような気もする。調べようもないので、なんとなくモヤモヤした感じを抱えたまま何年か経過した。

インターネットが普及して、Googleが現れることによって、調べるコストが非常に下がった頃に「全然は否定にしか使えないのか」問題を調べてみたところ、使っても構わないというのが現状の通説のようだと判明した。明治時代には既に全然を肯定で使用している例はあり、我々が違和感を感じるのは、昭和期の教育の中で培われた言葉の感覚に依存しているようだった。
言葉のスペシャリストであるアナウンサーが、自分で調べたわけでもないのに、昭和期の教育をベースに「本来」とか言っちゃうのは、そこそこカッコ悪いような気がする。


ライフラインという言葉があり、阪神大震災からよく耳にするようになった。耳にする様になってから暫く後に、新聞のコラムにこんな内容が載っていた。

ライフライン和製英語扱いする人がいるが、それは誤りで、アメリカで用いられはじめた、ちゃんとした工学用語だよ」

このことも長い間気にはなっていたのだが、Googleの出現によって調べられるようになった跡に、日本のサイトを漁っても、あまり詳しい情報は見つからないので、earthquake lifeline で検索したところ
・そもそも米国発祥のライフライン地震工学というのがある。
・サンフェルナンド地震をきっかけに生まれた比較的新しい工学分野。
というのがわかった。たしかに和製英語ではない。
ということで、当時和製英語扱いしていたWikipediaを更新したりしてみたのであった。今の版記載のutilityと同義というのには賛成できない*1が、正確性は上がっているような気がする。
ネイティブスピーカーが知らない言葉や言葉の用法なんて腐るほどあるのに*2、ネイティブスピーカーが知らない用語を和製英語だというのは余りにもアホなのではないかと思う。


個人的には「百歩譲って」という言葉と「有言実行」という言葉に少し抵抗がある。どちらもパロディっぽい言葉なのに、元となった言葉「一歩譲って」「不言実行」を駆逐しそうに見える為だ。とはいえ、「大幅に譲歩する」「言ったことを実行する」に該当する言葉が世の中に望まれており、にもかかわらずそんな言葉が存在しなかったのかも知れず、非難すべき内容ではないだろう。


以上のように、他人の言葉の使い方を非難するのはなかなか難しいのだ。


ただし、「中抜き」だけはダメだと思うので積極的に非難しておこうと思う。本来、「生産者と消費者間で業者を用いずに直接取り引きする」だった言葉が、「生産者と消費者の間に業者が入り込んで、本来生産者が得るべき報酬を業者が抜き取ってしまう」という意味になってしまっている。全く逆の意味を持つ同じ言葉*3は流石に存在しちゃいけないんじゃないだろうか。中間搾取でいいじゃないか。まあ、中間搾取という言葉は非常に強いので、マスコミ屋さんが中間搾取業者様に忖度して、言い換えを行っているのだろうけれども。

*1:lifelineは災害を想定した用語なので

*2:全然関係ないがパタリロという漫画の「剔抉という言葉を知っていますか」というネタを思い出した

*3:同音対義語とでもいうべきだろうか。

webミーティングって思ったより難しい

本日、某社のイベントセミナーをYoutubeで見ていたのだが、コメント欄がOFFになっていた。このセミナーは事前登録が必要なセミナーで、登録者のみに公開されるセミナーだったので、本来コメント欄を閉じる理由が見つからない。まあ一歩譲ってコメント欄をOFFにするのはいいんだけど、発生しているトラブルにリアルタイムで気づけないじゃん、、、とか思っていたところ「音声が発信されないまま5分しゃべり続ける」というかわいそうな状況になっていた。結局音声が入っていないことには、twitterの反応で気づけたらしい。


音声が発信されないまま5分しゃべり続けるってのは、実はWEBミーティングの失敗あるあるで、大体の場合「音声聞こえますか」「アジェンダ見えますか」と最初に発信し、それに対するレスポンスを待ってからミーティングを始めるっていうのが今の一般的なやり方だ。また、音声の問題があった場合には、チャット機能で報告するように参加者に伝えておくと、参加者からのメッセージを受けて不具合に気づくことができる。


WEBミーティングではなく、Youtubeを使用した情報発信とはいえ、音声の導通が正しく行われてるか確認してからイベント始めるのが当たり前だと思うけれど、そのレスポンスを受け取る唯一の窓口を封じてイベントを始めるんだから、なかなかイベント慣れしていない会社だと思う*1


WEBミーティングをうまく実行するためのコツっていうのは体得するものであって、体系化されていないのかもしれないと思ったので、知る限りのコツを以下に記載しようと思う。

  • 少なくとも主催者のカメラだけはONにしておく*2
  • WEBミーティング開始の5分前までに、異なる場所から参加する人を一人捕まえておいて、音声導通、画面共有状態が正常か確認する。
  • 発表に使用するファイルはあらかじめ開いておく*3
  • アジェンダを用意し、ミーティング開始時間前にはそれを映しておく*4
  • 音声や画面共有が途切れた場合の報告経路を最初に明示しておく。

まあ、こんな感じだと思われるので注意しておくとよいかもしれない。

*1:これでも世界のトップIT企業の一つだったりするのだが

*2:主催者の動作と音声の有無で参加者は違和感を感じられるので

*3:大体発表時に「ファイル開けない」とか「ファイルサーバこけた」とか始まるので

*4:参加者が正しいミーティングに参加できていることを確認できる

暗号層が入ると難しいよね

当社の社外持ち出しPCには某社のドライブ暗号化ソフトが入っている。最近私の管轄内の持ち出しPCが2台論理的に壊れて、いい経験になったので記載しておく。

最初の1台は起動するものの、暗号化ソフトの管理プログラムが起動した瞬間にBSoDで死亡してしまう。セーフモードでは起動したので、ダンプファイルを解析してBSoDの原因を調査したところ、やはり暗号化ソフト(のドライバ)が原因で死亡しているようだった。実にめんどくさい。

まあ、セーフモードで起動しているので、暗号化ソフトのアンインストールを試みたところ、「セーフモードではアンインストールできません」とご丁寧に言われてしまった。実にめんどくさい。

Windowsの初期化再インストールしかないだろうと思い、インストールメディアを探していたところ、ほかの担当者がWindowsの機能である「リカバリインストール」を試したようだった。その結果、暗号化層の上でWindowsが初期状態に復元されるというなかなかおもしろい結果になった。そのまま、その担当者はインストールを進めたが、暗号化ソフトを入れようとして「すでに暗号化されてるからインストールできないよエラー」が出てしまった。なるほど、暗号化されたままWindowsリカバリすると、暗号化層を管理できなくなっちゃうんだな。

いずれにしても暗号化層を含めた初期化しかないし、情報システム部しか、このPCのインストールメディア持ってないし、ということで、情報システム部に初期化を依頼したところ、「二週間かかりますよ」と言われたのであった。いやいや二週間テレワーク出来なくなっちゃうじゃんアホか。

ということで、Windowsの「バックアップ(Windows7)」という機能を使ってみることにした。この機能は現在立ち上がっているWindowsを起動状態のままに丸ごとバックアップできる機能なので、暗号化層の影響をあまり受けない*1

暗号化層上でリカバリインストールしたWndowsをそのままバックアップし、パーティションをきれいに消去(暗号化層を消す)した上で、バックアップから戻せば、暗号化されていないwindowsに戻るだろうと思い、やってみたのであった。なんと、うまくいった。

さて、再度暗号化しようかなと思い、暗号化ソフトをインストールしようとしたところ、「ブート領域に暗号化ソフト入っているからインストールできません」と言われてしまった。なるほど、OSの入っているドライブを暗号化するためには、そのドライブを起動時に複合化しなきゃならないので、ブート領域にもソフト入っているのね。うわめんどくせえ。ブート領域にドライブレター割り当てて、暗号化ソフトらしきファイルをちまちま消去したのだけれど、どうやっても「ブート領域エラー」は解除できない。

こうなったら最後の手段だ。ブート領域削除して再作成しちゃえと思い、Windows10のインストールメディア*2でPCを起動し、Windowsの修復メニューに入ってdiskpartで削除してみる。なぜか削除できない。けれども、ブート領域内のファイルフォルダは削除できたので、きれいに削除して、ブート領域を修復した。ここまでやって、無事にWindowsは暗号化ソフトを入れられるようになった。めでたしめでたし。


さて2台目のPCだが、上記作業の1週間後、今度は「OSから見えるパーティションサイズ」と「ファイルシステムが報告するパーティションサイズ」が異なるという非常に厄介な症状が発生していた。暗号化ソフトの影響なのかわからないが、ディスク管理ツールは200GBと報告するパーティションが、エクスプローラから見ると50GBにしか見えない。暗号化を解除しても現象は変わらず。使えるには使えるんだけれど容量が小さすぎてWindowsUpdateができないのだ。

まあ今回は暗号化ソフトの影響かもしれないけど、上記で編み出した手法があるので、バックアップ→リカバリで問題なくうまくいくだろうと思いきや、パーティション内のデータがリカバリの邪魔をする。まあ、パーティション削除しちゃえばいいやと思い、Windows10のDVDで起動。Windowsインストールを開始するとそこでパーティション削除できるので、パーティションを削除し、インストールを中断、バックアップを復元した。


仮想化にしても暗号化にしても、層が1つ増えると、その層で新たなトラブルが発生する。ドライブ暗号化ソフトっていうのは平時はその存在を感じないレベルで安定するのだけれど、障害発生時には牙をむいてくるのだ。

今回の修復で得た知識集

  • 暗号化ソフトを入れると、ブートローダに暗号化を解除するプログラムがインストールされる→まあ、当たり前っていえば当たり前なんだけれど
  • Windowsの「バックアップ(Windows7)」機能めちゃ使える
  • USB SSDは用意しておいたほうがいい。バックアップの速度がHDDと段違い
  • Window10のメディアはDVD-DLもしくはBD-Rでないと容量が足りない
  • パーティション削除はWindowsインストーラが最強
  • ブートローダの初期化方法
diskpart
list disk	   (付属しているディスクのうちOSが入っているディスクの番号を確認)
select disk 0	   (OSが入っているディスクの番号をSELECTする)
list volume      (システムボリュームの番号を確認)
select volume 0 (システムボリュームの番号をSELECTする)
asign letter=s:  (システムボリュームにドライブレターSを付加する)
exit
s:	(Sドライブへ移動) 
rmdir /s efi
x:
bcdboot C:\Windows /s S: /f UEFI

*1:起動状態のWindowsから見たファイル群は複合化されたファイル群なので

*2:MSDN契約で入手したISOをDVDに焼いたもの。ライセンスが異なるのでこのPCのインストールには使用できないが、リカバリ目的で使用することはできる。

PCとかサーバのHWって誰が教えられるの?

テクノロジーに関してはいろいろな企業が有償の研修を設けており、例えば
・DECの教育部門が独立したトレノケート社*1
NEC系のNECマネジメントパートナー社
伊藤忠系のCTCテクノロジー社
キヤノン系のエディフィストラーニング社
富士通系の富士通ラーニングメディア社
なんてのが代表的なテクノロジー教育の会社だと思われる。

これらの企業では大体おなじ研修を申し込むことができる。MS系、Oracle系、vmware系、aws系、cisco系の教育等。差別化の要素としては「企業としての近さ」「価格」「トレーナのレベル」しかない。個人的には「企業としての近さ」「価格」は無視して、トレーナのレベルで選択すべきと思うが、まあ所属組織の呪縛を離れることは難しい。

残念ながら「探しても研修が見つからない」分野というのがあって、それはPCやサーバのHW分野だ。この分野はコモディティ化が進んでおり、例えばDELLのサーバを理解する人はHPEのサーバも容易に理解できるだろうし、Dynabook社のPCを理解する人は、VAIO社のPCを理解するだろう。
しかしこの分野は
・研修がない
・体系的に学ぶための書籍がない
のだ。

技術については「理論」を知ってから「実装」を知って体得していくのが最も効率が良いが、サーバHW、PC HWについては理論を体系的に学ぶ場はほぼない。なので、基本的には会社内で教えるしかないのだ。

もし社内にPC HW、サーバHWを体系的に教えられる人がいるなら、大切にしておいたほうが良いですよ。

*1:個人的にはトレノケート社が大好き

正直ネジのほうが楽

4,5年前に購入したノートPCの、本体側電源コネクタが破損した。ACアダプタを刺しても充電が開始されないのだ。保守期限はとっくに過ぎているので、自分で修理することに。

PCはDynabookのRX73/VBRという機種なので電源コネクタをGoogleで検索したところ、Dynabookの中古部品を販売している会社(ダイナショップ)を発見。電源コネクタは約2000円くらいなのですぐに購入した。

んでもって、本日電源コネクタが届いたので、修理を開始したところ、ものの10分で修理が完了した。構造がシンプルで交換しやすい部品ということもあったが、一番大事なのはすべてねじ止めであることだ。

最近のPCは「いかにネジを使わないで組み立てるか」みたいなところに重点が置かれており、それはAppleのように「素人に分解されて台無しにされたくない」「ネジが美しくない」「修理を利益にしたい」とか、DELLのように「ドライバーが無くても修理可能としたい」「修理時間をできるだけ短くしたい」というメーカーの意思なんだろうけれど、「保守期間を超えてしまったPC」を使うようなこちらとしては、ねじだけで止められているのは非常にありがたい。だって、ねじ外せば分解できるんだから、わかりやすいことこの上ない。

言ってしまえば「Dynabookは商売が下手」ってことなんだろうけど、個人的にはありがたいのです。

そうはいってもUI設計は難しい

新入社員だった遠い昔に、新入社員研修の最後としてシステム構築を行ったことがある。
大したシステムではないけれど、必要なプログラムが10本程度あって、そのプログラミングを8割くらい担当することになった。しかし1人で8割は圧倒的に時間が足りず、1割だけ他の担当者に作業を移管した。その時にほかの担当者が作成したプログラムを見て愕然とした。1項目の入力について、常に1件の確認メッセージボックスが現れるのだ。

UI設計は「わかりやすさ」を重視しすぎてはいけない。わかりやすさを重視しすぎると、使用回数が多い人に大きなストレスを与えてしまうから。


会社近くの飲食店にいわゆる「券売機」が設置されている。券売機はタッチパネルになっており、お金を入れて欲しいメニューをタッチすれば、食券発行候補となって、発行してもよければ「発行」ボタンを押下すればよい。このタッチパネルのUIがなかなかアレな設計になっており、「商品情報」を囲った枠を押下しても反応しない。商品情報内の「価格」を囲った枠(以下画像のオレンジ部分)を押下すると反応してくれる。

タッチパネルのUI

タッチパネルUIは「タッチパネル用の設計」にしなければならない。現状のボタンをただタッチパネルにしてしまうと、消費者の学習を裏切ってしまう。


昔、切符といえば「お金入れて」「価格ボタン」押下という2アクションで発行できた。逆に言えば、2アクションで完結できない切符は窓口で購入する。JR東海のタッチパネル券売機を初めて使用して、新幹線のチケットを購入しようとしたとき驚愕した。「自由席」の新幹線チケットを購入したいのに、FROM駅選択、TO駅選択、チケットの種類選択、日付選択しないと購入できないのだ。10秒で買えていた切符が、1分以上かかるようになってしまった。

理想は「知っていればめちゃくちゃ早く確実に操作できる」、「知らなければ時間がかかるけど確実に操作できる」を両立すること。まあ、それを両立できるほどの開発期間なんて取れないのが現状なんだろうけれど。