このウェブサイトはクッキーを使用しています。このサイトを使用することにより、プライバシーポリシーに同意したことになります。

社員の活動紹介

HSグループ

2023年11月30日 igo
ベテランがんばれ
おもひでのメイル

さて、最近、複数の部内研修において同時期に一つお題を出しています。
以下のメイルの切り取りをきっかけにしています。

==================================
「自分も年寄りなので一番使いこんだ言語はCでした。
C言語で一番最初に感動したのはUNIX V6のコードを読んだ時です。
開発者たちの美学を感じました。関数ポインタとstructを使いこなして、
(今から振り返ると)オブジェクト指向の特長を自然と実現していました。

今ではC++があるので、それを使えば当たり前のようにできることですが、
30年以上も前の達人たちは、既に会得していたんですよ!」
==================================

社内の設計・技術リーダー向けのメイリングリストに流された、当時の技術部門の部長のメイルです。

このメイル、読んでみてどう感じましたか?当時中堅社員真っただ中の私は「Unix V6のコード、読んだことない!どこに感動したのか確かめてみたい!」「往年の天才開発者たちの美学を私も感じたい!」と、すぐにUnix V6のソースをダウンロードしました。

このメイルの切り取りをベースに「実際にその部分を見つけてその美学に感動しよう!(結構ムズイぞ)」というお題から始まり、Ken ThompsonとDennis Ritchieが何をしたのか?、Unix V6がターゲットとしていたPDP-11を調べて行き着く、史上最悪のバグとされる重大医療事故のTherac-25について調べてみよう、原因となった異常系処理や同期処理の問題を調べたうえで非機能要件の大切さを再認識し、さらにはこのような大事故を教訓としてIEC 62304が制定されたという流れをたどって自分たちの身の回りの開発プロセスの意味づけを実感しよう、と連綿とつながるソフトウェアの歴史(途中から医療系ソフトウェアの歴史)を辿るわけです。

そんな議論の最中に「この実装、かっちょいいよねー!」「動けばいい、でやるとこういう事起きちゃうんだよ、ほんと」「なんでもソフトではなくって、ハード側での対処の方が賢いこと、たくさんあるよねー、例えばさ…」「人間ってさ、時間軸が絡むロジックにはトコトン弱いのよ、だからレースコンディションはムズイの」といった私自身の実感、肌感覚のようなものを共有するようにしています。

会社にほんの少し早く入った人間としてこういった背景や難しさを楽しんでいることを見せつけてやろう、という魂胆です。

ベテランは楽んでいる姿を見せないと!

どこの会社でも、ある程度独力でこなせるようになった中堅社員が陥る燃え尽き症候群やルーティーン感から始まるモチベーション低下に悩まされていると思います。

また、会社側でだけでなく、中堅社員本人が悩んでいたりしますよね。そういった場面に触れる度に、あの頃お酒の場でとても楽しそうにソフトウェア技術のお話をしてくださった技術部門の部長のあの姿を思い起こします。

ベテラン本人がソフトウェア開発を楽しんでいる。まだまだこの会社には楽しいことありそうだ。そんな風に中堅社員に思わせられるよう、自分の背中を磨きたいものです。

技術者はベテランこそ大いに自ら楽しみ、生き生きと。役職者が仕事を自ら楽しみ、部下に見せつける。
そういった「背中」が中堅へのメンタリングになるんだよなぁ、などと最近、と身に実感しています。
 

1960年代に生物学界隈を席巻した細胞内シグナル伝達

さて、前回の続きです。cAMPの蓄積による数秒レベルの遅延反応のメカニズムの話でした。

このcAMP、細胞内のシグナル伝達物質として同定されました。
細胞外から与えられたアドレナリン→細胞内のグルコース生成はどのような仕組みで動いているのか?という動機を元に研究を進めたところ、アドレナリン(ホルモン)のような細胞外シグナル伝達物質だけでなく、細胞内でもシグナル伝達物質が存在しているようだ、しかもその物質は細胞外からのシグナル伝達を受けて動作している、という流れで見つかった物質です。

研究を進めたEarl Wilbur Sutherland Jr.はアドレナリンに限らず多くのホルモンにおいても基本的にはcAMPによる細胞内シグナル伝達が動作していると仮説立てをし(当時の研究者間ではたった一つの物質で細胞内の多くの機能が制御されるわけがないと大反論)、彼の予想通り細胞種に関わらず普遍的な仕組みであることが次第に明らかになっていきました。

この一連の仕事で1971年に彼はノーベル生理学・医学賞を受賞します。
さらにcAMPに制御されるリン酸化酵素がPKA、このPKAについての研究の先で見つかった可逆的なリン酸化酵素反応の研究(要は刺激を受けて変化した酵素がまた元の状態に戻るため、シグナル伝達経路が再利用される)でEdmond H. Fischer・Edwin G. Krebsが1992年に同じく生理学・医学賞を受賞します(研究時期は1950~1970年頃)。

いずれの研究も1960年代の細胞内シグナル伝達研究ブームを引き起こし、この時期、生物学の論文の5%がタンパク質のリン酸化に関するものだったそうです(THE JOURNAL OF BIOLOGICAL CHEMISTRY Vol. 280, No. 43, Issue of October 28, p. e40, 2005)。

Alan Kayのオブジェクト指向

細胞間/細胞内シグナル伝達研究全盛のこの時期、コロラド大学で分子生物学を学んでいたのがオブジェクト指向の生みの親であるAlan Kay、その人です。

パーソナルコンピュータという概念がなく、大きな計算機の黒いコンソール画面に文字をひたすら打ち込んでいた時代、マルチウィンドウで直感的な「パーソナルコンピューター」を構想し、実際にその構想をAlto/SmalltalkでPoCしたのが暫定ダイナブックです。

1979年当時、Alan Kayが所属していたゼロックスパロアルト研究所を訪問し、この暫定ダイナブックを見学したのがSteave Jobs、後のMacOSに通じるわけです。

さて、複数のWindowが連携して動作する世界観を実現するにはWindowを境界として

それぞれのWindow間での協調
それぞれのWindow内で完結する状態や機能の実現
の2つが必要になります。例えばこのWindow境界内をオブジェクトとみなし、メッセージングでワラワラと連携する、そんなソフトウエアアーキテクチャがAlan Kayのオブジェクト指向の世界観です。

どうでしょう?ホルモンによる細胞間のメッセージングとそのメッセージを受け取って細胞内部で完結する状態管理や遺伝子発現制御、まんま上記の細胞生物学の世界観ですよね。

学生時代細胞生物学・遺伝学を専攻していた事が縁でメディカル部門に配属され、ようやくソフトウェアの世界をよちよち歩きをできるようになってきた若いころの私。
ただただシークエンス図を書く作業をしつつ、そもそもソフトウェア設計ってなんぞや?と思い悩んでいました。

そんなタイミングでオブジェクト指向の生みの親であるAlan Kayは学生時代生物学専攻らしい、という情報に触れ、パン!と頭の中で色々なものが繋がったのを今でも鮮明に覚えています。

Alan Kayは細胞をイメージしていたに違いない、と確信を抱いたのですが、当時、その証拠を見つけることもできず、かつ、誰に話しても理解してもらえないであろうこの感覚に中々、悶々としていましたよ。

やっぱりあってた!

実際Alan Kayは
 “At Utah sometime after Nov 66 when, influenced by Sketchpad, Simula, the design for the ARPAnet, the Burroughs B5000, and my background in Biology and Mathematics, I thought of an architecture for programming. It was probably in 1967 when someone asked me what I was doing, and I said: "It's object-oriented programming".The original conception of it had the following parts.
  - I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning -- it took a while to see how to do messaging in a programming language efficiently enough to be useful).”
(http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en)
と語っており、やはり彼が学生時代を過ごした60~70年代の生物学に大いに影響を受けたのがオブジェクト指向の着想だったのです。大正解!4年目の俺!


長々と書いてしまいましたが、いかがでしょう?
イノベーション講座なんかを受講すると全く別のものを組み合わせて発想をしてみる手法を練習しますよね。
とあるルールを元に物事を制御したい時、これまでお勉強してきた理科の内容を振り返って取り込んでみると案外いい着想ができるかもしれないですよー

結局、太陽は偉大。太陽を起点とすることで低気圧(上昇気流で天気が悪い)、高気圧(下降気流で天気が良い)のキーワードが説明できちゃいます。

暗記に頼っていた中学理科の定期テスト、「太陽は偉大」の起点だけを記憶にとどめておけばサラサラと余白に落書き書くだけで思い出しと確認を一度にできちゃうわけです。

ここからさらに、地球の自転はスゴイと言いながらこの後、台風の渦や前線の弧を眺めながらコリオリの力やリサージュ曲線へ展開、手からけん玉をぶら下げ、フィギュアスケートのスピンもどきをしながら手を伸ばしたり縮めたりを玉の動きを観察して実感、台風の衛星画像をWeb検索して渦の方向を確認して…なんてやると目をキラキラしながらアハ体験してくれます。

説明によってはこの瞬間的な神経の動作によって様々な膜タンパク質(主にイオンチャンネル系のタンパク質)の構造が変化して細胞外物質を取り込むことで長期記憶を形成する、なんてところまで言及しているモノも見ますね。

これら細胞外物質を取り込む穴を形成するタンパク質を遺伝的にノックアウトすると神経伝達ができなくなる、そんな観察から結論に繋げている主張も見られます。が、実はよく考えてみるとこんな短期間で成立する仕組みである細胞外物質の取り込み増加がどうして比較的長時間保持された情報から行う複合的な判断や記憶という機能につながるのか?はよくわかっていませんでした。

そもそも、神経の瞬間的な興奮は次の刺激に備えるために即座に非興奮状態に戻ります。となると、数秒単位で行っている判断や意思決定はどのようになされるのでしょう?瞬間的な反応を何らかの方法で一定期間覚えておかないとできない芸当です。

これってソフトの話なの?

さて、なんでソフトウェア会社サイトのコラムでこんな細胞生物学のお話を話題にするのでしょう?わかるかな~?わかんねーだろうなぁ~(松鶴屋千とせさん、2月に亡くなってたんですね…合掌)。

ヒントは1970年代に米パロアルト研究所でソフトウェア設計の世界観を変えたあのお方です。【次回に続く】

2022年9月26日 machi
技術交流会:ポスターセッションを行いました

先日、当社開発本部内の技術交流会としてポスターセッションを開催しました!
普段新横浜にいる私たちメディカルネットワーク(MN)グループの社員が神奈川県開成町の宮台事業所へ行き、ポスターを使って技術発表を行うというものです。

ポスターセッションは大変盛り上がりました。ポスターセッションは自分のペースで見ることができ、気軽に質問できるので参加者にも好評で、「刺激を受けた」「勉強になった」との声が多かったです。MNグループはWebやクラウド・AIの開発が多く、宮台事業所は組込開発がメインなので技術領域が違うところも興味深かったのではないでしょうか。ホストとして開催準備や運営を取り仕切ってくれた、宮台事業所の方々に感謝です。

今回、3つの発表を行いましたのでご紹介します。

ポスターセッションっていいね!

ポスターセッションの後はホストの宮台事業所とMNグループの有志で座談会。
普段なかなか話すことが出来ない人達と、大変楽しい時間を過ごすことが出来ました。

今回、ポスターセッションの良さを再認識した人が多かったです。自分たちの技術や成果を発表して、皆さんが興味深く見てくれて気軽にフィードバックを貰える、とても良い機会になりました。「このような取組みを是非続けてほしい」という声も複数頂きました。協力頂いた皆さん、ありがとうございました!

2022年7月28日 igo
新人さんいらっしゃぁ~い(その2)
一緒にお題、考えませんか?

さて、ここ2回、新人研修からの紹介でした。どうです?面白そうでしょう?そこのあなたも混ざりたくないですか?そんなあなたは是非富士フイルムソフトウエアの応募をご検討ください!

2022年6月1日 igo
新人さんいらっしゃぁ~い
観点その1:関心事を減らせ! ~仮説演繹の強さを実感~

講座のお題の中心は仮説演繹です。実験系の大学院で科学哲学の教養科目としてたまに題材にされる、Strong Inference(※1)というScienceの古い論文をまず、読んでもらいます。
(※1) John R. Platt (1964). "Strong inference". Science. 146 (3642): 347–53.

観察された事柄に対して

 1.二者択一の対立仮説を設計する
 2.1の2つの仮説について、得られた結果により片方の仮説を棄却するような実験を設計する
 3.クリアな結果が出るまで2の実験をする
 1’.残された仮説について更にサブな仮説や連想される仮説を作成し、1に戻る

を繰り返す、という方法論です。

この繰り返しにより関心事が常に半分ずつそぎ落とせることになり、結論にたどり着くのが早い、という仕組みです。

勿論、現実はこんな簡単には行かないものですが、要求分析や不具合解析、設計書が残っていない実装の意図を理解したいときなど、予想を立てて立ち向かわなければいけないようなソフトウェア開発の様々な場面で活躍します。その強力さを実感してもらおう、というわけです。

この論文を一時間程度でざっと読んでもらい、要旨をざっくり把握してもらったうえで幾つかのお題に対して仮説立て、実験設計あたりをやってもらいます。

アイデア出しのお題は「京都鴨川のカップルがどうしても等間隔に並んでしまうという性質があると仮定して、それを確認する実験を設計せよ(※2)」「カクレクマノミがハタゴイソギンチャクに刺されない理由を解明せよ」「走る新幹線をスマホで撮影すると窓が斜めになる理由、仮説立案せよ(※3)」あたりです。
(※2) 模範解答としては「カップルの間に座る」としています。この後、両脇のカップルが距離を保とうと移動し、それがまた隣のカップルの移動に繋がり…と順に移動していく現象を観察できた、としています。京都の学生自由研究コンクールで入賞したネタが秀逸だと、私の学生時代の助教の先生がその昔教えてくれたのですが、実はWeb上からはその元ネタは見当たらず…あくまで実験設計の練習と割り切って引用元の不明瞭さには目をつぶり、お題にしています。
(※3) ローリングシャッター歪みと言われるやつですね。ウチの当時5歳の息子がNHK教育「考えるカラス」をかぶり付いて見ていた時にあぁ、このネタ使えるな、と。

答えは一つではないし、複数考えた答えの中からどれが対立仮説や検証実験としてより良いか?という美学な世界で悩むという点で、みんなで議論を楽しんでもらおうといった魂胆も籠めてあります。

観点その2:引き算の美学

上記お題の2つ目、「カクレクマノミがハタゴイソギンチャクに刺されない理由を解明せよ」において観点その2、引き算の考え方を体験します。

観点その3:???

観点その3は…と、思いましたがちょっと長くなってしまいましたね。観点その3はまた、後ほど、としましょう。
なんだかTV番組の「答えは後ほど!」的なアレになっちゃいましたね。ごめんなさい!それではまたお会いしましょう!

2022年3月17日 igo
IPA高度試験作文のキモは文章の構造化にあり
君も20万円ゲッツ!

さて、そんな小春日和の穏やかな日は4月のIPA高度試験対策を効率的に進めたいぃ~(※2)。
(※2) 車の運転をしながら母が良く口ずさんでいたものです。

弊社富士フイルムソフトウエアではシステムアーキテクト(SA)、ITストラテジスト(ST)といった高度試験合格の暁には20万円の資格補助金を美味しく頂けます。入社してすぐ試験に合格すれば転職にまつわる収入の不安も幾分解消されるかも。

ところが、我々IT技術者にとってPCも使わずに計3,000字の長い文章を短時間で記述する午後II試験の鉛筆筋トレは苦痛でしかないようです。理系出身な皆さまが多いこともあり、作文に苦手意識を持っている方も多いですよね。

だからこそ事前に文章の構成をパタン化し、当日はただただ文字を書くだけと作業簡易化したいものです。早速過去問を眺めてみましょう。

さぁ、やってみよう!

さて、それでは練習問題です。

お題:あなたは新々型インフルエンザの猛威に備え、ワクチン予約システムを超短納期で整える事となりました。「ST:先読みと対策、及び効果的な実施時期」な立場で設問ア~ウの要領で作文してみてください。

そんな立場、経験したことないよぉ…という方は身近な企画担当上司や時事ネタなニュースを想定してその立場になって想定してみるといいですよ!

「注射は本人にするものであり、同一人物による複数の予約があってもどれか一つの枠で実施されるもの。予約システムはあくまで順番待ち行列をシステム化する責務に徹することとし、納期・コストを勘案して初版ではシステムによる自治体個人情報との突合せチェック機能の構築はあきらめる。注射実績は自治体による集計に任せることとし、予約システムでの同一人物重複予約は一切不問とする。一方、システムへの不具合指摘が広がることを想定し、ステイクホルダとの合意形成を優先、マスコミ発表用の文案を事前作成するため、コンサルタントを入れる。」といった通例では採ることのできないストラテジックな、ステキな妄想(※3)を楽しく書けるかも。
(※3) 本当にそんな作戦を取っていたかは定かではありません。あくまで私の妄想です。

富士フイルムソフトウエアは通年で社員募集をしています。資格助成も充実しており、検討の価値ありかと。是非是非よろしゅうお願いします!

2022年2月22日 igo
世の中には2種類の設計者しかいない。モデリングできる設計者とそれ以外だ。
キモを掴め

ご自身の本棚にある最も分厚い本を選んでみてください。ご家族に「この本どんな本?」と聞かれたとき、納得を得られる説明ができますか? 冒頭からの章立順にそれっぽく筋を説明して、理解を得られるでしょうか?例えば、桃太郎。最も短く説明するとすると「おじいさんは山へしばかりに行きました。おばあさんは川へ洗濯に行きました。桃太郎は鬼が島へ鬼退治に行きました。」とでもやってみますかね。

物事を端的に要約すること、それが抽象化です。抽象化を行うと一般的に物事があいまいになってしまうため、ソフトウエア開発では決められた表現で標準的な図にします(我々、富士フイルムソフトウエアではUMLが使われます)。これをモデリングといいます。数百万行あるソフトウエアを深く理解して継続開発するために必須な能力が抽象化能力であり、抽象化された設計内容を正確に伝えるために大切な技術がモデリング能力です。抽象化能力とモデリング能力、この2つを最大限に利用して適切な設計を行うことで、開発効率は大幅に向上するわけです。そして、これが失敗すると後々の足かせになり、不具合や開発効率悪化として現れるのです。この2つの技能向上こそがソフトウエア設計者の能力の源泉、そう考えて私たちは若手中心にモデリング訓練を継続実施しています。

「写真で一言!」訓練
[画像]カレーライスの作り方は調理作業の繰り返しでしかない。レシピにはその作業と順番が定義されるため、レシピの質こそが大切である。

図1 「カレーライスの作り方」のモデリング

[画像]一連の画像処理は個別の処理の繰り返しでしかない。処理順を変えることで、画質向上を行うことがよくあるので、画像処理順の管理こそがキモ。

図2 「画像処理」のモデリング

さて、実際のモデリング訓練では身近なものを題材とします。図1は「カレーライスの作り方」のモデリング(クラス図)。図2は「画像処理」です。どうです、そっくりでしょう? 実際の開発では、せいぜい年に5機能程度しか設計できません。一方、週に一度のモデリング訓練では年に40回以上の設計訓練を行えるわけです。設計行為を疑似体験し、知識→スキルへと昇華させる。これがソフトウエア技術者のための技量鍛錬になるんですね。まず、実際のカレーライスの作り方を頭の中で検証したり、オブジェクト図で表現したりしながら、「カレーライスの作り方は所詮、一口大に切られた食材をその前工程までに作られた調理済み食材があるに鍋に繰り返し投入することでしかない。」といった抽象化(=コンセプトの導出)を行います。その後、そのコンセプトを図で表すとね、とクラス図で表現するわけです。これを15分ほどで一斉に実施し、ホワイトボードにそれぞれ書き出して議論します。着眼点の違いや他人への伝わりやすさの議論は楽しいものです。

一緒にやってみませんか?

私たち富士フイルムソフトウエアで扱う製品の寿命は非常に長く、モノによっては20年以上もメインテナンスしている製品もあります。大先輩が作った製品を上手に理解し、壊さないように機能追加する。あるいは、20年後の後輩が機能追加しやすいように適切にフレームワーク化し、コンセプトを設計に残す。そんなやりがいある仕事を上手に進めるための鍛錬、一緒にやってみませんか?