かやのみ日記帳

日々感じたことをつれづれと書いています。

自分の思うソフトウェアエンジニアの難しさと最近の心の萎え

 

最近感じている自分の思うソフトウェアエンジニアの難しさと萎えてることをぐだぐだと書こうと思う。

 

自分はパソコンいじりが好きで得意だと信じていたから、ソフトウェアエンジニアになった。SEというやつだと思う。たぶん。

 

はじめの頃は楽しかった。初心者だから後先を考えなくてよかった。書き捨てだから。バグを治すのは楽だ。原因を探して直せばいいだけだから。チューニングだとか、ある要件があって、それを満たす実装をするのも楽だった。

 

設計って本当に難しい

でも、エンジニアの本当の難しさは設計にあるんじゃないかと気づいてしまった。そして、それこそ最も自分に向いていないのではないか。設計というのは広義、狭義的なもの両方だ。ここでは自分なりに定義させてほしい。

 

狭義の設計は、Webサーバの構成とかを考えたり、プログラムの繋がりを考えること。言語、フレームワーク選定とか。特に難しいのはメンテナンス性と拡張性をもたせること。

仕様変更に強いシステムを作る。それは非常に難しく思う。演習問題も少ない。テストをきちんと書いて、分割しやすくして…。関心の分離だとかドメイン言語だとか…。

他の人がメンテしやすく作る、本当に大事な基本スキルだ。それが…どうにも苦手だ。小手先で解決したくなってしまう。長期で戦うのが苦手なのだ。エンジニアとして反省すべきところだ。

 

自分の思う大きな意味の設計

広義の設計は、それビジネス的に勝てるのか?ということ。せっかく作ってもビジネスで勝てなきゃ会社でやっている以上意味がない。政治的理由で作るナンセンスなソフトウェアなんてたくさんある。他部署の謎のしきたりが原因で意味不明な連携システムが必要になったりする。

 

会社でやるならチームになる。チームにはたくさんの人がいて、ソフトウェアよりずっと複雑で、人情味あふれすぎている。役員説得用のために明日までにデモが必要?今障害対応中ですが?え?それ、スコープになかったんじゃ?情報共有してない?ん?他部署が泣きついてきてテーブル構成変えるって?なんで相談せず?本当にやるって言った?どこで?ん?時間がなかった…??そっか…しょうがないね…。

 

業界の格言?では「出来上がるシステムは組織構造を反映したものになる」と言われる。連携がうまく行ってない部署同士で作られたシステムは当然駄目なものになる。失敗を隠す文化のチームなら、潜在バグを隠したり、仕様がダメダメでも無理やり直せずに間違ったまま進んだりする。

この間面白かった発表では富士通の歪さがURLに現れてると話題になった。

 本当なら recruiting.fujitsu.com でいいはずなのに fujitsu.recruiting.jp.fujitsu.com というcomとjp、fujitsu二回と見た瞬間にヤバい、フィッシングレベルなURLになっているという異様さである。これは採用部門と本社Web部門が連携とれてない例だろうと指摘されている。

 

チーム、部門、会社(役員とかビジネスサイド)全体の認識合わせ、腹の中なにか隠してないか、意図を全部すり合わせて、全員で合意納得させて、情報共有を過不足なくし、懸念点を全部出せるように(隠させない、随時報告OKな心理的安全性確保&レポートラインや共有場所用意&明文化)などなど…。そういうのも含めて設計だと思っている。

 

で、やっていくとこんなに完璧なことは100%ないし、達成できない。だけど、理想とのズレをきちんと説明できるように。本当はこうあるべきだったが、どこからの歪みだったのか。政治的な理由なら次回の取引材料にとか。チームとして失敗したなら反省して共有して、次に活かせるように…。なんとなくを避ける…。

 

これらはもちろん理想論だ。自分の権限があったりなかったり、そもそも自分だけでやるには大変すぎることだったりする。口を動かすよりまず実行…でも一人の情熱で続けるのは難しい。

冷や水あびせる係化

とかとか…やっていると嫌になってきてしまった。冷めてきてしまった。だいたいは誰かの思いつきとか根拠不足で、問い詰めると本音で「だってやりたいから」「なんとなく便利そう」。

いや…エンジニアとしてはわかるよ。うまく行ったソフトも世の中にはある。OSSの話とかも美談というか…いいよね。闇雲に否定したいわけじゃない。

正直に話して、ついてきてくれる人でやってほしい。正直に言うと人が来ないのではと不安だから飾る。それが隠しているようにしか見えなくて、その体質が全体を歪ませると心配しているんですよ…。

 

既存の2つの有名ソフトが使い勝手悪く手間だから内製開発しちゃおう。いや、二個そのまま使えばいいんじゃないですか…。クラウドで運用やってくれて、アップデートもしてくれて…内製で運用回してアップデート、脆弱性対応とか工数ちゃんと見積もって、縮退はプライド的にいやでしょう?だったら今のうちにやめとけば…

 

いっぱい否定するようになってしまった。運用に苦労する人を見て、サポートに苦労する人を見て…。

でも、人をたくさん増やしてお金稼げてうまくいってるなら、ビジネス的に成功で正義だ。エンジニアがどうこういう領域ではないのだ。皮肉じゃない。エンジニアは…会社のシステムの一部だ。ビジネスとしてやっていることだ。ちゃんとわかってないといけない。

 

全部やらなくていいや

いつしか自分がやりたいと思うこともだんだんなくなってきた。だいたい世の中の誰かが作ってくれて、それを買ってうまく使えばいい…。価格が正当に感じられるなら、それがいい。高いから内製すると失敗するのはよくある話だ。見えないコストに目を向けないで安くなったと勘違いする。

 

じゃあ自分はいったい何がやりたかったんだろう?コードは…好きかもしれないけど、コードにはあまり価値がないことを知っている。よっぽどの手練じゃない限り。ガリガリチューニングだったり、あまりに未知すぎるトラブルシューティングだったり、OSSコミッターだったり。

どうしようもなく書かなきゃいけなくなった段階で、最低限書くのがいいエンジニアなのでは…でも、自分がたいしたレベルじゃない。

 

どこにいくんだろう

いつからか自分はコードをあんまり書かずに検証だとか方針とかゴールとか…そういうふわっと抽象的な方に向かっている。このスキルで生き残れる自信はあまりない。たまたまそういう人がいないだけ。ちゃんとしたPMやマーケティングだとかビジネスサイドもわかっている人がいれば蹴散らされる。

 

役職もないし、職業的にも名前もない。転職にも役に立たないふわっとスキルそのものな気がする。大学生のよくいうサークルでうまいこと調整やってました的な。エンジニアっぽいスキルが中途半端以下で、ビジネスっぽいこともかじってるだけで生きている半端者である。こういうのは空気でしかないから、評価もされない。しようがない。

 

大した労力もかけてないし、エンジニアとしてサボっているような気持ちがある。コードを書けない、設計をうまくやれないの逃げ道な感じだ。

コードを書かなくていいというのは楽だ。アラートもならない。運用もない。仕様変更は新しい仕事として分けて要求しやすい。偽コンサルみたいなものだ。システム設計が下手な人間が越権行為をしているように感じてしまう。

 

自分はどういう人間になりたいのか、まだ全然わかっていない。この先どうなるのか、ちゃんと考えないといけない。エンジニア、自分に向いてるんだろうか。職としてやっていけるのだろうか…。

アニメ版ソードアート・オンラインを一気に見た感想

 

VRゲームの話題ではソードアート・オンラインGoogleの日本語入力の候補だと真ん中に点が入って面白い)がよく例にあげられる。有名で魅力的な作品なんだろう。でも自分はなんとなーく見てなかった。流行り物はあまり好きじゃないからだ。でも作業がてらNetflixで流して見ていたらハマってしまった。

 

ソードアート・オンライン、略してSAOとするけれど、なぜそこまで人気なのか、魅力的なのか、必ずといっていいほどVRゲームの話題に出てくるのか。その気持ちがなんとなーくわかったので見終わって間もない今、書いておこうと思う。

 

キャラデザがやっぱりかわいい

身も蓋もない言い方をすると…やっぱりキャラがかわいいですね。衣装もかわいい。作画も抜群にいい。二期?のガンゲイル・オンライン編のシノンさんがめっちゃよかったです。銃がゴツくてクールでかわいいと言うのは…やはりオタク属性をくすぐられます。

 

設定アシスト感

ソードアートオンラインVRフルダイブゲームとして描かれているけれど、実際はMMORPGあるあるネタが多いと思う。そこに共感できる人はそこそこいて、プラスでデスゲーム、サバイバル要素がある。

当初のネットのネタとかでは主人公のキリトくんが無双する物語っぽい?と思っていたけれど、劇中の描写を見てみると実はそこまで超人ではないように思った。たしかに雑魚キャラに対する圧倒的な力は見せつける場面はある。でもその後で罠やらピンチやらにめっちゃひっかかる。

 

本編中に巻き込まれキャラと言われているけれど、たしかにそんな感じ。たぶんライトノベルに非常に設定を凝縮したのか、ぶっちゃけ設定ブーストがかなりあるかな?と思う。

キリトくん本人の強さというよりは、”たまたま”運がよかった、設定的に必然として良い出会いがあった、とか。キーアイテムをなんとか手に入れられたなどのポイントがわりと頻繁に入っていたイメージ。まあそうじゃないと超難易度のデスゲームをどうにもできないわけだが。

 

逆に言えばそれがテンポの良さ、キリトくんの見せ場としてがっつり貢献できている。超強力なボスが出てみんななすすべもなく…!というときに奇跡が起きて、その代償がすごく大きくて悲しみ…からの奮起orもう一度奇跡などなど。

ドラマティック仕立てという感じ。本人の能力の強化というよりもストーリー的にドラマティックといえばいいのか、なんというか。シャーロック・ホームズが必ず謎を解決できるような、ストーリー的にアシストされている感がある。

 

キリトくんの能力強化を楽しむ、成長を楽しむというよりはその場、その場のドラマを堪能する仕立て方になっている気がする。ガンゲイル・オンライン編では世界まるごとシノンとキリトのためにあったような感じがした。

キリトにはSAO時代の苦しみや因縁、PKに対する考え。シノンにはトラウマ、リアルとバーチャルの線引、ゲームとリアルの”強さ”とはなにか。そういうキャラクターの設定上ガンゲイル・オンラインに来るだけの理由はある。でもなあ、メタ的に見ると設定のドラマティックさが際立ってガンゲイル・オンラインがドラマのためにある感が強く感じられた。

 

賛否両論とは思うけれど、ライトノベル以外にもわりと漫画などは巻数を重ねるごとにヒロインが増える。そのたびドラマが生まれ、舞台がうまれ…。必然的にハーレム主人公が生まれる構図になりがちだ。作家側も苦しいんだろうな…。

世界まるごと変えてもらうとすごい新鮮になるし、VRMMOであるから主人公の容姿すら変更可能。これはすごいいいアイディアだなあと思った。でも…いくらなんでも問題発生しすぎだし、キリトさん働き過ぎである。休んでくれ、平和に過ごしてくれとめっちゃ思ってしまった。

 

ソードアートオンラインの風景、MMORPGのよさ

本編のキリトさん(キリトと呼び捨てにできなくなってしまった)の活躍とストーリについては語ったので、ここからはVRゲームとして引き合いにだされるのはなぜだろう?ということを書く。

 

結論から言うと…ソードアートオンラインのアニメは演出がきれいで、わくわくしてきちゃうほど楽しそうだから、なんていう小学生並みの感想である。だって人間はファンタジーでスキルを自分の手で出して敵を倒すなんて絶対好きだし、銃弾を一刀両断したいのである。

映像の演出がいやーずるい。名場面がいくつもある。キリトさんの超反射神経によるスローモーション剣戟&連続コンボとか熱い。かっこいい。火花散って、キィンってかっこよく音がなってすごい。そりゃあわくわくしちゃうわけだ。

おまけにキリトさん視点もたまに映るのだが、湾曲してて、周辺視野がぼやける。これもまた視聴者にリアル感を感じさせてくれる。HPゲージとかもある程度リアルなのにお約束がある。ゲームシステム的なお遊び感と、リアルの体を動かしてる感。融合してれば楽しいに決まっている。

映像の演出が大変見事で、ストーリーも見せ場をばんばん作っている。そして、感動的な場面、キャラクターとの掛け合いなんかもある。実際のVRMMOにそこまで期待してほしくないほどに、魅力的に描かれている。すごい。

情報疲れ

 

直近で仕事上のミスを連発してしまい、気分が落ち込んでいた。今週は全然仕事に身が入らなかった。昨今のウイルス対策について政府の発表が矢継ぎ早に出て、会社側も若干パニックになっている。そこらで月曜からどうする、みたいな雑談が交わされていた。

 

ミスして落ち込むなんて、まだまだだな…と思ってたけど、もしかしたら違うかもと気づいた。たぶんウイルス関連のあれやこれやのニュースとか不安がる声、社内の不満などを短時間で大量に取り込みすぎて、自分でも不安になって非常に精神的に疲れてしまったのだ。

 

不安というのはコントロールできない。人間は純度100%の理性の動物ではないからだ。おまけに、ひっきりなしに情報が入ってきて対応しなきゃならないとなると、感情の対処はかなり難しい。気づくのはいつだって体調とか仕事の結果とかに現れてからだ。

 

震災のときもそうだったけれど、悲惨なニュースや言説をネットでも対人でも毎日聞いていると無意識のうちに精神が参ってきてしまう。気づかない。悲惨なことについて考える時間が増えるほど、精神的に疲れていく。

 

自分は心が強くはない、弱いのだと思ったほうがよさそうだ。疲れるのも、集中できないのも仕方ない。状況が状況なのだ。なかには元気いっぱいだったり、怒りを振りまいている余裕がある人もいる。一方で、無意識に疲れたりパフォーマンスが落ち込んでしまう人も出るのは当たり前だ。

 

幸い、これから土日とお休みである。外に出ないのなら、ニュースを見ずにのんびり過ごそうと思う。おまけに、Twitterのミュートワードにコロナと入れて遮断しようと思う。大事な情報なのかもしれないけれど、気が滅入ってしまう。心が強くないので、休ませてあげたい。