割と残念な人が行く

人生もはやどうしようもなし、というほどダメではないが、間違いなく駄目である。

文化遺産に興味が持てない

 お寺とか、庭園とか、何かの歴史的建造物とか・・・そういう類のものに全然興味が持てない。自然遺産、というか自然の風景は好きなんだけど、大仏さんの無表情見ても何も感じない。ああ、でっけえなー・・・って程度。そんな方はいるだろうか。僕はまさにそうである。

世間的には文化遺産と自然遺産のどっちが人気か

とりあえずググってみた。OKWaveでは自然3文化2

okwave.jp

楽天的には日本のトップ3が文化遺産

travel.rakuten.co.jp

世界遺産の数でいうと自然1文化4らしい

detail.chiebukuro.yahoo.co.jp

うーん。あまり気にする人もいないのか(気にする必要がないと思うけど)、あまりアンケートの類も見つからなかった。

日本の世界的な評価でいえば文化遺産だろう

 日本といえば、やはり京都や奈良に代表されるような、日本固有の「文化」的な側面が注目・評価されている気がする。 当たり前のことだ。あんなのっぺりとした顔の巨像(大仏)や、外観全てが金箔に覆われた一戸建て(金閣)なんて日本以外ではそう見られないだろう。

実際、今まで日本各地へ旅行に行った感じでは、外国人が多いのは文化寄りな観光地である。もちろんその多くには、文化というだけでなく、四季との共存みたいな美的感覚も多分に含まれているだろうし、完全に自然遺産と分離できるかというとそうでもない。例えば庭園なんかはその最たる例である。

さて、少しズレてしまうけれど、オタク文化も日本の特徴的な「文化」である。海外からの人からすれと、日本という小さな島国で生まれる、独特な文化に興味を惹かれるのかもしれない。

それに、これは憶測だけれど、ヨーロッパやアメリカに住んでいるのであれば、雄大な自然風景は地続きで見に行くことができてしまう。そう考えると、日本での「自然を見る」ことは優先順位としてはあまり高くなさそうだ。羨ましい限りである。僕も一度はカナダの原生林やスイスの雄大な山並を拝みたい・・・。

何故あまり興味を感じないのか

 たぶん、なんとなくチグハグ感があるからだと思う。真っ黒なコンクリートの上に沢山車が走っていて、その両脇に雑居ビルが立ち並んでおり、そこからそれほど離れていない場所にズドーンとでっかい寺やら大仏やらが居座っている。それが奇妙でならないし、何か引っかかるものを感じる。

例えば僕は白川郷の風景は割と好きだけれど、どこか懐かしさを感じさせる合掌造りの家屋が、渋谷の雑居ビルの間にチョコンと居座っていたら、それは確実に違和感を感じるだろう。しかし白川郷には、周りに山があったり、田んぼがあったりする、それがうまい具合に緩衝材となっていて、違和感を覚えずらい。もっとも、白川郷は観光地感が強すぎて少しイライラするんだけど・・・。

 そう考えると、自身のイメージから大きくズレたものがあまり受け入れられないだけかもしれない。大きな寺や神社の周りは鬱蒼とした森であってほしい。そういう意味では、田舎に行ったときなど、雑木林の中に隠れるように構えられている、小さな祠のようなものは好きである。逆に、京都や奈良で文化的な場所に訪れた時、周りにちょこちょこと見え隠れする貸しビルのような薄汚い建物がとにかく邪魔に感じてしまう。ゴミにしか見えない。散らかった部屋を見る感覚に近い。

もはやかなり内容がズレてしまうのだが、完璧主義というか、潔癖症というか、そういうレベルのことが原因な気がしてきた。皆さんはいかがだろうか。

頑張って記事書くのに疲れたから、どうでもいい記事を書いてみる

どうもブログにシンドさを感じる。というか、とにかくメンドクサい。どうしてブログを書き始めたのかよく覚えていないけど、まともなもの、読まれるものを書こうと思えば思うほどメンドクサくさくなる。

これは仕事や他の趣味なんかでも同じ気がする。何か興味深い仕事を貰ったり、面白いモノを思いついたりした時に、最初は面白いのだけど、かっちりしたものを作ろうとか、バグを完璧に無くそうとか、、、そんなことを考え始めると、途端にダルくなる。

頑張るとか、気合いを入れるとかっていうのは、どうも無駄にエネルギーを消耗する。最近何となく思うのだけれど、喜んでる時も、イラついてる時も、憂鬱な時も、大きな感情が動いているのは全く同じで、どれも同じくらいエネルギーを消費しているんじゃないだろうか。

うつ病の人は、見かけ上では暗くて静かでエネルギーの活性度が低いように見えるが、恐らく憂鬱という感情レベルはものすごく高くて、常に大量のエネルギーを消費している状況にあるのだろう。そうして大量に消費しているエネルギーに対して、回復が間に合わないから、布団から起き上がれなくなってしまうわけだ。

それと同じで、っしゃ勉強頑張るぞーとか、仕事頑張るぞーとか、すげえモンつくったるぞーとか、、、そういう風に感情を大きく動かせば動かすほどエネルギーの枯渇が早くなる、すなわち三日坊主的な状況に陥りやすいわけだ。周りを見回すと、本当にタフでパフォーマンスの安定しているやつほど、恐ろしく淡々と物事を処理しているように思う。

ちなみに今僕は布団の上にダラーっと寝転がりながら、なにも考えずにスマホでぽちぽちと記事を書き込んでいる。明かりは白熱灯の間接照明、これを書き終えたらさっさと寝るつもりだ。何も考えていないのも、布団の上でダラダラ作業しているのも、とにかく頑張らずにブログを書くためだ。

最近は仕事でうるさいお客さんによく当たり、不具合も全く出せない、納期も厳しい、、、当たり前のことなのだけれど、そういうカッチリしたことが、僕は本来苦手であり、とにかく面倒に感じて仕方がない。せめてブログはエネルギーを使わずにさらっと書けるようにしたいと思う。

最終的にその感覚で、仕事であったり、自分で作っているWEBの開発を進めていきたい…おっと、またやる気を出してしまいそうになっている。

 

冬の北海道はマジでおすすめ

 僕には一つ、ごくシンプルな目標がある。それは好きな場所に住むということ。大学で農学部を出たというだけあって、自然というものがとにかく好きだ。学問とか研究とか、あるいは芸術とか、そんな対象ではなく、単純に好きなのである。長く連なる山並、何処までも広がる草原、深く鬱蒼とした原生林・・・そういったものに触れたり、眺めたりするのがとにかく落ち着く。だからいつかは、自然が目の前に広がるような場所に、まったりと暮らしたいと思っている。たぶん、小学生くらいのころからずっと同じことを考えていた。そしてその候補地の一つが北海道である。

北海道といえば自然×雪

f:id:tadanoteihen:20171115234925j:plain  冬の北海道の最大の特徴は雪原だ。上の写真は、僕が大学生の頃に北海道へ一人で旅行した時のものだ。この下手糞な写真を見ても、何も感じないかもしれないが、実際のものを見ると、スケールの大きさに驚くだろう。こういった風景は本州やそれより南の地域ではあまり見られない。しかし多くの原野が残っている北海道では、こういった景色はごく普通に見られるものである。

f:id:tadanoteihen:20171116000047j:plain この写真は道路脇の原生林に、ほんの少し入った場所で撮った写真である。だいたい札幌から30分くらいの場所だったと思う。北海道では、こんな風に原生林を流れる奇麗な小川も、都市部からほんの少し離れた場所で見ることができる。例えば東京や大阪から30分の場所で見られる小川をいくつか思い浮かべてもらいたい。おそらくそれは護岸に固められた用水路かドブ川に違いない。

f:id:tadanoteihen:20171116000536j:plain 冬の北海道は車か列車での旅行になるだろう。この写真のように、雪をかぶった列車もけっこう風情がある。北海道で冬の列車に乗って旅をしてみるのも面白い。特に根室本線をおすすめしたい。この路線は原野を突っ切るように走る。冬の原野はまさに一面銀世界で、その上を古いディーゼル列車が轟音を立てながら駆け抜ける様は圧巻である。

夏の北海道もおすすめ

 f:id:tadanoteihen:20171116001612j:plain  これは宗谷丘陵で撮った写真だろう。夏の北海道はとにかく気持ちのいい草原が広がっている。大学4年の時、テント暮らしをしながら北海道をバイクで1周したのだが、それはそれは気持ちが良かった。いつかまた、転職などのタイミングで夏の北海道をバイクで走り回りたいと思っている。

f:id:tadanoteihen:20171116002037j:plain もちろん。平地ではなくも山道も魅力的だ。これは北海道で一番有名な、三国峠という峠道で撮った写真だ。おすすめはバイクだが、車で行くのも楽しいと思う。

好きなところに住むために

 いかがだろうか。きっと貴方も北海道に行きたくなってきたはずだ。今回は旅行寄りのお話だったが、住む場所というのは大切だと思う。毎朝満員電車の中でおしくらまんじゅうをするような生活を続けたいと思うだろうか。僕はやはり、身近に森や山や川のある生活がしたいと思う。その方が単純に楽しいし、落ち着くし、豊かだと思うから。

実は、好きなところに住むというのが、僕がITの仕事に就いた当初の目的だった。実力が付けば、リモートワークなどを現実的なものにできそうな仕事だと思ったからだ。今はITそのものに対する興味が出てきているし、やっぱり都会にいないと得られない情報も多いと分かったから、しばらくは住む場所を選べないかもしれないけれど、最終的に自分の好きなところに住みたいと思っている。

仕事を頑張ること、お金持ちになろうと頑張ること。それらは確かに大切なことではあるけれど、たまには夢のある暮らしを想像してみるのもいいことかもしれない。

ITエンジニア志望なら最初はインフラ系がおすすめ

 ITエンジニアと言っても、色々な立ち位置がある。システムエンジニアプログラマー、ネットワークエンジニア、サーバーエンジニア、DBエンジニア・・・。僕は個人的には、ネットワーク・サーバーエンジニア、次点でDBエンジニアをおすすめしたい。いわゆるインフラ系といわれる分野である。かくいう僕はシステムエンジニアプログラマ寄り、いわゆるアプリ系のエンジニアである。

アプリ系は競争が激しい

 アプリ界隈というのは非常に競争が激しい。参入障壁があまりにも低いからである。PCさえあれば、低スペックでも便利なエディタをインストールして、すぐにプログラミングを始めることができる。最近では、家事の片手間にスマホアプリ開発をする主婦までいるそうだ。競争が激しい=扱っている人が大勢である故に、技術の進歩・・・というか流行り廃りが激しい

javascriptであれば、やれAngularだ、Reactだ、jqueryはダサいだ、CoffeeScriptがなんだ、TypeScriptがなんだ。PHPであれば、fuelがなんだ、CakePHPがなんだ、最近はLaravelとSymfonyの2強だなんだかんだかんだあんだああああああ!!??読み易くて動けば何でもいいじゃねえか!!一々新しいもん作ってんじゃねええええ!・・・とか思ってしまう、僕のようなダメエンジニアが生まれるのも納得なミーハー具合である。

そして、そういうスピード感に何のストレスもなく付いて行き、尚且つコンピューターそのものに対する理解もずば抜けているような、基地外という他ないエンジニアも、この界隈には多いのである。知能・好奇心・ITに対する興味などを含め、初期スペックが我々と全く違うと言ってよい。それがアプリ系エンジニアの難しさである。

もっとも、数学や統計学が得意でデータサイエンス的な分野を扱えるとか、特に難しいアルゴリズムを実装できるとか・・・僕には想像もつかない分野であるが、そういった別の専門性を有しているのであれば、また別の話かもしれない。

インフラ系は参入障壁が高い

 今はレンタルサーバーもあるし、クラウドもある。インフラ系だって誰でも弄れる時代だ。なんて思うかもしれないが、レンタルサーバーなどの環境を借りるのには、やはりお金がかかる。大抵は月額費用であり、一般人からすると大きな障害になる。無料のレンタルサーバーも存在するし、個人で扱う分には概ね事足るが、そこで出来ることなどエンジニアというレベルではたかが知れている。

僕も個人でLinuxベースのサーバーを借りてWebを公開、なんてことをやっているが、特に難しいことは何もない。単にWebサーバーを立てて、そこにCGIを置き、DBを立て、SSHを有効にし、SSLの設定をして、セキュリティ周りを一通り確認して、公開するだけ。特に知識も必要ない。事実、僕は誰にも教わっていない。Google先生と少しばかりの書籍から習得できる。個人でやるのはそのレベルである。

サーバーの冗長化、ネットワークの構築、DBのチューニング等々のお話は、よほどデカいサービスにでも育たたなければ考える必要もない。しかし職業エンジニアとなった時点で、そういう考え方は必須になる。つまり非エンジニアとエンジニアで明確な差ができる部分なのである。

インフラから入った方が効率が良い

 スマホ界隈については知らないが、業務システム開発にせよ、Webサービス開発にせよ、アプリ開発をしていれば、HTTPを含めたTCP/IPやデータベースといったインフラ、ミドルウェア寄りの要素を確実に扱うことになるだろう。こういった時、より低レイヤ―のことを先に理解しておいた方が、往々にしてアプリなどの高レイヤー技術は理解しやすいものである。

 僕が会社に入って一番最初に携わったのは、Oracleというデータベースと頻繁に通信するアプリケーションの開発であったが、tnsnames.oraの中身が何を意味するのかしっくりこなかった(tnsnames.oraとは、ざっくり言うとPCからoracleサーバーへ接続するための、接続情報が記されたファイルである。)。それも結構長い間である。ググれば出てくるし、言葉はわかるのだが、しっくりこない。理由は単純で、TCP/IPに対する理解が無いからであった。TCP/IPという決まりの中で、データーがどういう風に流れるのか、イメージができなかったのである。

あまりに分からないので、マスタリングTCP/IPという、ネットワーク初学者のバイブル的な本を読んだり、データべースに関してまとめられた専門的なサイトを梯子したりして、インプットに努めた時期もあった。そうしてようやく、プログラミングの中でやっている外部的なデータの流れがイメージできるようになったのである(あくまでも最低限の知識ではあるが)。

逆に言うと、低レイヤの知識を先に突っ込んでしまえば、プログラミングなどをする上での障害が取り除かれやすくなり、効率的に学ぶことができる。なお、ここでインフラと呼んでいる分野も、データ処理の話であるため、結局はアプリケーション(C言語などによって実装される)の話になってくるのであるが、それはより専門的な方々に任せておけばよいと思う。

最終的に広い知識が必要

 インフラとアプリを区別してきたが、近年はインフラとアプリの距離がグッと近づいてきている。仮想化技術、クラウドの発達によって、難解な設定をせずとも、GUIでポチポチやればサーバーやネットワークを立てられる時代になってきた。アプリケーションも同様に、開発効率の上がる仕組みがどんどん出来上がってきている。

こういった状況を突き詰めると、一人当たりの生産力が非常に高くなる。一人でインフラの構築からアプリの開発・連携まで出来るようになるということである。それは専門性が浅くなるというわけではない。より優れた開発・運用にあたって、アプリ・インフラ双方の知識が深く必要になるということだと考えている。具体的に言えば、整頓された保守性の高いコードを高速に書く力と、インフラ技術に対する(構築技術ではなく)体系的な知識・経験であると思っている。

長くなってしまったが、ITエンジニアを志望しており、貴方が特段別の専門性(特に理系的な)を有しておらず、アプリ系(プログラミング)かインフラ系か迷っているorどちらでもいいと思っているのであれば、インフラ系から入ることをお勧めしておこうと思う。

残念な学生生活を送る男子諸君へ

 世の中には、何でこんな残念な人生を送っているんだろうというような、惨めな男子学生が潜んでいるものです。心の通った友達も彼女もなく、家族との折り合いも悪い。学業でも部活でも挫折し、常に悶々とした日々を送る。かくいう僕も間違いなくそういう一人でした。ただし、今の僕は当時では考えられないほど「まとも」寄りの大人をやっていると思います。

今日は僕自身が憂鬱な気分に陥っていたこともあって、ぽけーっと昔のことを思い出していました。25年生きて思うのは、意外と何とかなるということです。惨めな学生時代を送ると、何に対しても自信を失ってしまい、人生にっちもさっちもいかない気がしてくると思いますが、挽回は可能なんですよ。ほんの少しでも、悲惨な男子学生諸君へエールを送るべく、非常に残念な香りのする記事をエントリーしようと思います。

ぼっちで偏差値30台だった高校時代

 高校時代、僕は精神的ぼっちでした。1年目は運動部に所属していましたが、まるで面白さがわからずに辞めた頃から、それまでの友人から少しハブられるようにもなり、どんどんぼっち化していきました。クラスに話す奴や昼休みに遊ぶ奴はいたけど、特に仲が良いわけでもなく、毎日学校が終わったら一人で速攻帰宅する日々が続きました。

単純に1人でいるのって気にならないんですけど、周りが楽しそうにしてる中で1人だけポツンとしてたり、内心全然楽しんでなかったりするのって、ほんと孤独ですよね。辛かったな。高校生までって学校が全てだから、外の世界がわからないじゃないですか。何で生きてるのかホント意味不明で、マジ死にたかったです。房総半島の崖から海へ飛び込んだ方が楽かなあとか思ってましたね。

そんなわけで全く面白さのない高校時代を過ごしていく中で、一つだけ素晴らしい出来事が待ち受けていました。そう、学祭で偶然仲良くなった子と付き合うことになったんです。ええ、嘘です。素晴らしい出来事とは、外ならぬ卒業ですね。この糞みたいにつまらない学生生活がようやく終わる。心の中でガッツポーズしてました。

しかしここで大きな問題にぶち当たりました。偏差値が30台(学年250人中243位台でした)だったということです。ちなみに志望は某国立大。進路指導の先生は何も言いませんでしたね。親もあきれてましたが、なんとか1年拓郎になる許しを得ました。実は僕の高校は某有名私大の付属校で、エスカレーターも選択できたんですね。でも高校時代の影響を引きずるのも嫌でしたし、早く1人暮らしをしたかったのです。

大学での挫折

 結果から言うと、僕は某国立大学に合格しました。センター試験の点数は350点、偏差値も20くらい上がったはずです。努力もしましたが、運が大きかったかもしれません。これで軌道修正を図れるはずだと、思ったんですけどね。

大学に入って、再び運動部に入りました。単純に高校時代の借りを返したかったからです。しかしこれが挫折ポイントでしたね。団体スポーツをやっていたのですが、頑張っても上手くならなかったんです。というか、周りの経験者が上手くて追いつけなかった。元々身体能力が高くなかったし、無理をしたこともあって怪我がちでした。割と強豪校でしたので、大会成績としては結果を残せましたが、僕にできたのは途中出場のひたすら汗かき役。3年生の大会で引退するまで続けましたが、精神的負担が非常に大きかった。試合にも出れたし、自分を褒めたいところですが、やはり性格的に無理。むしろ物凄く自信を喪失しましたね。今思うのは、もっと工夫できたということです。戦術理解度を高めて、身体能力以外で勝負するポイントを増やすべきでした。

また肝心の学業。僕は理系の学科に所属していたのですが、対象の分野自体は好きだけど学問・研究の対象としては全く興味がなかった。実習はすごく楽しかったですけど。しかし部活での精神的苦痛が尾を引いて、ものすごく暗かった。学科の人ともあまり馴染めませんでした。とにかく自信を失っていましたね。高校時代の影響もあって人間関係には積極的になれず、告白した女の子にも振られ・・・そんな感じで中途半端な大学時代を過ごしました。

なんていうか、もっと単純に楽しめよ!って今なら思うんですが、当時はそう思えませんでしたね。

社会人生活で少し持ち直す

 これ読んでる方が大学生だとすると、一番挽回しやすいのはここですね。社会人デビューってやつです。何とか大手企業に潜り込みましたが、僕は大学時代までで完全に自信を喪失していましたから、これまた上手くいかない。研修中のことですが、議論もプレゼンもコミュ力も勝てる気がしない。周りとの初期スペック差に愕然としたわけです。それでもね、業務に関してはみんなスタート地点同じじゃないですか。何とか這い上がりたくて。

エンジニアとして研修を受けるようになってから、ホント努力しました。講師の言葉は一言漏らさず聞き、分らないことはすべて質問し、苦手な人には逐一教え、家に帰ったら復讐・分らないことはひたすら調べる。時には自分で何かを作ってみたり。僕は未経験から入ったわけですが、研修期間中、気が付いたら何十人かいる同期の中で知識・技術力だけはトップの一人になってましたね。

きっかけなんて些細なことです。そのあと配属されてからも、技術力はもちろん、対人能力も高められるように、営業やPJ管理も可能な限りお手伝いするようにし、今に至ります。少しは一般的なビジネススキルが磨かれたと思います。この間プレゼンで惨敗しましたけどね。

ビジネススキルとか、そういう苦手な所に注力しているのは理由があって、実は今の環境で一般的なサラリーマンとしての一通りの仕事を覚えたら、もう1年後には別のやりたい分野の会社へ転職しようと思っているからです。それまでに、次の会社で身に付きにくいスキルはすべて吸収してしまおうという寸法ですね。

こういう風にガツガツするようになったのも、会社に入ってからです。働き出せば、その後どうなるかは全て自身に委ねられます。学生が終わることでそれまでのしがらみをリセットできますし、親の手からも完全に逃れられます。間違いなく身軽になるし、挑戦に対する心理的障壁は低くなるので、僕のように行動が豹変する可能性もあります。

結局何が言いたいのかわからないけど

 高校~大学の7年間はずっと悶々とした、暗い気分で過ごしていましたが、思い返してみると行動自体は結構ポジティブだったなと思います。ほとんどの行動は失敗というか、自信喪失につながってたように思いますが。ただそのうちの一つが少しだけ上手くいって、今に至るんだと思います。どこかにチャンスがあると思って下さい。

苦しい時間というのは、幾らか上手く行きだした頃に思い返すと、いい思い出になります。あれほど苦しんだのだから、それ以上はないという。僕は未だに暗中模索している最中ではありますが、昔のことを思い出せば大抵の鬱屈感からは立ち直れます。

また、多くの残念な人間に共通するように、僕はコミュ障でもありました。これは多くの残念男子学生にとって根が深い問題かなと思います。家族との関係、学生時代の友人関係、容姿、運動能力・・・。大体はコンプレックスやトラウマによるものでしょう。今でこそ周りからは口が上手いなんて評価されてますが、大学時代は本当に無口で、人と会うことを拒んでいました。今でも人付き合いは好きじゃありませんけどね。

最後になりますが、学生時代をこんな寂しいというか、惨めに過ごした人間でも、そこそこ盛り返しているこということが言いたかった。一般的にその人の大局が固まってくるのは30歳くらいだと思います。それまでに挽回できればいいんです。僕はあと5年ですね。みなさんであればプラスあともう何年か。それまでにどうあがけるかだと思います。

Windowsで既存EXCEL資源を操作するならVBAが安牌

 この間、既存のExcel資源を操作するツールを作ってほしいと急遽頼まれた。自社内ではなく、お客さんが使用するもので、注文書まで貰っているとのこと・・・。納期まで営業日は数日。正直、うっ・・・と思ったのは言うまでもない。経験のある人はご理解いただけるかもしれないが、作成済みのExcelを操作するのは非常に骨が折れるのである。色々調査・試行した結果。結局は古き良きVBAが最適であると判断した。今回はそこに至った知見を簡単にまとめておきたいと思う。

OSSによる作成済Excel操作はやめておけ

 Excelを新規で作成して書き込むのはあまり難しくないオープンソースを用いれば、世の中に出回る様々な言語で簡単に実装できてしまう。しかし、面倒なのは既存Excel資源に対しての操作である。単に書類のフォーマットに利用しているとか、簡単な計算式が入っているとかであれば、そんなに問題はない。しかし複雑なグラフを描いていたり、各種Excelの機能をふんだんに駆使していたりすると、途端に問題が発生する。

そもそもExcelが開けないとか、プログラムで弄ったExcelが壊れたりだとか・・・さらにはファイルの種類(xls, xlsx, xlsm)によって出来たり出来なかったり・・・あらゆる問題のオンパレードである。しかも大抵は原因が突き止められない。そういう問題が起きるものだから、仮にテストで上手く動いたとしても、お客さんに納品できる勇気はない。作成済みExcel操作は精神的にもリソースを食うのである。

VBAは書きたくない

 それなら仕方がない。MS標準でモジュールの出回っているものを使って作成しよう、と考えが改まるわけである。真っ先に思いつくのはVBAだろう。なんせExcelに付随している開発環境であり、最も安心感がある。しかし、あなたが腐っても(おっと失礼)ITエンジニアであるならば、おそらくVBAなんて死んでも書きたくないと思うに違いない。古臭い文法に固定された開発環境、そもそもVB系なんて触りたくもない等々、あらゆる罵詈雑言を発したくなる気持ちは分かる。

無論、僕だってそうである。じゃあ他の方法でやろう。そうだ、せめて.NETで!そう思って着手し始めるわけであるが・・・。

.NETでのExcel操作はNPOIが最適らしい

 .NETで書こうと決意して色々調べてみると、Excelを弄る方法としては大きく分けて2つの方法があることが分かった。1つはMicrosoft.Office.Interop.Excelという公式COMを利用するという手、もう1つはNPOIというオープンソースを用いるという手だ。今回はまずは後者を使う方法を考えた。

え?オープンソース使わないんじゃなかったの?と言われそうであるが、NPOIはJavaExcel操作をするためのPOIというライブラリを.NET用に移植したものであり、このPOIはJavaの世界で15年の実績があるシロモノだということで、「イケるっしょ!!!!」と思ったわけだ。

しかし案の定その道は一瞬で閉ざされることになる。お客さんから事前に貰っておいたテスト用ファイルで試してみると・・・あれ?開けない。どうやら貰った3種類のファイルの内、1枚だけが開けない。無論、この3種類以外のファイルもあるわけで・・・。もしかすると抜け道があるのかもしれないが、急遽頼まれて納期が数日後に迫った案件であったため、試行錯誤している時間は無く、敢え無く断念

残るはMicrosoft.Office.Interop.Excelを使うという道のみ。何故コイツを最初に使わなかったかというと、「悪名高かった」からだ。詳しくは以下の記事を参考にしていただきたい。 qiita.com

記事で語られているように、Comオブジェクトの解放漏れが起こる可能性、一々裏でExcel.exeを起動する必要がある故に動作が遅い・・・等々、出来れば使いたくなかったわけである。しかし背に腹は代えられぬ。これで行こうと思ったわけであるが・・・。

Excelバージョン毎にCOMのバージョンが異なる罠

 Microsoft.Office.Interop.Excelは、なんとExcelのバージョン毎にCOMのバージョンが異なるのである。詳しくは、公式の情報(リンク)を参考にしてほしい。ひとまずお客さんの環境について確認してみると、どうやらExcel2010. 2013, 2016が混在している環境とのこと。途端に雲行きが怪しくなってきた。

じゃあ互換性はどうなんだろうと調べてみると、公式の情報(リンク)が出てきた。これによると、概ね上位互換性があるということ。だがしかし、僕のPCのExcelバージョンは2013である。COMは基本的に開発環境に入っているExcelのバージョンに対応したものしか利用できない。僕が作れるのはExcel2013に対応したプログラムだけであるということだ。2016は動く可能性が高いが、2010についてはあまり保証できないということである。

厳密にいえば対策は取れるかもしれないが・・・時間がない。VBAで書くこう。結局そこに落ち着いたわけである。

安定のVBAさん

 結果から言うと、これで無事に解決した。Excelのバージョン毎にVBAにも違いがあるようだが、基本的な機能であればほぼ互換性があるという見方をして良さそうだ。しかしやはり不具合が出ることもあるようなので、以下のような記事を参考にするなどして、リスクを減らした方がよいだろう。

www.stdio.jp

VBAで事なきを得た後も、少々調べていた。やはり皆さん色々苦労されているようで、以下のような記事も見つかった。

qiita.com

この方はJscriptが最適解と踏んだようだ。JscriptによるExcel操作は調べると結構情報が出てくるので、これもアリかもしれない。ActiveXObjectというものに理解がないので詳しい所は分らないが、恐らくスクリプトが起動した時点で使用されるアセンブリが決定されるのだろうし、互換性なども気にする必要が無いだろう。

というわけで、既存Excel操作は非常に疲れるのである。できればこんな仕事請け負わない方がいいんじゃないかと思っている。もしどうしても作る必要に迫られたのなら、さっさとVBAで作成するのが安牌だろう。

これから就活・転職する人にIT業界のエンジニア職をオススメする理由

 寒くなってきましたね(11/9現在)。僕はもともと自然が好きで、わざわざ農学部の森林科学科なんてものを卒業していたりもするんですが、今は紅葉まっさかり、素晴らし季節です。この間、ツーリング&登山で堪能してきましたけど、赤や黄色に染まる山並を眺めるってのは良いものですねえ。いつも室内にいると特に・・・自然が恋しくなる。そう、僕がいるIT業界は、ご存知の通りTHEインドアな業界なもので・・・。最初から少々ディスり気味で、お前何してん?とか言われそうですが、これでも僕はこの業界を結構気に入っているんです。というわけで、ここからはIT業界の良さについてつづっていきたいと思います。

とりあえずIT業界、という選択はアリ

 どこへ就職しよう、転職しよう。大してやりたいことが無い。そんな方にはIT業界、特にエンジニア職をオススメしておきます。オススメする理由は至極単純で、「ITがあらゆることに使われているから」です。細かいところは割愛しますが、今の世の中はITが中心に回ってます。あらゆる仕事の道具、基盤としてITが使われていることは、今更言うまでもありません。自動車のエンジンはコンピューター制御で動いています。買い物のAmazonはインターネット上のWebサービスです。会社の受発注業務は業務アプリケーション無しに回りません。全てにITが使われています。今後もさらにその傾向は高まるでしょう。

特に最近はAIやらBotやらRPAやら叫ばれていますよね。そしてそいつらに人間の仕事が奪われると・・・。うーん実は言うほど先には進んでいないと感じますけどね。IT業界ってのは結構泥臭い仕事で、アナログチックな部分も多いんです。でもジワジワと・・・確実に人間の仕事を奪っていくのは確かだと思います。

それに、やっぱりITのエンジニアやるって楽しいですよ。色々な知識・技術を学んで、それを使って問題を解決する、モノを作る。単純に楽しいと思います。人によってはそのまま趣味になるんじゃないでしょうか。それに、一年も働けば自分でサービスとか作れるようになりますからね。仕事を楽にするツールなんかを作ったりできるようにもなります。

エンジニアの敷居は高くない

 さて、とりあえずここらへんでテンションを爆下げしておきしょう。今からこの世界に入って、純粋な技術者として上を目指すのはかなり無謀です。頭の良さが仕事に直結する部分も多々あるので、才能のある人は本当にすごいなあと感じますし・・・子供のころからプログラミングをしているような変態も時折見かけます。これは皆さんも20年以上生きてきて既にお気付きのところかと思いますが・・・良い環境で育った才人にはどうやったって勝てないんですよね。純粋な技術者として成功するのは諦めた方がよさそうです。

まあでも、世の中そういう天才みたいな人ばかりではありません。まずは平均的なエンジニアを目指せばいいんだと思います。多少の才能と努力は必要ですが、平均的なエンジニアを目指すことは誰でも可能だと感じています。就職すると実感するのですが、日本の社会人は恐ろしく自習をしません。ちょっと努力すれば平均には届いちゃいます。例えばプログラミングには難しさもありますが、ちゃんと文章を読める人であれば、よほど複雑なものでもない限り、実用レベルで理解・実装が出来ないことは殆どありません。これはプログラミングに限らず、インフラ技術などにおいても同様です。

 さらに、日本では未経験でも簡単にエンジニアとして就職することができます。今や途轍もなく大切な要素であるITですが、それをメインで扱う業界は、相変わらず日本の大学生から好まれません。ブラックという印象があるようです。ええと・・・否定はしません。しかしこれは同時にお買い得でもあります。お給料を貰いながら、非常に重要なスキルの勉強ができる施設か何かに、簡単に入れるということです。さながらブラック研究室の院生と言ったところでしょうか。

これからの時代、最初に入った会社で40年働き続けるということはまずないと思います。現実として可能性が低いんじゃないかと思うのです。じゃあ他の会社に行ったときに何が必要かというと、やっぱりスキルだと思います。実務能力というべきかな。IT業界で何年か働いた経験を活かしながら、別の業界で別の職種をやったり、副業をやったりすることは、想像つきやすいんじゃないでしょうか?

繰り返しになりますが、特別優秀なエンジニアになる必要はないんだと思ってます。世の中のお金やモノの流れが、ITを通じてどう動いているのか。色んなサービスとかシステムがどこでどう動いているのか、それぞれにどんな特徴があるのか。頭の中に、IT技術の活用マップみたいなものができる、ということが重要だと思うのです。そしてそこへ足を踏み入れるのに、敷居がだいぶ低いということをお伝えしたかったわけです。

今はスキルを組み合わせる時代

 まず最初に断っておくと、なんでみんな働くんでしょうか。お金が欲しいからですよね。ある程度お金を手に入れちゃった人は、手段が目的になりがちなんでしょうけど。ホリ〇モンとかホリ〇モンとかホリ〇モンとか。彼は「やりたいことをやれ!」とよく言ってますが、僕ら凡人からすれば「金が手に入る保証がなきゃやらねえよ!」ですよね。当たり前の感覚だと思います。

その普通の感覚からもっと言うと、より「短い時間で」、「低ストレスで」、「多くの」お金が欲しいわけですよね。つまり、お金を得る効率を上げる必要があるということ。じゃあお金を得る効率を上げるにはどうしたらいいだろうか?お金に直結する仕事をするのが手っ取り早いというわけです。物凄くざっくりとした話になりましたが、金融業界って給料が高いですよね。それは仕事がお金に直結しているからです。仕事がお金に直結していて、時間あたりに生まれるお金の量が多いから、社員の給料も上がるわけです。さて、そんな金融業界からのニュースを一つ。

gigazine.net

ゴールドマンサックスって知ってますか?世界屈指の投資銀行です。この記事が示しているのは、そのトレーダー(株取引をする人)がどんどんAI(or統計計算ツール)に置き換わっているというお話です。僕が言いたいのは、AIに人間の仕事が取って代わられるということではなく(いずれそうなるかもしれませんが)、こう言う感じで世の中の仕事はIT色が強まってくるということです。ここでいうと、金融っていう業務の専門知識×IT技術ってことですね。

それがこの章で言いたかった、今が「スキルを組み合わせる時代」であるということです。組み合わせるスキルの一つとして、ITスキルはいかがでしょうか、ということです。特別専門性が高いわけでもない限り、プログラミンができるだけでも、業務の知識があるだけでも、なかなか給料は上がりません。何故か?プログラミングができるだけじゃ使えないし、業務が分かってもITに疎い人は、お金を生み出すスピードが遅いからです。モノやサービスを売ったり買ったりする、業務というお金に直結する部分をITによって効率化することで、お金を効率的に得られるようになるんです。そしてそれが世の中の様々な業界で求められていて、故に会社員として高い給料をもらえるようになるということです。

まあ、ITから入るか業務から入るか、どっちがいいかですけど、ITスキル・・・というか全容を見れる力は、有るのと無いのじゃ生きていくうえで明確な差が生まれる部分だと思います。個人的に、ITスキルは若い方が取得しやすいと思っていますし、事務作業も効率化できるようになるので、できるだけ早いうちに経験しておくのがお得かなと思っています。

なお、ここではITスキル×何かって感じで限定してますけど、2つ以上の親和性の高いスキルを身に着けている人材というのは、1つのスキルしかない人よりも単純に希少性が高いので、(需要があるのであれば)それだけ貰えるお金は増えることになりますね。

そんな感じでIT業界を爆上げしておきます。

余談。独立もしやすい

 余談ですけど、IT全般について知っておくと、たとえば個人でサービスを運営してみたいとか、会社を立ち上げてみたいとかって時に、どこで何を使えばいいのかわかるんですよね。だから独立に有利だと思います。フリーランス的な働き方も、IT職に多いですよね。まあ大企業に入って最後まで勤め上げるのが楽か、何とか個人で生計を立てていくか、どっちが楽で効率がいいか分かりませんけどね。会社にすがるってのは(潰れなければ)割と楽だと思いますし、退職金も(今は)多いですから。僕はぬるい大企業 + 副業って戦略目指してますけどね。めっちゃ余談でした。