ETロボコン実行委員を退任します。

2012年から続けてきたETロボコン実行委員ですが、今年限りで退任させていただくことになりました。

 

就任当時は組込みシステムの開発を行っていましたが、いまは業務内容も変わり、ETロボコンの範囲に収まらない技術を扱うことも増えてきました。

参加者向けの技術教育など私の知見でできることは一通りやり尽くしたという思いもあり、今後は新しい分野に取り組んでいきたいというのが、退任の一番の理由となります。

 

選手時代も含めるとちょうど10年間の活動となりましたが、多くの方に巡り合うことができ、皆様との交流の中で色々な考えに触れたり、普通にサラリーマンをやっていてはできなかったであろう素晴らしい経験を沢山させていただくことができました。


また、活動を通じてソフトウェア設計からマネジメントに至るまで多くの知見を勉強することができ、今の業務にも大変役立っています。
本来は直接お会いして挨拶したい方が大勢おられるのですが、失礼ながらこの場でのご挨拶とさせていただきます。

 

今後もエンジニアとしての人生を歩みますので、他の場所でお会いする機会もあると思いますが、その際はよろしくお願いします。

f:id:tamagawaconan:20191215110722j:image

写真は中四国地区実行委員の皆さまからいただいたレーザーポインター。これからも情報発信していきなさいということですかね(笑)

これまでありがとうございました。


今後もよろしくお願いいたします。

はじめてのキャッシュレスカフェ

あのクラスメソッドさんがキャッシュレスカフェをオープンしたそうです。 

前々から気になっていたのですが、先日東京に出張する機会があったので昼食を兼ねて立ち寄ってみることにみました。

classmethod.jp

 

f:id:tamagawaconan:20191011111436j:plain 秋葉原駅昭和通り口から歩いて5分ぐらいのところにあります。

目立つ看板があるので、すぐに見つかりました。

f:id:tamagawaconan:20191011111451j:plain

ガラス張りのオシャレなお店です。「このカフェはキャッシュレスです」の看板が。

 

f:id:tamagawaconan:20191014214507j:plain

お店に入ってから注文してもよいのですが、せっかくなので、先にスマホサイトでオーダーしておくことにします。今回は「パンケーキセット」を注文。

f:id:tamagawaconan:20191014214839j:plain

準備中の画面が出てきました。

店員さんから、「いらっしゃいませ。お好きな席にお座りください」と案内されたので、しばし座って料理を待つことに。

本当にオーダー通ったのかどうか、ちょっとドキドキしながら待ちます。

f:id:tamagawaconan:20191011112759j:plain

注文したとおり、パンケーキセットが到着しました!

店内にセンサーがあるらしく、どこに座った人が何を注文したのかもわかるようですね。

 

店内の雰囲気。ここには写っていませんが、ほとんどのお客さんがノートPCを広げていました。キャッシュレスという珍しい営業形態や、秋葉原という土地柄もあって、ITリテラシーの高い人が来店している印象です。

f:id:tamagawaconan:20191011112824j:plain 

あとで気づいたのですが、スマホの画面が「受取可能」に変わっていました。

スマホの通知を見ておけば、もっと早く食べられたようです。

f:id:tamagawaconan:20191014220100j:plain

 

次は、レジのないウォークスルー決済を試してみたいと思います。

f:id:tamagawaconan:20191011115334j:plain

スマホサイトでQRコードを表示し、カードリーダーにかざして物販エリアに入場します。

f:id:tamagawaconan:20191011114227j:plain

お菓子が並ぶ商品棚。日本のお菓子のほか、海外のお菓子が並んでいます。

f:id:tamagawaconan:20191011114401j:plain

仕組みが気になって店員さんに聞いてみたのですが、商品カゴの下に重量センサーがついていて、重量の変化でどの商品が選ばれたかチェックしているようです。

f:id:tamagawaconan:20191011114614j:plain 

私はうっかり手にとった商品をカゴに戻してしまったのすが、精算は出場するときに行われるので、棚に戻しても大丈夫とのことでした。

現時点では物販エリアに複数の人が入ったときの識別は難しいそうで、現在は1人しか入れないよう制限しているとのこと。こちらについては改善を進めているそうです。

 

ゲートを出てスマホを見ると、ちゃんと精算されてました。

f:id:tamagawaconan:20191014215725j:plain

 

はじめてのキャッシュレス店舗体験でしたが、なかなか新鮮な体験でした。今回は人が少ない時間帯でしたが、レジでの注文待ちは店員さんにもお客さんにもストレスになるので、こういったキャッシュレス化がもっと進んでいけばいいですね。

個人的にはショッピングセンターのフードコートのように家族連れが多くて混雑するような店舗で使えば便利そうだと思いました。家族連れは結構荷物も多いし、オーダーにも時間がかかりますからね。

駅の有人改札が自動改札に置き換わったように、数年後、数十年後にはこういう店舗が普通になるのかもしれません。

f:id:tamagawaconan:20191011111456j:plain



 

 

JBUG岡山#3 参加レポート〜プロジェクトマネジメントとは、人と向き合うこと

今回で3回目となるJBUG岡山#3の参加レポートです。

jbug.connpass.com

第1回、第2回に引き続き、岡山大学構内にある岡山大インキュベータでの開催です。

谷山鐘喜さん 新任コミュニティマネージャーの気持ち

ヌーラボのコミュニティマネージャーに就任された谷山さんのお話です。

f:id:tamagawaconan:20190901104006j:plain

これからのJBUGについて、所信表明?をしていただきました。

  • コミュニティは、参加者が仲良く純粋に楽しむこと。
  • 気持ちが乗っているからその気持ちがSNSなどで伝播し、Backlogを使う人が増える。
  • 合言葉は、We are the world.

どんなことであっても、「楽しみながらやる」ことはとても大切ですね。 楽しそうなところには大勢の人が集まってくるし、そこから色々なものが生まれてきます。 「中身は至って真面目だけど、見た目は楽しく!」がコミュニティが長続きするコツなのかもしれないですね。

JBUGリーダーやりたい人大募集だそうです! まだまだJBUG未開催の地域もあるため、どんどん増やしていきたいとのこと。 「岡山はエンジニアコミュニティの運営慣れしている人が多いせいか、自然と助け合って運営する雰囲気ができているので、 そんなに大変ではない」とはあべさんの談。 岡山に限らず情熱のある方はたくさんおられるでしょうから、勇気を持って手を上げれば色々な人が支えてくれるはずです。

阿部信介さん 大きめのエンジニア向けイベントの運営管理をBacklogでやってみた

岡山のエンジニア向けイベント「オープンセミナー岡山2019」の運営をBacklogで行ったときのお話でした。

okayama.open-seminar.org

これまで使っていたサイボウズLiveが運営終了となり、どうしようかと考えていたところ、JBUG岡山の運営のご縁で、ヌーラボ さんからBacklogとTypetalkを提供いただけることになったそうです。

f:id:tamagawaconan:20190831144731j:plain

  • やりたいことはツールのカスタマイズではなく、企画を運営すること。
  • ツールの思想がわかりやすく、乗っかるまでのコストが低い
  • Backlogはカスタマイズ範囲が良い意味で限定されている。
  • イベント運営はゴールを決めれば、あとはタスクのかたまり。

途中、「議事録を課題に書くかWikiに書くか」の議論で盛り上がりました。 結局のところ「議事録とはフロー情報なのか?それともストック情報なのか?」という話になってくると思いますが、 仕事の内容や進め方にもよって違ってくるのかなという気がします。 幅広い方の意見を聞いてみたいテーマだと思いました。

駒田美沙子さん プロジェクトマネジメントで意識していること

次はJBUG大阪の駒田さん。これまで数々のプロジェクトを経験されてこられただけあって、とても真実味があり、 心に刺さるお話でした。

f:id:tamagawaconan:20190831145441j:plain

プロジェクトマネジメントで気をつけているのは以下の4点だそうです。

  • プロジェクトの目的を明確にする
  • 参画メンバーを知り役割分担する。
  • 決定事項は明文化する
  • 懸念事項は放置しない。

プロジェクトの目的が曖昧だと、リリース直前に追加要望が上がりやすく、プロジェクトが混乱してしまいます。 これを防ぐため「目的を明文化する」「プロジェクトの途中で度々ふりかえる」を実践されているそうです。 やはり「大事なことは何度でも繰り返し言う」ことが必要なのですね。 また、メンバーをよく知り「この人はどんなときにやる気を出して、どういうことでモチベーションが下がるのか」をきちんと見極めることが大切なようです。 個人的に印象に残ったのは「誰が実質的な決定権を持つのか把握する」の部分。 決定権を持っているのは必ずしも偉い人というわけではなく「偉い人がよく相談する現場の人」だったりすることも多かったりします。 確かに、実際に業務を回しているのは現場のキーパーソンの方だったりしますので、誰がそういう役割を担っていて、その人がどういう考えをもっているのかを掴んでおくことは大切だと思いました。

個人的には「本当に決定権を持っている人は、自分自身がそれを持っていることに気づいていない」ということがあると思います。 例えば、あるコアな部分のものづくりをしている人とか、お客さんの細かい業務を知ってる人とか。 前川さんのツイートにあるように、その人に気づかせてあげるのもプロジェクトマネージャの役割ではないかと思いました。

あと心に刺さったのは「懸念事項は放置しない」こと。 「まぁ大丈夫と言ってることは大丈夫じゃなくなります。絶対にです!」と力説されていました。私もそのとおりだと思います。 ちょっとした懸念事項を取り上げることは意外と勇気がいりますし、当人は火中の栗を拾うことになりやすいので大変ではありますが、後でもっと大きな問題にならないうちに勇気を持って摘み取らないといけないですね。

他にもBacklogの実践的な使いこなし方法をたくさん紹介していただきました! ウチで実践してることもあるけど、これからもっと紹介していこう。

佐々木大輔さん カルチャービルディング〜世界最強のAWSエンジニア集団の作り方

f:id:tamagawaconan:20190831151630j:plain

次はクラスメソッドの佐々木さんのお話でした。 会社が大きくなっていく過程で、どうやってカルチャーを作り上げていくかというお話でした。 今でこそ「AWSといえばクラスメソッド社」といえるほどの確固たる地位を築き上げていますが、かつては利益が出ず大変苦労されていたそうです。全然知りませんでした。 ここに至るまでの様々な取り組みをお話ししていただき、大変勉強になりました。

いまのように変化の速い時代では、社内のカルチャーをしっかり醸成し共有することが必要、そのためには企業理念を部門の行動指針に落とし込み具体的にどのように行動すればよいのかがわかるようにすることが必要ということがわかりました。

  • 企業におけるカルチャーとは、意識的あるいは無意識的に共有されている価値観や行動規範
  • カルチャーは企業理念さえあればできるものではない。
  • 企業理念なしでなんとなくできたものはただの雰囲気でカルチャーではない。
  • 企業理念を意識しながら過ごし、実体験からブレイクダウンされたものがカルチャーとなる。

会社の理念は現場から見ると腹落ちしないので、わかりやすい言葉で部のビジネスにマッチした理念を作ったそうです。その中身がこちら。

f:id:tamagawaconan:20190831153630j:plain

企業理念はどうしても抽象的でスケールの大きなものになってしまうので、 部門ごとにわかりやすい言葉に定義しなおさなければいけないということですね。

カルチャーを作っていくために必要なことは、

  • 変化に合わせて自らを変革できる。
  • 失敗を恐れず打席に立ち続ける。
  • リスクを恐れずチャレンジしつづける。
  • 学習しつづける。
  • 一緒に協働できる信頼できる仲間がいる。

だそうです。

お話は人事、給与、採用のやり方にも及び、大変壮大で刺激的なお話でした。 これからの課題は、組織の人数が増えていったときのカルチャーの維持だそうですが、乗り越えていけるだけの勢いを感じました。 今後、クラスメソッドさんがどのような会社になっていくのか目が離せませんね。

これからはクラスメソッドさんのような新しい会社だけでなく、従来の歴史の長い会社も生き残るためにはカルチャーの見直しや制度の再構築が求められてくると思いますが、 今回の取り組みはとても参考になるのではないかと思います。

マネジメントのお悩みディスカッション(兼懇親会)

発表が終わったあとはいつもの懇親会です。 今回は、発表会場にそのまま料理を持ち込み、ディスカッションするやり方でした。 お店でやるのと比べ、自由に動き回れるせいか、色々な人とじっくり話し込めた気がします。

「今日は全体的に人とどう向き合うのかのお話が多かったですねー」といったふりかえりを行いました。 ナカミチさんのLTにあった、

Backlogは課題と向き合うツールではなく、人と向き合うツールである。

の言葉に集約されている気がします。

f:id:tamagawaconan:20190831170109j:plain

グループフォト撮影

最後はお決まりの記念撮影。 だんだん、「b」マークの作り方にも慣れてきました。 (以前は「b」を「d」と間違えそうになったましたww)

その他

今回もプロジェクトマネジメントについて多くの学びがあり、大変実りの多い1日でした。 また、色々な地域の色々な方と知り合うことができ、最近気になっていたリモートワークなど、興味深いお話を聞くことができたのも良かったですね。 これからも、よろしくお願いします。

今回のツイートのまとめはこちら。 ツイートが活発なのはJBUG岡山の特徴ですね。参加してない人でも雰囲気伝わるのではないかと思います。 togetter.com

次回私は、JBUG広島でお話しします。 4月13日のJBUG岡山#2でお話しした内容ですが、その後のお話も少し追加しようと思います。 まだまだお席に余裕があるようですので、興味のある方はぜひ。 jbug.connpass.com

Apple Pencil 片手にBacklogWorld 2019に参加してきました。

2019年1月26日に東京・秋葉原で開催された「Backlog World 2019」の模様をレポートします。昨年岡山で開催されたJBUG岡山で「Backlogの全国イベントがある!」というお話を聞きまして、Backlogを使われている方の経験談を聞くまたとないチャンスということで参加してきました。

backlogworld2019.jbug.info

岡山駅を6時ちょうどに出る新幹線に乗車。目覚ましを二個セットしていた効果もあって無事に起床成功。

噂の「シンカンセンスゴイカタイアイス」を食べながら、本日用のノートの表紙を作成。いつもはPC持参するのですが、今回は荷物を少なめにしたかったのと、昨年末、iPadApple Pencil を購入したので、こいつを使ってみたかったのです。
f:id:tamagawaconan:20190127210535j:plain

会場の秋葉原UDX

長らく秋葉原には行ってなかったのですが(前行ったのはつくばエクスプレスの開通前だったはず)、電気屋さんやパーツ屋さんが並んでいた頃とはずいぶん雰囲気変わりましたね。カフェなんかもあって近代的というかオシャレ。

f:id:tamagawaconan:20190127211756j:plain

少し早めに着いたのでベンチで待っていたのですが、ヌーラボ広報のMeggyさん(@Megumi_Isogawa)に発見されて「今日は遠いところからきてくださってありがとうございます!」とのお言葉をいただきました。私もETロボコンや社内行事の運営を経験したのでわかるのですが、知っている人を見かけても忙しさにかまけて声をかけそこねてしまうものです。そういった中でもしっかりと声掛けとしてくださるホスピタリティの高さはさすがだな、と思いました。

他のスタッフさんもみなさん笑顔で出迎えてくれて、とても和やかな雰囲気でした。

f:id:tamagawaconan:20190127211749j:plain

入り口のところで、JBUG岡山で一緒だった石橋さんとバッタリ。せっかくのご縁なので一緒に回ることになりました。石橋さんは色々なところでPMのご経験があり、聞いた内容について意見交換できたことは大変勉強になりました。ありがとうございました。

会場に入ると早くから大勢の方が来られてます。前の方から席が埋まっており、モチベーションの高さを感じました。

あと、結構いいと思ったのが、開場から開会式の間が1時間と長く、その時間からスポンサーブースが開いていたことです。他のイベントだと時間がなく回り損ねてしまうことも多いのですが、今回はブースをじっくり回ることができました。スポンサー様にとっても多くの人が来てくれてメリットがあるのではないでしょうか。

このあたり、細かいところですがきちんと配慮されているのは素晴らしいですね。

f:id:tamagawaconan:20190127211059j:plain

基調講演「田舎の木材工場で起きた奇跡とその後」

昨年、Good Project Aword を受賞された株式会社diffeasy(ディフィージー)取締役CTO 西 武史さんのお話です。

iPadってなんね?スマホってなんね?」という状態だった宮崎の木材工場が見事にIT化に成功し、それだけにとどまらずITを武器にどんどん成長していくという、まるで映画のようなストーリーでした。

元々は社長さんの「今後絶対ITシステムが必要になる!iPadでシステムを作りたい!」という、とても「ざっくり」した要求だったようです。ここまではありがちな話で「誰にも使われず、役に立たないシステムができあがって終わり」となることが多いですが、西さんたちが違ったのは「従業員の声を直接聞きに行き、現場で起きている真の問題」を見つけに行ったことでした。

これにより「紙の設計図面の管理が大変」「なくなったら探しづらい」「老眼なので字が読めない」などの課題があることがわかり、iPadによるペーパーレスの設計図管理を行うことになったそうです。

f:id:tamagawaconan:20190127225513j:plain

これだけにとどまらず、従業員の方自らApple TVで大画面に設計図を映すようになったり、新工場を建設したりITエンジニアを募集したり超イケてるWebサイト(https://bighouse-miyazaki.jp/)を作っていたり・・・。

西さんも言われていましたが、ここまでの成長を遂げられたのは社長さんの熱意とリーダーシップの賜物だと思います。こういう経営者の方の熱意を形にしてあげられるのがエンジニアという職業だし、そうであらねばいけないなと強く感じたお話でした。

噂では、従業員さんは耳の上に Apple Pencil を挿して仕事をされているとか・・・。一度工場見学してみたいです。

「連絡板」が支える、Backlog嫌いなクライアントとのコミュニケーション

Backlogに限らず、どんなツールにも言えると思うのですが、そのツールになじめない人、拒絶反応を示す人というのはいるものです。このような状況にどう対応するかという点でとても参考になりました。無理やり使わせたり、ユーザに多くを求めるのではなく、手厚くサポートしながら受け入れてもらえる範囲で徐々に導入していくのがよいのでしょうね。また、ツールの特性を理解し、うまく使い分けることも大切だと教わりました。「Slackなどのチャットツールは情報を発信する側と受け取る側で温度差が出やすい」という点も参考になりました。いずれか一方の視点ではなく、色々な立場からの視点で考えていくことが大切なようです。

f:id:tamagawaconan:20190127210328j:plain

プロジェクトの使い分けのコツも教えていただけました。

いま、プロジェクトをどう分けるのがよいか悩んでいたところだったので助かりました。Backlogは、同じプロジェクトにいる人にすべての情報が見えますので「誰をプロジェクトに入れるか」の検討はとても大切ですね。

f:id:tamagawaconan:20190127210337j:plain

 

Backlogでわかる炎上の見分け方、消し方

実は、参加前はこのタイトルが一番気になっていました。

講演者の方によるとやや煽り気味のタイトルだったようで、どうやって回収しようかと言っておられましたが、「事前に考え得るだけのチケットを事前投入し、見直しながらプロジェクトを進めていく」というやり方でした。初期投入チケットの数は500個にもおよぶようです。

コツとしては「チケットはあまり詳細に書かない」「実施するかどうかわからないものも作っておく」「予定納期をオーバーしてもかまわず作る」ことだそうです。

これによって、顧客との間で共通認識を持つことができ、円滑なコミュニケーションを取ることができるようになるため、炎上を防ぎやすくなるとのことでした。

最初に計画を立てるのはある意味「王道」のやり方ではありますが、きちんと計画をメンテナンスしていくことで不確定要素を排除しながら進めていけるのがよいのでしょうね。

f:id:tamagawaconan:20190127210348j:plain

カスタマー・リレーションとエンジニアを繋ぐBacklog

同郷の岡山在住の前川さんのお話でした。

BacklogとGitHubの使い分けは興味深かったです。ユーザ要望をBacklog、実装要件をGitHubに分離することで、開発チームがエンジニア語で会話しやすくなるそう。Backlog課題とGitHub Issueのトレーサビリティを取るためにチケットの粒度に配慮されていたのも参考になりました。同じ岡山だし。また詳しい話を聞きに行こうかな。

f:id:tamagawaconan:20190127210404j:plain

男女不問?!女性脳を活かしたプロジェクトマネジメント

株式会社エクサウィザーズの粟生さんのお話。エクサウィザーズ様はユニコーン企業になる可能性のある会社とのこと。ぜひ実現していただきたいです。

これからのプロジェクトマネジメントは、女性脳の特徴である「計画性」「表現力」「合理性」が重要であるとのお話でした。「女神的リーダーシップ」、面白そうですので読んでみたいと思います。

指の長さで男性脳、女性脳かがわかるそうですが、人差し指と薬指もほぼ同じだった私は、いったいどうすれば?

f:id:tamagawaconan:20190127210414j:plain

できるだけシンプルにしたいプロジェクトマネジメント

ラショナル、IBMマイクロソフトなどでコンサルタントエバンジェリストなどを歴任された長沢さんのお話。プロジェクトマネジメントの年表はとても勉強になりました。西暦2000年前半ぐらいから色々な方法論が出てきているのですね。

自分たちの現状がこの歴史の中のどのあたりなのか、改めて考えてみたいと思いました。新しいものばかり追い求めるのではなく、自分たちに合った方法論を取り入れることが大切ですからね。

f:id:tamagawaconan:20190127211800j:plain

長沢さんには懇親会でもお話を聞かせていただき、かねてから自分が悩んだことのあるマネジメントの方法について秘策を教えていただけました。ありがとうございます。使う機会があれば試してみたいと思います。

f:id:tamagawaconan:20190127210424j:plain

懇親会、その他

f:id:tamagawaconan:20190128001353j:image

懇親会では「プロジェクトマネジメントが学べるボードゲーム(非売品)」が当たるじゃんけん大会がありました。このボードゲーム、ぜひ会社に持ち帰ってやってみたかったのですが、残念ながら初戦敗退でした(子供の頃からじゃんけんは弱い・・・)

でも、抽選で当たる特製Tシャツ、私は外れてしまったのですが石橋さんからお譲りいただけることに!石橋さんありがとうございます!

(ブログもちゃんと書きました)

綺麗な色合いなので、夏になったら着てみようと思います。

f:id:tamagawaconan:20190127211301j:plain

JBUG岡山、広島勢で記念撮影。

また一緒にやりたいですね。

f:id:tamagawaconan:20190127211805j:plain

石橋さんもブログを書かれています。

sinsuke.hatenablog.com

長々と書きましたが、本当に学ぶことの多いイベントだったと思います。

自分たちがちょうどぶつかっている課題を扱っている方も多く、さっそく月曜日から使える内容が満載でした。

最後に、大会運営に携わったヌーラボならびにJBUGスタッフのみなさん、大変お疲れ様でした。とても2回目(JBUG主催では初めてですかね)とは思えない、素晴らしい運営だったと思います。

f:id:tamagawaconan:20190128001459j:image

おまけ 

帰りの新幹線でも「シンカンセンスゴイカタイアイス」をいただきました。

行きは少し溶かしてから食べましたが、今回はカチンコチン状態で挑戦。

前腕部のよい筋トレになりました。

f:id:tamagawaconan:20190127211358j:plain

文系ITエンジニアの皆さんへ

今年のETロボコンもシーズンインしてしばらく経ちましたが、中には文系出身のエンジニアの方もおられるのではないでしょうか?

ETロボコンでよい成績を収めるためには、どうしても数学的な知識が必要となってきます。

  • スムーズにライントレースを行うための「PID制御」
  • 走行体の現在位置を推定するための「デッドレコニング」
  • センサのノイズ除去 など。

PID制御なら微分積分、デッドレコニングなら三角関数など、高校数学レベルの知識が必要となってきます。理系出身の方や現役高校生の方なら特に苦にならないかもしれませんが、文系出身の方とか、高校卒業して何年も勉強してない方にとっては結構大変なんじゃないかと思います。

いや、選手時代の私自身がそうでしたから。
文系出身な上に、高校卒業してウン十年も経っていますから、最初はチンプンカンプンでした。
チーム発足当時はチーム内にも数学ができる方が誰もいない状況でした。
でも、どーしても負けたくなかったので、もう自分でやるしかない!と心に決めて勉強することにしました。それで購入したのが次の本です。

これだけはおさえたい 文系プログラマーの数学知識 基礎の基礎 (プロフェッショナル「確実」養成講座)

これだけはおさえたい 文系プログラマーの数学知識 基礎の基礎 (プロフェッショナル「確実」養成講座)

タイトルのとおり、プログラマ向けの本です。  
身近な生活のなかで数学がどのように役立っているのかをわかりやすく説明してくれていて、とても読みやすいです。
基数変換、三角関数微分積分、行列など、プログラミングに必要な要素の解説も一通りあります。
ETロボコン参加者でなくても、新人エンジニアや基本情報処理技術者試験を受ける予定の方にも役立つ本だと思います。
(この本、残念ながらいまは絶版のようです)

数IA・IIB・IIICがこの1冊でいっきにわかる もう一度 高校数学

数IA・IIB・IIICがこの1冊でいっきにわかる もう一度 高校数学

こっちはかなり内容が濃くて、高校3年分の内容がビッシリ凝縮されているので全部やり遂げるのはかなり時間がかかります。でも、きちんと理解したいならこちらも読んだ方がためになると思います。

今年の新入社員の方にも文系出身の方、大勢いらっしゃると思います。
いま新人研修を受けている方もいらっしゃると思いますが、理系の方のレベル差にショックを受けている方も多いのではないでしょうか?
「自分はこの先やっていけるんだろうか?」と。
いや、自分がそうでしたから、気持ちはよくわかります。当時は本当によくわからなくて同期の中でも下から数えた方が早いぐらいでした。テストの成績が悪くて居残りすることもしょっちゅうでした。

でも、そうした経験値の差が出るのって、本当に入社直後だけだったりするんですよ。そりゃ本当に理系トップクラスの方には追いつけないかもしれませんが、「理系で普通の努力しかしていない人」よりも「文系ですごく努力した人」の方が上になると思います。
ある一定レベルの知識が付いてくると、文書作成能力とかコミュニケーション能力などが逆にプラスになってきます。

実際、文系で未経験だったにもかかわらず、今はトップクラスのエンジニアになっている人はいっぱいいますから。

なので、いまは苦しいかもしれませんが、絶対大丈夫ですので頑張って欲しいと思います。

オブジェクト指向の本

今年のETロボコン中四国地区は本当に学生さんの動きが活発で、とても楽しみな状況になっています。


他の地区でも行われている地域連合も結成されたようで、今週末に第一回目の「中四国連合」勉強会が開催されるようです。
開催案内はこちら→ http://kokucheese.com/event/index/97756/
TwitterFacebookを見てると、今も各チームで色々活動を行っているようです。

でも、時々「デザインパターンわからねー」というツイートもありますね(笑)

せっかくですので、ここで「オブジェクト指向」のことを改めて勉強してみてはどうでしょうか?
過去に私が読んだ本で良かったものを2冊ほど紹介します。


オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座

オブジェクト脳のつくり方―Java・UML・EJBをマスターするための究極の基礎講座


牛尾剛さんの本です。最近は「ITエンジニアの ゼロから始める英語勉強法」という本で有名な方ですね。
「社長、起立!」という面白い切り口でオブジェクト指向をわかりやすく解説しています。
オブジェクト指向の本というと学術的で難解なものが多いのですが、企業出身の方が書かれたせいか、とても実践的でわかりやすかったです。
この本を読んだら、あなたも「オブ脳」になれるかも?

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門


数学ガール」などで有名な結城浩さんの本です。優しげな語り口が大変心地よいです。
GoFデザインパターンをわかりやすくJavaで書き直して説明してくれています。
Java言語で書かれていますが、そんなに難しい文法は使っていませんので、他の言語を使う人でも読み進められると思います。

個人的には、オブジェクト指向は「隠し絵」みたいなものだと思っています。
「わからないうちはさっぱりわからないけど、あるとき突然わかるようになって、その後はそのようにしか見えなくなる」
私の周りでオブジェクト指向を理解してる人も「ある日突然わかるようになった」と言ってる人が多いです。
なので、最初はわからなくてもずーっと根気よく勉強していくことが肝心だと思います。

オブジェクト指向自体はかなり古くからある考え方ですが、企業の現場には未だになかなか浸透していません。
組込み開発など、オブジェクト指向と相性がいいと思うし、うまく活用すればコスト削減にも繋がると思うのですが・・・
理由は色々あるでしょうが、一つは「オブジェクト指向がわかる技術者がまだまだ少ないこと」だと思います。

これからオブジェクト指向を勉強する若い人が増えてきて、技術者が増えてくればこの状況も変わってくると思うので、みなさん頑張って欲しいなーと思います。

※:有名な隠し絵はこちら。みなさんも一度は見たことがあると思います。

C言語の配列とポインタの違いのお話など

今回はちょっと技術的な話を。

私も顔を出している西脇.rb/東灘.rb のメンバーの方からC言語の質問を受けました。
Rubyの勉強会なのにC言語の話題も出てくる、というところがこのコミュニティのよいところです。懐の深さやメンバーの方の強い向上心を感じますね。

その方、Rubyはバリバリですが、C言語は最近使い始めたそうで、

#include <stdio.h>
main()
{
    char  str[] = "hogehoge";   …(1)
    char *str = "hogehoge";     …(2)
    *str = 'f';
    printf("%s\n", str);
}

こういうコードを書いたとき、文字列の設定先を配列にするかポインタにするかで動きが変わるのはなぜか?不思議だったそうです。

char  str[] = "hogehoge";   …(1)

のときは、先頭1文字がfに置き換えられて、狙い通り

fogehoge

と出力されるのに、

char *str = "hogehoge";     …(2)

のときは、

Bus error: 10

とエラーになってしまうのはどうして?という疑問でした。
mac osの場合はBus error、Linuxの場合はSegmentation faultになるなど、OSによって現象は異なります。

たしかに、「C言語ではポインタと配列を区別せず、同じように扱える」と言われていますから、なぜ動きが変わってしまうのか不思議に思えますね。

この問題はわりと有名みたいで、他のブログなどでもよく話題になっているようですが、私なりの説明をしてみたいと思います。

まず、

char  str[] = "hogehoge";   …(1)

は、C言語で配列を初期化するときのシンタックスシュガーで、

char str[9] = {'h', 'o', 'g', 'e', 'h', 'o', 'g', 'e', '\0'};

と同義です。

str[]はローカル変数なので、関数が呼び出されたときにstrという配列用の領域が獲得され、ここに"hogehoge"という文字列が設定されることになります。

この配列は、スタック領域(stack)という読み書き可能な領域に存在します。

一方、

char *str = "hogehoge";     …(2)

のときは、コンパイルされた時点で、"hogehoge"という文字列リテラルが実行ファイル内に設定されています。そして、関数が呼び出されたときに、ポインタ変数strが文字列リテラルの先頭アドレスで初期化されます。

この文字列リテラルは、リードオンリーデータ領域(.rodata)という、読み取りのみ可能な領域に存在します。

つまり、

char  str[] = "hogehoge";   …(1)

は、読み書き可能なスタック領域に文字列が存在するので、文字列を書き換えできる。

char *str = "hogehoge";     …(2)

は、リードオンリーな領域を指し示しているので、書き換えようとするとBus errorとなる。

ということです。

これは、C言語の規約上「文字列リテラルは定数として使用すべきものであり、書き換えた場合の動作は不定である」とされていることに起因しています。そのため書き換えできないようにしている処理系が多いようです(中には書き換えできてしまう処理系もあるようですが…)

C言語は昔よく使ってましたが、最近はややご無沙汰してました。わかっていたつもりでも説明しようとすると難しかったです。
たまには以前習得した技術を棚卸しし、アウトプットしてみるのもいいものですね。