投稿

気にしてみると、景色が変わる

イメージ
犬を飼い始めて、もうすぐ1年になります。 9月は雨の日が続き、傘を差して長靴で散歩するのが日課になっています。 この時期、散歩をしていて気になるのが銀杏です。 銀杏は犬にとって毒なので、イチョウの木がある場所では、落ちている銀杏を犬が口にしないよう、地面を気にしながら歩いています。 そこで、以前から気になっていたことがあります。 銀杏が大量に落ちている場所と、ほとんど落ちていない場所があります。 イチョウは「雌雄異株」という植物で、株ごとに雄と雌が分かれています。 銀杏をつけるのは雌株で、雄株は実をつけません。 散歩中に感じていた銀杏の分布の違いは、イチョウの雌雄によるものだったということです。 さらに面白いのは、街路樹として植えられているイチョウを見ると、雄株と雌株が無作為に混ざっているのではなく、ある程度まとまって植え分けられているように見えることです。 普段何気なく見ている街路樹も、実際には「どの種類を、どこに、どう植えるか」という設計の上に成り立っています。 そう考えると、毎日歩いている道も、ずいぶん計算されて作られているのかもしれません。 ― S.N. インプラス株式会社

20分でプログラムの雛形、そのあとに残る仕事

イメージ
研究開発の日に、以前から気になっていた機能を試作してみました。 システム開発の効率を上げるためにも、トラブル対策にも役立ちそうな機能です。 既存のコードとリファレンスマニュアルをAIに読み込ませたところ、20分ほどでプログラムの雛形が生成されました。 実際にシステムへ組み込んで確認するところまでは進めていませんが、何とかなりそうだという手応えは掴めました。 やってみて感じたのは、実現したいと思ったことのほとんどを、AIに任せれば自分でできてしまう、ということです。 これまでシステム屋として積み重ねてきた知識や経験が、AIによってあっという間に形になっていく。 それは便利さである一方、システム屋の仕事とは何なのだろう、とふと考えさせられました。 AIを使っても、面倒なところが無くなるわけではありません。 できあがったものが本当に正しいのか、狙った通りに動いているのかを確認する作業は、結局のところ人が担うことになります。 想像力を働かせて、起こりうる問題を考え、判断し、確認する。 そこに力を使う場面は、これからも変わらず残りそうです。 その確認と判断の部分にこそ、価値を作れるのだろうか。 そんなことを考えながら、次の試作に取り組んでいきたいと思います。 (HK) インプラス株式会社

河原のヒガンバナ

イメージ
今年もヒガンバナの季節がやってきました。葛が繁茂している堤防の内側には生えていなくて、ある程度刈り込みがされている外側にまとまって咲いていました。 ヒガンバナは球根を作るのですが、毒があるので食べられません。が、古くは救荒作物として栽培されていた面もあり、毒抜きして食べる方法も色々と伝わっていますが、とても手間がかかるし危険なので現代で食べる機会はないでしょう。

空海読んだら、人生変わった

イメージ
  『空海読んだら、人生変わった』(渡辺祐真)を読みました。 空海といえば日本仏教のスターですが、意外に調べたことはなく、この本で初めて空海の人生や思想を知れました。ポップなタイトルでしたが結構本格派な内容で読みごたえがありました。面白かったです。 (倉) インプラス株式会社

.NET 文字列を指定したバイト数以内で切り出す

イメージ
.NETでは、String.Substringや範囲演算子を使用して、文字列の先頭から指定した長さを切り出すことができます。 string result = value.Substring(0, length); string result = value[..length]; ただし、.NETのstringはUTF-16で管理されています。LengthやSubstringなどで使用するインデックスは、見た目の文字数やUnicodeのコードポイント数ではなく、UTF-16のコードユニット(char)単位です。そのため、UTF-8などのエンコーディングに変換した場合のバイト数を基準に切り出したい場合は、Substringなどをそのまま使用することはできません。 また、UTF-8のような可変長エンコーディングでは、1つの文字(Unicodeコードポイント)を複数バイトで表現することがあります。そのため、エンコード後のバイト列を指定した位置で単純に切ると、1文字分のバイト列が途中で分割されてしまう可能性があります。 このような場合は、Encoder.Convertが使用できます。 Span<byte> buffer = stackalloc byte[length]; Encoding encoding = Encoding.UTF8; Encoder encoder = encoding.GetEncoder(); encoder.Convert( value.AsSpan(), buffer, flush: true, out int charsUsed, out int bytesUsed, out _); ReadOnlySpan<byte> bytes = buffer[..bytesUsed]; string result = value[..charsUsed]; Encoder.Convertは、出力先のbufferに収まる範囲で入力文字列をエンコードします。このとき、1文字分のバイト列が途中で切れることはありません。 charsUsedには、エンコード時に消費された入力文字列のUTF-16のコードユニット数が格納されます。そのため、charsUsedを範囲演算子のインデックスとして使用することで、指定し...

新しい水筒

イメージ
 先日、水筒を新調しました。 以前使用していた水筒の外側の傷などがだいぶ目立ってきていました。 内部の傷までは確認できませんでしたが、すでに6年近く使用していたこともあり、新しくしました。 店頭で様々な種類のものを見ていましたが、蓋をロックする仕組みが変わっていたり、キャリーループが付いていたりと、 以前はなかった機能がいろいろ増えていて、日々改善されていることに気付きました。 いつも、半日ほどで飲み切ってしまうため、今回は容量も大きめにしました。 変えてみて、良かった点、悪かった点が見えてきましたが、また長く愛用していきたいと思います。 Y.N.

考えるための道具

イメージ
クラウド上で動いているお客様のシステム構成を整理する機会がありました。 クラウドの管理画面でリソースを一つずつ見ているだけでは、それぞれの機器がどのようにつながっているのか分かりにくかったため、AIに構成図を作らせてみました。 クラウドは「サーバーをクラウドに置くだけ」といったイメージがありますが、実際にはネットワークやセキュリティなど、さまざまな仕組みが組み合わさって動いています。 図解してみると、それぞれの役割やつながりが一目で分かるようになり、今まで見えていなかったものが見えてきました。 これは普段の仕事でも同じだと思います。 仕事の流れや業務のつながりを図解してみると、無駄な手順や、特定の人に依存している仕事など、普段は気づきにくいことが見えてくることがあります。 また、自分では分かっているつもりでも、図にして人に説明しようとすると、うまく説明できない部分が出てくることがあります。 それは、自分の中でもまだ整理できていない部分なのかもしれません。 そうしたものを見つけられるだけでも、図解することには価値があると思います。 図にすることで、物事を分かりやすくするだけでなく、「本当にこれでいいのか」と立ち止まって考えることができます。 普段当たり前にやっている仕事ほど、一度図にしてみると、新しい発見があるかもしれません。 ― S.N. インプラス株式会社