ベテランがんばれ
さて、とってもお久しぶりです。igoです。ご機嫌よろしゅう。
最近うちの小5の息子がゲームの信長のアレにはまっておりまして、お城めぐりをしております。
先日は安土城跡へ行ってきました。安土駅から片道1.5Kmぐらい、田畑の中のまっすぐな道歩いた先にあるのですが、そこからの更なる城登り、かなりいい運動でしたよ。
本丸跡や天守後他、基礎の石がそのまま整然と並べられたまま。往時の痕跡に自由にふれることができ、時空の隔たりを大いに感じ入ることができました。
他にも城内に建立され、1854年に火事で焼失した信長公の菩提寺、摠見寺の焼けた屋根瓦なんかもそこらに落ちており、息子どころか私自身が妙にはしゃいでしまいました。
こういった、自分が楽しんでいる背中を見せるのも一つのメンタリングかなぁ、と。
さて、最近、複数の部内研修において同時期に一つお題を出しています。
以下のメイルの切り取りをきっかけにしています。
==================================
「自分も年寄りなので一番使いこんだ言語はCでした。
C言語で一番最初に感動したのはUNIX V6のコードを読んだ時です。
開発者たちの美学を感じました。関数ポインタとstructを使いこなして、
(今から振り返ると)オブジェクト指向の特長を自然と実現していました。
今ではC++があるので、それを使えば当たり前のようにできることですが、
30年以上も前の達人たちは、既に会得していたんですよ!」
==================================
社内の設計・技術リーダー向けのメイリングリストに流された、当時の技術部門の部長のメイルです。
このメイル、読んでみてどう感じましたか?当時中堅社員真っただ中の私は「Unix V6のコード、読んだことない!どこに感動したのか確かめてみたい!」「往年の天才開発者たちの美学を私も感じたい!」と、すぐにUnix V6のソースをダウンロードしました。
このメイルの切り取りをベースに「実際にその部分を見つけてその美学に感動しよう!(結構ムズイぞ)」というお題から始まり、Ken ThompsonとDennis Ritchieが何をしたのか?、Unix V6がターゲットとしていたPDP-11を調べて行き着く、史上最悪のバグとされる重大医療事故のTherac-25について調べてみよう、原因となった異常系処理や同期処理の問題を調べたうえで非機能要件の大切さを再認識し、さらにはこのような大事故を教訓としてIEC 62304が制定されたという流れをたどって自分たちの身の回りの開発プロセスの意味づけを実感しよう、と連綿とつながるソフトウェアの歴史(途中から医療系ソフトウェアの歴史)を辿るわけです。
そんな議論の最中に「この実装、かっちょいいよねー!」「動けばいい、でやるとこういう事起きちゃうんだよ、ほんと」「なんでもソフトではなくって、ハード側での対処の方が賢いこと、たくさんあるよねー、例えばさ…」「人間ってさ、時間軸が絡むロジックにはトコトン弱いのよ、だからレースコンディションはムズイの」といった私自身の実感、肌感覚のようなものを共有するようにしています。
会社にほんの少し早く入った人間としてこういった背景や難しさを楽しんでいることを見せつけてやろう、という魂胆です。
どこの会社でも、ある程度独力でこなせるようになった中堅社員が陥る燃え尽き症候群やルーティーン感から始まるモチベーション低下に悩まされていると思います。
また、会社側でだけでなく、中堅社員本人が悩んでいたりしますよね。そういった場面に触れる度に、あの頃お酒の場でとても楽しそうにソフトウェア技術のお話をしてくださった技術部門の部長のあの姿を思い起こします。
ベテラン本人がソフトウェア開発を楽しんでいる。まだまだこの会社には楽しいことありそうだ。そんな風に中堅社員に思わせられるよう、自分の背中を磨きたいものです。
技術者はベテランこそ大いに自ら楽しみ、生き生きと。役職者が仕事を自ら楽しみ、部下に見せつける。
そういった「背中」が中堅へのメンタリングになるんだよなぁ、などと最近、と身に実感しています。
理科とオブジェクト指向?(その2)
皆さん、ごきげんよう! igoです。先日の皆既月食&天王星食、ご覧になりましたか?
2部門兼務な私は職場が2か所あるのですが、そのうちの一つ、宮台事業所から自転車で10分程度のところに住んでいます。
当日はもう一つの職場である新横浜から新幹線をかっ飛ばして(?)19時過ぎに帰宅し、急ぎ天体望遠鏡の用意をして大雄山最乗寺仁王門付近の小高い丘に息子を連れて向かい、何とか皆既の瞬間に間に合いました。
チドリの足跡のように片目をつぶって望遠鏡を覗き込む息子をおにぎりをほおばりつつぽけぇっと眺めていると、ぽそっと「んー、おなか痛い」との声が何やら聞こえてきたわけで。
裁判長による「主文!即時帰宅の刑に処する!」という判決を言い渡され、30分経たずにすごすごと退散。
帰宅してトイレに駆け込もうかと玄関に向かう息子が田んぼ端から空を見上げて、「なんだ、ここからでもよく見えるじゃん」という強烈なボディブローを見舞ってくれましたよ。
もうね、生まれたての小鹿状態です。そんなもんですよ奥さん。
さて、前回の続きです。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)。
レセプタやチャンネルを通して細胞外から物質(ホルモンなど)を受け取り、それをトリガとした細胞内シグナル伝達でDNA上の遺伝子をスイッチする。
細胞間/細胞内シグナル伝達研究全盛のこの時期、コロラド大学で分子生物学を学んでいたのがオブジェクト指向の生みの親であるAlan Kay、その人です。
パーソナルコンピュータという概念がなく、大きな計算機の黒いコンソール画面に文字をひたすら打ち込んでいた時代、マルチウィンドウで直感的な「パーソナルコンピューター」を構想し、実際にその構想をAlto/SmalltalkでPoCしたのが暫定ダイナブックです。
1979年当時、Alan Kayが所属していたゼロックスパロアルト研究所を訪問し、この暫定ダイナブックを見学したのがSteave Jobs、後のMacOSに通じるわけです。
SUMIM.ST[CC BY-SA 4.0], via Wikimedia Commons
暫定ダイナブックの画面(Smalltalk-76)。今から50年前、1970年代にこれを作り上げていたんです。
今のGUIと遜色ないこの出来、驚きですよね。実は暫定ダイナブックのハードウエアであったAltoは、富士フイルムビジネスイノベーション(旧富士ゼロックス)横浜みなとみらい事業所の受付フロアに展示されているんです。
もし訪問のする機会があったら、先人の偉業にどっぷりとつかってみてはいかがでしょう?
因みにAlan Kayの当時の論文を読むと教育用に500ドル程度、タッチパネル一枚のデバイスでこれを実現する、としています。これもまた、今のタブレットそのままですよね。Alan Kayはスゴイ!
さて、複数の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年目の俺!
長々と書いてしまいましたが、いかがでしょう?
イノベーション講座なんかを受講すると全く別のものを組み合わせて発想をしてみる手法を練習しますよね。
とあるルールを元に物事を制御したい時、これまでお勉強してきた理科の内容を振り返って取り込んでみると案外いい着想ができるかもしれないですよー
理科とオブジェクト指向?
ご機嫌いかがでしょうか?igoです。台風に空気が混ぜられて急に涼しくなりましたね~。小学生の息子を持つ身としてニュースを眺めながら台風と温帯低気圧の違いは風速17.2m/sあるかないかだけ、やら、どうして低気圧では上昇気流が発生して天気が悪くなるか、といった天気を題材にした理科の小ネタをあの手この手でちょっかい出す日々です。
結局、太陽は偉大。太陽を起点とすることで低気圧(上昇気流で天気が悪い)、高気圧(下降気流で天気が良い)のキーワードが説明できちゃいます。
暗記に頼っていた中学理科の定期テスト、「太陽は偉大」の起点だけを記憶にとどめておけばサラサラと余白に落書き書くだけで思い出しと確認を一度にできちゃうわけです。
ここからさらに、地球の自転はスゴイと言いながらこの後、台風の渦や前線の弧を眺めながらコリオリの力やリサージュ曲線へ展開、手からけん玉をぶら下げ、フィギュアスケートのスピンもどきをしながら手を伸ばしたり縮めたりを玉の動きを観察して実感、台風の衛星画像をWeb検索して渦の方向を確認して…なんてやると目をキラキラしながらアハ体験してくれます。
さて、今回は少し趣向を変えて論文紹介から。昨年の2月の論文ですが、Molecular Cellにちょっとすごいヤツが発表されています(※1)。
(※1)Biochemical evidence accumulates across neurons to drive a network-level eruption Molecular Cell Volume 81, Issue 4, 18 February 2021, Pages 675-690
これまで神経伝達のモデルは瞬間的な事象については言及されていました。「神経伝達」でググってみると出てくる、シナプス間でアセチルコリンやノルアドレナリンを受け渡して軸索間を情報伝達するあの図(図2)です。
説明によってはこの瞬間的な神経の動作によって様々な膜タンパク質(主にイオンチャンネル系のタンパク質)の構造が変化して細胞外物質を取り込むことで長期記憶を形成する、なんてところまで言及しているモノも見ますね。
これら細胞外物質を取り込む穴を形成するタンパク質を遺伝的にノックアウトすると神経伝達ができなくなる、そんな観察から結論に繋げている主張も見られます。が、実はよく考えてみるとこんな短期間で成立する仕組みである細胞外物質の取り込み増加がどうして比較的長時間保持された情報から行う複合的な判断や記憶という機能につながるのか?はよくわかっていませんでした。
そもそも、神経の瞬間的な興奮は次の刺激に備えるために即座に非興奮状態に戻ります。となると、数秒単位で行っている判断や意思決定はどのようになされるのでしょう?瞬間的な反応を何らかの方法で一定期間覚えておかないとできない芸当です。
上記論文はチョーかいつまむと
- 細胞内のcAMPがだんだんと溜まっていく。
- 溜まったcAMPの量は近隣の細胞同士で共有される。
- 近隣の細胞でcAMPが溜まり切ったら判断がトリガされる(Eruption)。
という仕組みで経時判断を成立させている、という主張です。(図3)
さて、なんでソフトウェア会社サイトのコラムでこんな細胞生物学のお話を話題にするのでしょう?わかるかな~?わかんねーだろうなぁ~(松鶴屋千とせさん、2月に亡くなってたんですね…合掌)。
ヒントは1970年代に米パロアルト研究所でソフトウェア設計の世界観を変えたあのお方です。【次回に続く】
技術交流会:ポスターセッションを行いました
先日、当社開発本部内の技術交流会としてポスターセッションを開催しました!
普段新横浜にいる私たちメディカルネットワーク(MN)グループの社員が神奈川県開成町の宮台事業所へ行き、ポスターを使って技術発表を行うというものです。
ポスターセッションは大変盛り上がりました。ポスターセッションは自分のペースで見ることができ、気軽に質問できるので参加者にも好評で、「刺激を受けた」「勉強になった」との声が多かったです。MNグループはWebやクラウド・AIの開発が多く、宮台事業所は組込開発がメインなので技術領域が違うところも興味深かったのではないでしょうか。ホストとして開催準備や運営を取り仕切ってくれた、宮台事業所の方々に感謝です。
今回、3つの発表を行いましたのでご紹介します。
スマホ上(オフライン)でAIを動作させるため、認識精度を保ったままAIモデルのダウンサイジングを行いました。
なんと20GBから30MBまでの縮小に成功!AIで物体の候補を絞り込んだ後、画像処理で精度を向上させる技術も確立しました。
AI開発は担当者毎にやり方が異なり、使用するAIモデルやツール・プログラムが独自のものになってしまいがちです。
今回、教師データ作成→学習→実装の一連のAI開発プロセスと開発基盤・ツールを標準化することで、AI開発期間を以前の半分以下に短縮できました。
モニターの画面解像度が変わるとGUIのレイアウトもそれに合わせて自動的に拡縮されるのは良いのですが、思いもよらないところで文字がはみ出たり、ボタンが消えていたり、細かいズレが発生するものです。しかもテストで見付けにくい!...このような悩みを持っている人は多いと思います。
今回は高性能化しているテストツールを駆使してGUIのレイアウト崩れを自動検出してしまおう、という取組みです。
ポスターセッションの後はホストの宮台事業所とMNグループの有志で座談会。
普段なかなか話すことが出来ない人達と、大変楽しい時間を過ごすことが出来ました。
今回、ポスターセッションの良さを再認識した人が多かったです。自分たちの技術や成果を発表して、皆さんが興味深く見てくれて気軽にフィードバックを貰える、とても良い機会になりました。「このような取組みを是非続けてほしい」という声も複数頂きました。協力頂いた皆さん、ありがとうございました!
新人さんいらっしゃぁ~い(その2)
こんにちは!igoです。丁度本日(2022/07/28)、新人研修の成果発表が行われています。4月の入社からこの時期までみっちりと研修を行う我が社、いかがでしょう?手厚い教育姿勢じゃありませんか?
さて、前回の続きです。新人研修の一コマからその講座の観点3つを紹介、という内容でした。
観点その3は「数学だいじ」です。
今の40代が小中学生の頃熱狂したあの国民的ロールプレイングゲーム、○○クエのモンスターについて「はぐれメタルを仲間にする(1/256の確率)ためには何回倒せばいいでしょう?」というお題や、「3Lのバケツ一杯分の水と、赤いインクで汚れたコップがある。用意された水だけでこのコップを洗うとき、最もきれいになる洗い方は?」「E、F、6、5の4枚のカードがある。Eのカードの裏は必ず5であるというルールを確認するためにはどのカードをめくる必要があるか?(※1)」といったお題からこちらで適宜選んで出題します。前2つの問題は指数の感覚、一番最後は命題と論証系のお話ですね。
(※1)小学生の頃よく遊んだ隣の子はEF65にめっちゃはまってました。ブルートレインの話しか出てこない時期があったのをよく覚えています。
指数はソフトウェア開発ではとても大切な武器だと考えています。
上記のはぐれメタルが「256回の試行で1回発生した不具合の修正確認、何回再現テストをしたら充分?」というお題に変えた瞬間、一気に開発のお話になりますよね(※2)。
(※2)確認のための試行回数は3倍を目安に設定するといいです。1-(1-1回発生する確率)^(3×1回発生する確率の逆数)が大体0.96です。
また、それ以外にもWindowsのストレージへの遅延書き込みは書き込み待ちデータの1/8を毎秒ストレージに書き込む(※3)、なんて絶妙な数字を見るともう、ね、どうしてこの数字なんだろう?と(※4)。
(※3)M. E. Russinovich, D. A. Solomon and A. Ionescu, “インサイドWindows 第6版 下,” Microsoft Press, 2013. p.413 11.7.2章ライトバックキャッシュと遅延書き込み
原著のWindows Internals、第7版の下巻が2年ぐらいリリース延期を繰り返していましたが、ようやく第7版の下巻が出ますね!
(※4)ブラウザのURL欄に「y=(7/8)^x」を入力して表示されるグラフのx=30のあたりの値を眺めてみましょう。大体30秒ぐらいで書き込みが完了するような数字を設計しているのに気づきます。
コップ洗いの問題は高校化学が頭の片隅に残っている場合、「溶解度次第では?」なんて議論も出てきます。
因みに「洗いもんちゅーのは指数だからね、洗剤で洗った後のすすぎは5回以上やらないと…」等と家庭内で発言してはなりません。家庭内不和の原因になります。例えお子様に対しての指導の時だとしても周囲をよく見回し、他に聞いている人がいないこと、くれぐれもご確認ください。さもないとパートナーの家事への批判と受け取られる重大な危険があります。
命題と論証は条件分岐の設計や組み合わせの導出など、これもまた開発で良く出くわすお話ですよね。
ド・モルガンの法則、覚えてますか?えらい長い条件文を見たときに、うーん、これ、こんなややこしい条件にしないでもいいのに…と悲しくなったり、バカボンのパパの「反対の反対は賛成なのだー!」という言葉が頭に浮かんだり。
ちょっと脱線しますが、「トゲアリトゲナシトゲトゲ(俗称)」というハムシ(昆虫)、知っていますか?体中に棘があるハムシを「トゲトゲ」と呼んだところ、同じ仲間に棘のないモノが見つかったので「トゲナシトゲトゲ」とした、ところが「トゲナシトゲトゲ」の仲間の中に棘があるものが見つかったので「トゲアリトゲナシトゲトゲ」となった、というお話です。
製品名称や機能名を付ける時、直感に頼るのも良いのですが、あまり安直につけると後でカッコ悪い事になり得ますよね。
さて、ここ2回、新人研修からの紹介でした。どうです?面白そうでしょう?そこのあなたも混ざりたくないですか?そんなあなたは是非富士フイルムソフトウエアの応募をご検討ください!
新人さんいらっしゃぁ~い
こんにちは! ご機嫌麗しゅう! またまたigoです。コラム3本目は本年私が担当した新人研修からのネタです。
数年前、富士フイルムソフトウエアの新人研修の大部分は社員が講師をしていました。私も結構な注力度(大体3週間分ぐらいでしょうか)で講師を担当しており、コマ数が講師中でも一番多いことからカリキュラム設計にもがっつり携わりました。
セルフマネジメント、チーム運営、要望の聞き出し、モデリング、オブジェクト指向設計(Open-ClosedとGRASP)、リファクタ…と、もう、盛りだくさん。流石にあまりに講師側が大変なので、その後社内講師の割合を大きく下げた経緯があります。
そんな中でも1コマ(半日)だけたくましく残っている私の担当からのご紹介です。大きく3つの観点で講座構成しています。ところで3部作って、なんだかかっこいいですよね。だって、トリロジーですよ!ダンテですよ! ボーマルシェにスターウォーズですよ!
講座のお題の中心は仮説演繹です。実験系の大学院で科学哲学の教養科目としてたまに題材にされる、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、引き算の考え方を体験します。
愛媛県立長浜高校水族館部(水族館部があるってさ!羨ましい!)の2014年の研究報告(※4)よりのお題です。
(※4) サイエンスメンターニュース Vol.1, No.6, July,2015, 日本科学協会
この報告の海水の組成に着目した実験設計を題材として取り上げています。
「イソギンチャクはなぜクマノミを刺さないのか?」というお題に対し、「海水に対しては反応していない(海中で刺しっぱなしになっていないですからね)」「物理刺激に対しても反応していない(岩にあたっても刺さないですからね)」といった観察結果を前提として「イソギンチャクが刺す条件を見つけるための実験を考えよう」のアイデア出しをします。
大抵は数分もせず発想に行き詰まるため、開始直後にヒントとして海水組成を新人の皆さんに提示した上で「海水に対して反応しない(=イソギンチャクが海水と判断している)」条件を見つけるための実験を考えてもらいます。
この組成表を提示された場合、イソギンチャクにとっての海水を作るのに最低限必要なイオンの組み合わせを導出するために総当たりの実験を始めようとすると10種類のイオンの中から複数種類を選び出す事になります。
∑10Cn(n=1…10)の1022通りとなり、実験の数としては現実的ではありません。そこで引き算の実験を思いつくか?が分かれ目となります。
要は上記組成から一つ抜いた溶液を一つずつ作ってイソギンチャクがさすかどうかを確認し、刺したらイソギンチャクが海水とみなすのに必要な条件じゃん!というわけです(そのイオンは必ずしも1種類とは限らないことに注意)。
上記イオンの数分、10通りの実験のみで済むわけですね。実際にはマグネシウムイオンの有無のみがイソギンチャクの刺胞射出を制御していたことを長浜高校の皆さんは突き止めています。
他にも例えばあの、iPS細胞における24個の遺伝子の中から4つへの絞り込み過程でも同じロジックが鮮やかに決まっています(※5)。
※5 「iPS細胞(人工多能性幹細胞)と山中さん」特技懇 2019年 5月 293号 「そんなに考えないで、1個ずつ除いていった らええんやないですか」の一言が強烈。
これも仮説演繹と同じく使える場面が多々ある発想法で、例えばPCを色々といじったら起動しなくなったなんて時の原因の推定や、要素検討時の試行錯誤において上手くいかない原因候補を挙げる時等、様々な場面で試してみる価値のある発想法です。
観点その3は…と、思いましたがちょっと長くなってしまいましたね。観点その3はまた、後ほど、としましょう。
なんだかTV番組の「答えは後ほど!」的なアレになっちゃいましたね。ごめんなさい!それではまたお会いしましょう!
IPA高度試験作文のキモは文章の構造化にあり
ご機嫌麗しゅう!またigoです。私の住む南足柄では拡大造林政策の恩恵(?)にあずかり、毎日なんだか目が痒いような鼻がムズムズするような、そんな季節となりました。
戦後の我々の祖父や曾祖父世代の旺盛な住宅需要の結果の木材不足、それによる国民の不満を受けて林野行政の急拡大、それでも足らずに海外に頼り木材輸入緩和、結果、杉が育ち切る前に海外のぶっとい、いい木材が低価格で入手できるようになる、そこで競争力確保のための国内材安売りによる価格崩壊、で、林業が支えきれずに最低限の森林整備でしのぐ、結果杉は伐採されずに元気に花粉をふりまく、という何かが吹いたら桶屋が儲けたような、そんな流れですね。
こういう経緯をよくよく腹落ちすると一概に行政や政治家に不満をぶつけても仕方ない(そもそも国民の願いだったわけですから)、じゃぁどうにかできないかなぁ、とひとまず家の掃き・拭き掃除(※1)で身の回りの花粉退治を始めるわけです。
(※1) 花粉は水で壊れるため、空拭きのほうがよさそうです。破片にもリガンドがありますからね。
さて、そんな小春日和の穏やかな日は4月のIPA高度試験対策を効率的に進めたいぃ~(※2)。
(※2) 車の運転をしながら母が良く口ずさんでいたものです。
弊社富士フイルムソフトウエアではシステムアーキテクト(SA)、ITストラテジスト(ST)といった高度試験合格の暁には20万円の資格補助金を美味しく頂けます。入社してすぐ試験に合格すれば転職にまつわる収入の不安も幾分解消されるかも。
ところが、我々IT技術者にとってPCも使わずに計3,000字の長い文章を短時間で記述する午後II試験の鉛筆筋トレは苦痛でしかないようです。理系出身な皆さまが多いこともあり、作文に苦手意識を持っている方も多いですよね。
だからこそ事前に文章の構成をパタン化し、当日はただただ文字を書くだけと作業簡易化したいものです。早速過去問を眺めてみましょう。
記述量が最も多い設問イは1,600字までの作文です。義務教育の過程で「起承転結」「序破急」「序論本論結論」なんて形で文章の構造化について習ってきたわけで、IPA試験対策の参考書でもこれらを鉄則としていますよね。が、一番細切れな起承転結で設計するにしても一部当たり1,600/4=400字のネタが必要なわけです。原稿用紙1枚分、丸々を1ネタで記述することになるわけです。これはキビシイ!ヒジョーにキビシイです。
ちなみにこの文章は、ここまで1,000字程度。ネタは花粉→春試験→春試験の作文と大きく3ネタで文章を構成しています。1,000/3=300字強。徒然書くにしても、また、読むにしても1ネタ300字程度が無理ない文量であること、示唆されますよね。
さて、1,600字の作文、どうしましょう?ここで世の中一般の作戦を拝借します。○○には3つある、通称「ポイント3つ」パタンです。設問イは設問アを受けてどう分析したか?その結果どう設計したか?を問うています。従って、設問アの時点でポイント3つパタンを適用しておきます。「機能追加が必要になった背景は3つあった。」と実は3つ、まだ思い浮かんでいなくても書いちゃうわけです。
そして、例えば
- 20年に及ぶメインテナンス開発の結果、似て非なる機能が追加され、ユーザの混乱と誤操作を引き起こしていた。そのため、機能の整理統合が必要だった。
- 合わせてユーザの利用環境の変化によりスマートデバイス等PC以外でのアプリケーション利用が切望されていた。
- 定年後再雇用制度の浸透により画面の文字の大きさに対しての不満が増加してきた。一方、ユーザには若年者も一定数おり、同一端末における表示の棲み分け要望がでてきた。
的に心の引き出しにしまっておいた今の世の中でよくありがちな問題点、要望をそれっぽく列挙しておきます。上記箇条書き3つで計200字程度です。
設問アの800字に対して対象の業務、システムの概要をコンセプトレベルの説明で200字ずつさらに記述すると600~700字程度、これで回答アの完成。
そして回答イへ。【機能統廃合について】【マルチデバイス対応について】【UI改善について】と3つに分けて「アクター毎のユースケースを想定し、それぞれのワークフロー単位で機能化していたため、一つの機能に対してアクター毎に似た実装が複数なされる設計となっていた」「ハードウエアとその制御アプリケーションの境界があいまいな状態で機能縦割りの構造だった。そのため、Viewとロジック実装が密結合しており、PCネイティブな環境で動作させるしかなかった」「ユーザ管理機能はログイン認証のみ。実質アドミニストレータ1アカウントでの運用となっていた。実質的なアカウント管理機能そのものが存在していないため、そのままではユーザ毎のカスタマイズを実現できなかった」とこれまたありがちな分析を大体5文程度で続けるわけです。
で、その構造のまま回答ウへ。「機能とアクターで2次元の表を作成し、アクターの属性を事前条件へと設計しなおすことで1機能複数アクター構造として機能統合、この機能設計に追従するため、コマンドパタンで事前条件判定によるコマンドリスト作成+コマンドリストの連続実行フレームワークの設計とし、機能追加時はコマンドリストを新規に作るのみでコマンドクラスの再利用を促進、機能追加設計を容易にした」「View部分を大きめの1レイヤとしてハードウエア制御から独立させた後、ViewレイヤにV・VMをWeb系のフロントエンドフレームワークを利用して導入、ブラウザ動作とすることでマルチクライアントに対応」「ロールと権限でざっくりと再設計、ロールに対しての要望は特に存在していなかったため、若年・ベテランといった年齢区分を疑似的なロール分類として採用」と続けます。
図にするとこんな感じです。
一箱200字~300字程度で記述するとさほど困ることなく収まりがよさそうです。
この流れを過去問3問分ほど練習したら後は「心の引き出しにしまっておいた今の世の中でよくありがちな問題点、要望」を10個ほど在庫しておきましょう。試験ではそこから3つ取り出すだけ。IPAの高度試験の作文はSA:設計作戦、PM:コミュニケーションや助け合い、ST:先読みと対策、及び効果的な実施時期といった各区分特有のロールプレイを要求されます。自分のかかわっているシステムのユーザ視点での不満、改善要望をいくつか挙げ、それぞれの立場で一段抽象するだけで対処ができます。妄想を膨らませ、引き出しにため込みましょう!
どうです?上手くいきそうでしょう?
さて、それでは練習問題です。
お題:あなたは新々型インフルエンザの猛威に備え、ワクチン予約システムを超短納期で整える事となりました。「ST:先読みと対策、及び効果的な実施時期」な立場で設問ア~ウの要領で作文してみてください。
そんな立場、経験したことないよぉ…という方は身近な企画担当上司や時事ネタなニュースを想定してその立場になって想定してみるといいですよ!
「注射は本人にするものであり、同一人物による複数の予約があってもどれか一つの枠で実施されるもの。予約システムはあくまで順番待ち行列をシステム化する責務に徹することとし、納期・コストを勘案して初版ではシステムによる自治体個人情報との突合せチェック機能の構築はあきらめる。注射実績は自治体による集計に任せることとし、予約システムでの同一人物重複予約は一切不問とする。一方、システムへの不具合指摘が広がることを想定し、ステイクホルダとの合意形成を優先、マスコミ発表用の文案を事前作成するため、コンサルタントを入れる。」といった通例では採ることのできないストラテジックな、ステキな妄想(※3)を楽しく書けるかも。
(※3) 本当にそんな作戦を取っていたかは定かではありません。あくまで私の妄想です。
富士フイルムソフトウエアは通年で社員募集をしています。資格助成も充実しており、検討の価値ありかと。是非是非よろしゅうお願いします!
世の中には2種類の設計者しかいない。モデリングできる設計者とそれ以外だ。
こんにちは、igoです。富士フイルムソフトウエアにおいてメディカル2部門(メディカルネットワークグループ、メディカル機器グループ)の技術責任者を担当しています。今日は我々の部門で行っているモデリング訓練の紹介をしようかと。
ご自身の本棚にある最も分厚い本を選んでみてください。ご家族に「この本どんな本?」と聞かれたとき、納得を得られる説明ができますか? 冒頭からの章立順にそれっぽく筋を説明して、理解を得られるでしょうか?例えば、桃太郎。最も短く説明するとすると「おじいさんは山へしばかりに行きました。おばあさんは川へ洗濯に行きました。桃太郎は鬼が島へ鬼退治に行きました。」とでもやってみますかね。
物事を端的に要約すること、それが抽象化です。抽象化を行うと一般的に物事があいまいになってしまうため、ソフトウエア開発では決められた表現で標準的な図にします(我々、富士フイルムソフトウエアではUMLが使われます)。これをモデリングといいます。数百万行あるソフトウエアを深く理解して継続開発するために必須な能力が抽象化能力であり、抽象化された設計内容を正確に伝えるために大切な技術がモデリング能力です。抽象化能力とモデリング能力、この2つを最大限に利用して適切な設計を行うことで、開発効率は大幅に向上するわけです。そして、これが失敗すると後々の足かせになり、不具合や開発効率悪化として現れるのです。この2つの技能向上こそがソフトウエア設計者の能力の源泉、そう考えて私たちは若手中心にモデリング訓練を継続実施しています。
さて、実際のモデリング訓練では身近なものを題材とします。図1は「カレーライスの作り方」のモデリング(クラス図)。図2は「画像処理」です。どうです、そっくりでしょう? 実際の開発では、せいぜい年に5機能程度しか設計できません。一方、週に一度のモデリング訓練では年に40回以上の設計訓練を行えるわけです。設計行為を疑似体験し、知識→スキルへと昇華させる。これがソフトウエア技術者のための技量鍛錬になるんですね。まず、実際のカレーライスの作り方を頭の中で検証したり、オブジェクト図で表現したりしながら、「カレーライスの作り方は所詮、一口大に切られた食材をその前工程までに作られた調理済み食材があるに鍋に繰り返し投入することでしかない。」といった抽象化(=コンセプトの導出)を行います。その後、そのコンセプトを図で表すとね、とクラス図で表現するわけです。これを15分ほどで一斉に実施し、ホワイトボードにそれぞれ書き出して議論します。着眼点の違いや他人への伝わりやすさの議論は楽しいものです。
私たち富士フイルムソフトウエアで扱う製品の寿命は非常に長く、モノによっては20年以上もメインテナンスしている製品もあります。大先輩が作った製品を上手に理解し、壊さないように機能追加する。あるいは、20年後の後輩が機能追加しやすいように適切にフレームワーク化し、コンセプトを設計に残す。そんなやりがいある仕事を上手に進めるための鍛錬、一緒にやってみませんか?