新卒1年目からのリモートワーク生活 1年くらい経ってみての感想

はじめに

 はじめまして!

 アットウェアでエンジニアをやっているニシカワと申します。

 アットウェアがリモートワーク制度を導入してから約1年と半年が経過しました。

 横浜に残って働くという選択をしたメンバーがいる中で、過去のリモートワークについて書かれた記事で紹介されたように、全国に移住していくメンバーもいました。

 私も移住を選択した1人です。

 当時の私は新卒1年目。右も左も分からない状況でした。そんな状況でどうして移住を決断したのか、実際に生活してみてどうだったのか、自身のふりかえりも兼ねて記事にしてみたいと思います。

移住のきっかけ

 突然ですが、私は現在、兵庫県の豊岡市という街に住んでいます。

 

 関東圏に住まれている方にはあまり馴染みのない地名かもしれません。コウノトリや城崎温泉が有名な、人口7万人ほどの街です。

 引っ越す前、私はアットウェアがある横浜に住んでいました。

 横浜に住んでいたときは、よく近くの公園で散歩したり近所の商店街で食べ歩いたりと、平凡ながらも楽しく暮らしていました。

 

 しかし、そんな中で、ずっとこのままでも良いのだろうかと思い始めました。たしかに今の生活には満足している、しかし、毎日同じような生活で何か得るものはあるのだろうか、と。

 もともと色々なところに行くことが好きで、学生の頃は青春18きっぷで日本各地を巡っていた身です。一箇所にずっといることがむしろ苦手だったのかもしれません。

 そんなこんなで地方移住しようと思ったのですが、問題は行き先です。それに関しては幸いなことに候補がいくつかに絞られていました。

  • 小田原市

  • 京都の二条付近

  • 豊岡市

 いずれも過去に訪れたことがあり、良さそうな場所だと感じていました。ただ、どうせ行くなら一番遠く、日本海側にしようと思いました。

 それで豊岡市に引っ越したのですが、住んでみると住み心地が良くて、気が付いたら1年くらい経ってしまいました。

業務内容とか1週間の流れとか

 せっかくなのでエンジニアらしく技術的なこともちょこっと書いてみます。

 現在の仕事は、特定の画像データから抽出された情報をまとめたサイトの開発・運用を行っています。技術スタックは、React、Java、AWSあたりを使って開発を進めています。

 

 学生時代に一応プログラミングの経験はあったものの、チーム開発の方法やテストの手法など、入社してから初めて学んだことも沢山あります。

 1週間の流れは、過去のリモートワークについて書かれた記事で紹介されている方達とあまり変わらないです。平日は業務、週末は家でゆっくり過ごしたり外に遊びに行ったりします。出勤の時間がない分、趣味や勉強の時間は取りやすいと感じてます。

 ただ、リモートワークだと徐々に運動をしなくなってしまうので、そこだけ注意しています。

1年くらい経ってみての感想

 移住から1年くらい経ってみて、意外とリモートでも働けるなという感想をもっています。

 開発はクラウドサービスが主なので現地に行かなくても作業できます。作業で止まったときは、Discord(通話アプリ)にチームで常駐状態になっているので、すぐに相談できる環境にあります。どうしても1人だけの環境だと心が荒れていく(個人的な見解です)ので、適度にチームや会社の仲間と話す時間は大切だと実感しました。

 それでも、リモートワークが出社に勝るかと問われれると、一概にそうとは言い切れないと思います。移住してからしばらく経ち、チームの雰囲気にも大体慣れたかなというタイミングで出社の機会があったのですが、普段とはまた違う良い時間となりました。

 出社の際は、同じ画面を見ながら実装することで、リモートワークでは得られない適度な緊張感や一体感に包まれ、チームの仲間との絆を深めることができました。

 仮にこの1年を出社して過ごしていたとしたら、直接の交流から得られる力で、また別の学びがあったと思います。

 リモートワークと出社、どちらか極端に偏るというよりも、チームの状況や雰囲気に合わせて適度に使い分けることが大切だと感じました。

週末の楽しみ

 プライベートなことだと、日本海側の冬を経験し、雪の大変さを実感しました。横浜は雪が降ってもせいぜい数cmですが、豊岡市の雪は足が埋まります。雪用に新しく長靴や上着を買ってなんとか乗り切りました。

 

 買ったものつながりだと、車も買いました。必要なものは徒歩で買える場所にあるのですが、車があると遠出の際に便利です。 

 週末は家でゆっくり過ごしたり外に遊びに行ったりしますが、時間があるときは京都や大阪まで足を伸ばします。

 写真は日本三景の天橋立です。自宅から車で2時間くらいの距離にあり、週末のドライブにもってこいの場所です。

おわりに

 この1年を振り返ってみて、色々とやりたいことができた1年になったと感じています。

 エンジニアとしては将来に繋がる開発のスキルやチームで動く大切さを学び、プライベートでは様々な場所を巡ることができました。

 新卒だからという枠組みに囚われず、自らが得たいものを考えて生きることが大事だと思いました。

 課題への素早い対応や他のメンバーへのサポートなど、まだまだ学ぶことは多いですが、自身の成長に繋がった1年だったと思います。また、学びを深め、いつかリモートワークで海外生活もしてみたいという憧れも芽生えました。

 将来、また横浜に戻り出社を選択するのかは分かりません。しかし、リモートワークであっても出社であっても、エンジニアとして根本的なこと、チームで協力して全力で課題の解決に望むことや、atWareのミッションである「システムで人々をしあわせに」ということは決して変わらないと思います。

 今後も、この1年で学んだことを活かし、一生懸命励みたいです。

VPC Traffic Mirroringを使ってみた話

今回はAWSのVPC Traffic Mirroringについて、某案件で検証を行なったので、紹介/注意点/使い所について書きます。

展開中のノードへの通信をサクッと覗きたいなど特定用途として使えるケースがあると思うので参考になればと思います。


はじめに

  • 今回導入を考えたシステムについて、顧客からの要件としては外部システムから本番環境への通信をテスト環境へ転送し、本番環境と同一のデータでテストを行いたいというものでした。
  • 複数ある外部システムとはWebSocketでそれぞれとコネクションを確立し、システムは一度に最大100MB程のデータpushを受信し続けます。
  • VPC Traffic Mirroringを利用してデータの転送が可能であるかを検証し、使えそうならシステムに組み込みたいという流れです。

VPC Traffic Mirroringの概要

  • 大まかにいうと特定インスタンスのNIC(ENI)に流れてきたネットワーク上のpacketを特定のノードへ転送することが可能です。
  • AWSからの説明そのままですが、ユースケースとして以下のようなものを想定しています。
    • コンテンツ検査
    • 脅威の監視
    • トラブルシューティング
  • 転送先はリージョンまたぎやVPC間も考慮されており、マネージメントコンソールのグルーピングとしてはVPCのページから設定が可能です。
  • 料金
    • Traffic Mirroringを有効にしたENIが起動している間、料金がかかります。
    • 東京リージョンであると0.018USD/hour(2023/2現在)
      • 1ヶ月30日とすると30日×24時間×0.018=12.96USD/month
    • そこまでの値段ではないですが、転送先の仕組みなども用意することも考えたら使う時だけ有効にするのが良いかと。

動作/設定

  • Traffic Mirroringを使う際のリソースは以下の呼称で呼ばれます。以降の説明はこの呼称でしていきます。
    • ソース: 転送元(指定したノード(ENI)への通信を転送)
    • ターゲット: 転送先(EC2/NLB/GLB(他VPC宛など))
    • フィルタ: 転送対象(ポート/プロトコルなど指定)
    • セッション: 上らをまとめたもの
    • 設定例は以下。
      • ミラーフィルタ/ミラーターゲット/ミラーセッションの順に上記リソースを設定します。

ターゲット側の準備

  • 転送されてきたpacketをどう扱うかターゲットに仕組みが必要です。
  • 例1. packet解析ソフトウェアにかけて分析
    • tcpdump
    • Wireshark/tshark
    • AWS公式からは以下のようなツールも紹介している
    • 例えばtcpdumpでpacket captureし、出力されたpcapをS3に置くなど。
  • 例2. packetを処理するようなアプリを自作する
    • ターゲットのNICに対しpacket captureをするようなアプリを自作する。
    • この際、転送されてきたpacketのみ処理するような仮想NICを作るなど工夫がいる(後述)
    • 検証ではGo(gopacket)/Java(pcap4j)でアプリを実装した実績あり。

転送されてくるpacketについて

  • ターゲットに流れてくるpacketはVXLANというL2->L3トンネリングプロトコルの形式で流れてきます。
  • VXLANはUDPで扱います。なので再送/フロー制御は期待できません。また、NLBなどを転送先にする場合には順番が維持できないことがあるとのこと。
  • packetにはVXLANのヘッダ(40byte)が付与されており、その後ろに元のpacketが繋がる形。
  • すなわち、元のpacketを取り出したい場合にはVXLANヘッダ部を取り除く必要がありますが、LinuxであればVXLANタイプの仮想NICを以下のようなip(iproute2)コマンドで作成することで自動的に行うことが可能です。
    • 作成した仮想NICをcaptureすることでVXLANヘッダを除外した元のpacketを取得できます。
    • VNIというVXLAN packetのグループを識別するためのIDと転送時に使用するUDPポートを指定します。(マネージメントコンソールで設定した値)
    • Amazon Linux2で動作確認済み。(kernel versionやdestiributionの細かいところの条件は未確認)
    • NICのMTUについての注意もあるので参考に。
      • 説明の通り、VXLANで転送されたpacketはオリジナルpacketよりHeader分サイズが大きくなります。
      • そのため、ソースNICのMTU < ターゲットNICのMTUという関係になっていないとpacketが切り捨てられる可能性があります。(必要なMTUサイズ設定については上のリンクを参照)

$ sudo ip link add vxlan0 type vxlan id 1 dev eth0 dstport 4789
$ sudo ip link set vxlan0 up


検証とそこから見えた注意点

  • 実際の構成を想定して右図のような仮の環境を用意し、要件に合うか検証してみました。

問題

  • 想定するデータ量を外部システムノードからソースに送信->転送した際、分割されたpacket群の途中から転送されて来ない。。。
    • WebSocketでデータpushするデータを1MB/10MB/100MBと順に上げていってみたところ、10MBぐらいから後半のpacket転送がされていないことが判明しました。
    • ソースに配置したアプリへは正しくデータが送られており、最初はターゲット側のpacket captureアプリ設定なりがおかしいのかと思い試行錯誤したがどうもうまくきません。

原因

  • 「なんでじゃ」と夜も寝られなくなった中、よくよくヘルプを見直すと次のようなものを発見しました。
  • Traffic bandwidth and prioritization
    • Mirrored traffic counts toward instance bandwidth. For example, if you mirror a network interface that has 1 Gbps of inbound traffic and 1 Gbps of outbound traffic, the instance must handle 4 Gbps of traffic (1 Gbps inbound, 1 Gbps mirrored inbound, 1 Gbps outbound, and 1 Gbps mirrored outbound).
      • つまりは、ソースの帯域幅について、想定するトラフィックの2倍〜4倍を見積もっておかないといけない。
      • 今回の要件では上り方向への通信のみ転送したいので本番+テスト環境のインバウンドトラフィック用に2倍必要。
      • ポイントはソース(転送元)の帯域幅が大事ということ。
    • Production traffic has a higher priority than mirrored traffic when there is traffic congestion. As a result, mirrored traffic is dropped when there is congestion.
      • つまりは、ソースの帯域が輻輳した場合、packetがドロップされ転送されない。
  • 問題が起きた流れとしては、以下と考えられます。
    1. 大きいデータをソースに向けてドカっと送る
    2. ソースの帯域で輻輳が起こる
    3. 輻輳のために本番トラフィックが優先される
    4. データの途中から転送が行われなくなる
  • ヘルプの通りCloudWatchを監視してみたところ、データ転送に失敗した場合、輻輳によるpacket dropのメトリクスの値が増えており、上記の制限によりpacketがdropされてしまっていることがわかりました。

対策検討

ソースへの通信の輻輳が起こらないようにデータ流量をコントロールできれば良いのではと思い、以下のようなことを試してみました。

  • ソースのインスタンスタイプを上げて、ネットワーク帯域を強いもの(c5n.largeなり)に上げてみる。
    • 100MBを一斉に送ると、変更前よりも転送された量は多くなったが、後半のpacketがdropされてしまう。
  • ソースで輻輳が起こらないようなインスタンスタイプの関係にしてみる。
    • 外部システム(t2.micro) -> ソース(c5n.large)というようにソースへの通信がゆっくり流れる(?)であろう関係にすると100MBのデータも転送ができる場合が増えた。
    • 当然ながら転送対象のデータだけがネットワーク上に流れているわけでもないため、うまくいったりいかなかったり完璧ではない。
  • AWSへ質問を出してみる。
    • どうにかして輻輳を起こらないようにする方法がないかAWSへも問い合わせてはみましたが、今回用途に合致するような方法は見つからなかった。
    • NLBなどにはデータ流量をコントロールするような機能は公開されていない。
    • また、流量をコントロールする用の別ノードを用意するのは今回用途(テスト環境に流す)に対して、対応が大きすぎる。本番環境に影響が出ては元も子もない。

結果

対策の検討結果より、今回用途に適さないところから「使用しない」という結論に至りました。

  • テスト環境へのデータ転送のためpacket dropしても問題はないが、本番環境と同じデータで動作再現したいことから極力dropは避けたい。(そもそもVXLANがUDPということもある。)
  • インスタンスタイプ(ネットワーク帯域)による制御については、今後増加しうる外部システムが増えるごとにサイジングし続けないといけなくなり、現実的でない。
  • 流入制御する別ノードの必要性など本番環境に影響を与えない形での実現が難しい。

まとめ/使い所

  • 「稼働中ノードへの通信を少し覗き見したい」などのケースにおいてはとても有用なプロダクトかと思います。
    • 通信の監視がアプリ組み込みせずとも後付けで可能。
  • システムに取り込むような本格的な利用となると、検証結果を踏まえて以下のポイントを抑えておくと良いかと思います。
    • 転送するデータ量がどのくらいか
    • packet欠損が起きても問題がないか
    • ソースのネットワーク帯域が輻輳を起こさない環境であるか
  • 制限事項がいくつかあります。特にここは一通り目を通しておくべきです。
    • 検証内容から得た教訓として「困ったら基本に戻ってヘルプを読め」というのを実感させられました。
  • その他参考

以上。

yamoryという脆弱性管理サービスを実案件で活用しました

yamoryという脆弱性管理サービスを実案件で活用しました

前エントリーでは組織として社内へ脆弱性対策への取り組みの一環として、yamoryという脆弱性管理サービスを導入するまでをお伝えしました。 今回はyamoryを実践で実際に使ってみて、各々が個別に最適して工夫した所や所感をご紹介したいと思います。

最初はImmediate(即時に影響を受ける可能性)を無くすところから

1つ目の適用プロジェクトの事例です。

スタートアップ系の案件となります。ビジネスモデルを立証や確立を目指していくところから始めるので、コストも限られていて機能実装のバランス感覚が非常に重要になってきます。

プロジェクトが始まってから数年経過していますが、現在もユーザを獲得したり市場の要望に応えていくフェーズの真っ只中で、たくさんのモジュールや個別対応などシステムも大きくなってきています。

その中には初期頃に作ったモジュールも含まれており、特段理由がなければライブラリを最新バージョンにはアップグレードせず、当時の最新版を利用しているモノもありました。

社内にyamoryが導入されたということで、試しにyamoryを使ってスキャンしてみたところ、幾つかキャッチできていなかった危険な脆弱性が見つかり、取り急ぎ対応しました。

やはり、逐一開発チームだけで脆弱性情報をキャッチしていくには時間の都合上無理があるとは感じていたので、yamoryがあると非常に助かるということで、チーム内で相談して本格導入が決まりました。

yamoryを導入すれば脆弱性情報が公開されて即時に対処できるようになるので、対応基準とフローを検討することにしました。

対応方針

  • 危険な脆弱性は迅速に対応して0を維持する
  • 週間レポートで脆弱性が発生したら普段使っているITS(課題管理システム)でチケット化して対応する
  • MinorやDelayedについては把握はしておき、いつ対処するかは状況によりけりということにする
  • 判断できる基準を設けてワークフローを策定し作業をルーチン化する

ということにしました。

ざっくり言うと、赤タグ(Immediate)は逐次対応して即時リリースしていくという方針です。基本的には遅くとも1週間ごとに対応が回っていきます。

yamoryで自動スキャン・作業をワークフロー化することにより、着手予定の実装・運用系タスクやスプリント目標に影響せず、リソースも集中してリズムよく取り組めています。

以下のワークフローが、今回決めて取り入れたバックエンドのJava/Springフレームワークモジュール向けのもので、この他にもフロントエンド向けのワークフローも作りました。

yamory対処ワークフロー

今回立てたワークフローと方針で暫く試してみると、想定していた運用ができ、うまく回っていきました。

手始めにプログラムモジュールに対して脆弱性のスキャンを適用しましたが、Dockerコンテナで運用しているシステムもあります。yamoryにはコンテナの脆弱性スキャン機能も用意されてされているということで、どうするかを検討しています。 コンテナイメージの共有スコープは極力狭めたいという考えがあり、コンテナのスキャンについてはyamoryで行うか、それともコンテナをホストしているクラウドベンダーが提供しているSaaS機能を使うかが焦点になっています。 簡単でしたが、1つ目の脆弱性管理の実践の紹介でした。

CIに簡単に組み込めて安心感を得ることができました

次に、2つ目の適用プロジェクトの事例です。

新規事業のスクラッチからの案件で、スピード感を高めてフィードバックループのサイクルを早めていくことはもちろんこと、機能開発もどんどん行っています。

まず、チームには脆弱性対応へのアイディアとしてyamory活用の提案を出し、採用を即決し、存在する全てのリポジトリのCI Hookにyamoryを追加しました。

設定後は、だいたい月曜日にメールで脆弱性検知の通知が届くので、通知に「気づいた人が対応する」という運用で始めてみました。

暫く運用してみると、yamoryを採用したいと言った人が率先して対応していく流れになり、気づけばいつも特定の人(採用を推進した人)ばかりが対応しているという状況が生まれてしまいました。

個人依存にはしたくないなと思っていたところ、定期的に立てているプロジェクト全体目標の中に「様々なことで個人依存を減らし自動化をすすめる」というモノがあり、チームで対応策を考えてみました。

検討した結果、「検出したらチケット管理システムに脆弱性検知チケットを起票し、チームリーダーが担当者を割り振る」という案が出て、それを実行してみることに決めました。

これで、誰かが率先して対応するという形ではなくなりましたが、誰もが脆弱性対応に貢献できるようになりました。

続いて、yamoryを導入して気づいたことや所感をお伝えしたいと思います。

お悩み発生

yamoryを導入してからは「あぁ、これアップグレードをしないと...」と気にかけなくても済むという安心感を得ることができ、開発リソースも少なく済むという時間を得られた反面、導入した副作用のような悩みも発生しました。

それは何かというと、サービスの課金体系とプロジェクトのモジュール管理体系との兼ね合いです。

本案件ではイベントドリブンでデータを処理するバリエーションが多く、Serverless Functionのモジュールをたくさん用意しています。バリエーションが多い分、コードリポジトリをたくさん作っていたのです。

yamoryは契約毎に「合計スキャンアセット数の上限」が決められており、超えてしまうと追加でパック購入する必要が出てきてしまうそうで、もしかしたら「他プロジェクトや予算を圧迫してしまっているのではないか」という懸念に気づきました。

リポジトリの分け方は、開発スタイルやアーキテクチャ設計や運用設計にも影響してきます。yamoryで契約している数を超えないように、「節約のために本来しなくてもいいモジュールをまとめたり、リポジトリの数を節約しようかな」という意識がでてきます。

他にも、お金とリソースの配慮面でステークホルダーが増えて別視点で配慮する必要が増えました。

幸いなことに、まだ全社のプロジェクトを合わせても上限数には達していないということなので、リポジトリ数(スキャンアセット数)の精査や対応はしていませんが、yamory導入プロジェクトが増えてきたスキャンアセット数割当やプロジェクト毎に利用量に応じたコスト計算や利用料徴収などをしていくことになるのかなという将来をイメージしました。

さらにデータパターンなども増えてくる可能性もあるので、もしかしたら私達のプロジェクトはyamoryの料金形態と相性が悪いかもしれないのかなと。

料金によってSaaSやクラウドサービスを選択したりアーキテクチャを設計するように、yamoryもSaaSと考えれば、料金形態と案件特性との相性で取捨選択をしていき、設計や運用のし易さを加味して、トレードオフすることになりそうです。

ちょっとしたツラミ

もう一点気になったことが、依存ライブラリが内部で使っているライブラリに脆弱性が発見された時の事象です。緊急性が高くないMinorな脆弱性だとyamoryのトリアージで「今は対応しない」としてマークし、検知情報を消し込むのですが、暫く経つと同じ脆弱性がスキャンすることで検知されてしまい、「またこのライブラリが...」となって、警告に対して億劫になってしまいました。

感想をまとめると

悩みは発生したものの基本的にはyamoryを導入してよかったです。 想定していた課題感が別に出たのも興味深かったです。

その他には以下のようなことを感じました。

  • 安心感を含め心理的な影響は多大だなと実感した
  • 脆弱性検知ツールに頼るということは違うプロジェクトでも活用できそう
  • 導入の敷居の壁は料金次第で技術要素としては問題なくフィットする
  • 脆弱性検知ツールの仕様有無に関わらずセキュリティ情報はベストエフォートでキャッチするし情報交換するということはしたい
    • 安心できるから何もしないということにはならなかった
    • 世の情報を全部把握するということを課さなければ負荷に感じない
    • もしかしたら情報収集は一種のライフワークかもしれない

まとめ

今回は2つのプロジェクトで実践した結果のご紹介をしました。 CIに組み込みやすいということで、導入しようと実践したプロジェクトではすんなりと設定・運用までもっていくことができたようです。新たな気づきもありました。

いくら脆弱性対応をしても何かが便利になるというわけではありませんが、安全にシステム運用してユーザさんにも安心してサービスを使い続けて頂くには必要なことですので、これからも目に見えない持続的な価値提供をできように取り組みを拡げていきたいと思います。

心を合わせてともに働く前にやるといいかもしれないワークショップ資料を公開します

心を合わせてともに働く前にやるといいかもしれないワークショップ資料を公開します

突然ですが...

  • チームで仕事をすることってよくありますか?

  • チームで仕事をする際、人間関係に起因しそうな問題で、ストレスを感じることってありませんか?

  • もっともっと効果的なチームになりたいですか?

上記のような問いにあてはまる方は、ぜひ読んでみていただければなと思います。

かくいう私達も上記の問いにはあてはまりますし、なんとかしたいなぁと思っています。そして、私たちは人間の力、そしてチームの力を信じています(信じたい、信じられるシチュエーションを増やしたい。の方がより適切かもしれません)

異なる背景を持ち、違う考え方をするもの同士が「共通の目標を達成するのだ!」

と話し合い、その過程でおきるであろう化学変化と、その結果に価値があると信じています。

効果的な化学変化を生み出すために必要なことはいくつかありそうですが、チームメンバーがお互いのことを知り、安心して意見を言い出せる関係もその一つだと思っています。

このような世界を作ることに貢献できることを期待して下記のようなワークショップをデザインしてみました

  • 参加者が「これからともに働く上で知りたい/表明しておきたい」価値観を洗い出す

  • 上記で洗い出された価値観について、各々が自身の考え(価値観)を表明し、お互いにそれを理解する

  • 上記で表明し理解した、お互いの価値観を尊重する約束事を作成してみる

そして、このワークショップの名前を「心を合わせてともに働くときにやったほうがいいかもしれないワークショップ」と名付けてみました。

具体的にどんなワークショップか、ワークショップ資料をダウンロードしてのぞいてみませんか?もし気に入っていただけたら、ファシリテーターズガイドも用意しているので、すぐにお試しいただけるかなと思います。

資料は以下からダウンロードできます。

ご参考までに、我々が想定しているユースケースの一部を共有してみます。

  • チームが発足したとき

    • チームビルディングの一環として

  • 現在のチームの効果性をあげたいとき

    • チームメンバのことをもっと理解する試みの一環として

  • その他(もしかしたら、下記のケースでも使えるかもしれません)

    • 学校で、新しいクラスになったとき

    • チームスポーツで、チームとして纏まりたいとき

    • 結婚前提のお付き合いを始めるとき

おまけに、弊社内でこのワークショップを実施した際の意見のいくつかを共有してみます。

  • 下記は参加者6名からのフィードバックの5段階評価をグラフ化したものです

  • これは良いものだと思いますね。共有すること・発信することは大事だと思います
  • 時間が足りなくてマニフェストは作成できませんでしたが、対話で価値観のすりあわせができました
  • 新しくチームを作る時はやれたらいいな、と思いました

このワークショップが、よりよいチームになることへのキッカケになれば幸いです。

板垣 哲二、栗山 弘子、梶平 昌邦

リモートワーク制度_とある社員の1日

リモートワーク制度_とある社員の1日

新型コロナウィルスの感染拡大によりわたしたちの生活や働き方は大きく変わり、この経験は、今後の働き方を考えるきっかけになりました。

そして、わたしたちアットウェアSIカンパニー(※1)では、このコロナ禍の経験を活かし、選択的全国世帯でのリモートワーク制度を導入することにしました。

この制度は、各自が自らの意思・責任で、勤務場所(オフィス/自宅)・居住地を選択し、自分らしく働ける働き方を実現するための制度です。もちろん、 一切出社しなくていい制度ではなく、組織活動に必要な場合はオフィスへ出勤することもあります 。

~期待する効果~

  • 1人ひとりが自分らしく働く

    • 自分がパフォーマンスを発揮できる方法を選択できる

    • 幸せ・笑顔につながる

    • 自分の時間計測できる

    • 通勤のストレスから開放される

    • お互いの思いやりがUPする

  • 多様性のある働き方ができる

    • ライフステージに合わせて柔軟に働ける

    • 家族との時間を確保しやすくなる

  • 場所によらず素敵な仲間と仕事ができる

    • 全国採用が可能になる

    • 自己都合で引っ越す場合にも仕事を継続できる

この制度を利用して、居住地を変更した社員のインタビュー と 社員の日常 を2回にわけてご紹介いたします。

※1アットウェアでは、2021年12月よりカンパニー制を導入しています

とある社員の1日

今回は社員数名の日々の過ごし方ををご紹介させていただきます。

◆近隣在住者のケース

  • 勤務形態:基本リモート

  • 出社頻度:週1回

  • 出社する主な理由:運動

  • 居住地:横浜市内、会社まで電車&徒歩で30分

  • 2020年1月中途入社(業界歴20年)

  • 趣味:釣り、ゲーム、猫

基本の週予定(主な作業のみ)

※WG(ワーキンググループ):採用・評価・ブランディングなどの組織活動をグループで行っています

基本の1日

リモートでも出勤する日でも、1日の流れは変わりません

◆遠隔地在住者のケース1

  • 勤務形態:基本リモート

  • 出社頻度:月1

  • 出社する主な理由:プロジェクト定例

  • 居住地:中部地方、会社まで2~3時間

  • 2021年5月中途入社(業界歴6年)

  • 趣味:ちょっとヨガ

出勤がある週の予定(主な作業)

基本の1日

出勤する日の1日

◆遠隔地在住者のケース2

  • 勤務形態:基本リモート

  • 出社頻度:半年に一回

  • 出社する主な理由:GMDay

  • 居住地: 関西 会社まで 5~6時間

  • 2021年5月中途入社(業界歴3年)

  • 趣味:サーフィン・写真・キャンプ

※ GMday:半年毎に開催するアットウェア全社のイベント

大体の週予定(主な作業)

基本の1日

22年新卒研修を終えて

22年新卒研修を終えて

初めに

こんにちは。22年新卒の岡本と申します!
22年新卒3名の研修が終わりを迎え、プロジェクトに参加していく時期となりました。
今回研修を終えてみて研修がどんなものだったのか、自分がどのように成長できたかを紹介していこうと思います。

 

今年度の研修の流れ

まずは今年度の研修の流れを紹介していこうと思います!研修は新卒メンバー3名と、研修サポーターの方々とのチームで行いました。研修の最初に研修サポーターの方々から研修の全体像や守ってほしいルール等、ガイドラインの説明がありました。そして、研修を続ける期間やどう進めていくかはほとんど自分達で決めることができました。とても自由だと思いませんか?しかし、そういった自由に伴う責任として、自分達はどういう姿になることを目標にして、それに向かってどうハイペースで進んでいくかという内容を決める必要がありました。研修で何をするか、どういうふうに進めていくのか、いつまでにどうなっていたいのかを自分達で強くイメージして計画を立てることができたので成長の速度が自分の想像よりとても早かったと感じます。

 

今年度の研修の内容

研修の内容は、ソフトスキルとハードスキルという2つの側面がありました。皆さんはソフトスキルとハードスキルという言葉を聞いたことがありますか?私はありませんでした。ハードスキルというのは専門的知識、すなわちプログラミングのスキルやツールの使い方などを指します。一方ソフトスキルというのは、もっと汎用的なスキルです。例えば主体性やコミュニケーションスキル、仕事をする上での心構えなどを身につけることです。

まず最初に、ソフトスキル研修を行いました。活動の一つとしてアットウェアの歴史や現在取り組んでいることなどについて調べました。自分達で社員の方々にアポイントをとって調べていき、自分達から行動して結果を得るための主体性や、さまざまな制度や現在の活動内容、組織構造、それらができた経緯などの組織で活動していくために必要な知識を身につけました。

同時に、7つの習慣という本を読み、社会人として自立して生きていくために重要な価値観や、チームでシナジーを生んで大きな成果を出すための考え方を学びました。この本に書いてあることはどれも自分の考え方を根本から変えてくれてくれるようなものばかりでした。社会通念に縛られていた自分が新しい考え方を身につけるまで3ヶ月もかかりましたが、仕事上だけでなく、人生を通して役に立つ考え方を身につけられたと思います。この本の内容を理解するために行った取り組みで特に印象に残っているのは、ミッションステートメントという人生の目標を立てるために行った「ミッションステートメント合宿」です。1泊2日の合宿を通して自分がどういう人間に成長していきたいのか、そのために何をする必要があるのかを深く考え人生の目標をたてました。今まで日々を流されて過ごしてきた自分にとって、日々を向上心を持って過ごしていくための軸ができたのがとても大きな成長だったと思います!

 

その後のハードスキル研修では、自分達でほぼ全てのカリキュラムを決めました。新卒メンバー3名で何をするのかを真剣に話し合い、実践に近い形でのプロダクト作りに挑戦しました。アットウェアで多く取り扱っているアジャイル開発に倣い、毎週プロダクトオーナー役の研修サポーターの方と今週どのような価値を生み出すことを目標にするのかを決めます。そしてどうやればその機能を実装できるのか、何を勉強する必要があるのかを細かく考え一週間分の計画を立てるのですが、知識のない状態で計画をたててその通りに実行するのはとても難しく、アジャイル開発の難しさを実感しました。私は今までwebアプリを作った経験がなく実業務への不安が大きかったのですが、研修サポーターの方々にフィードバックをもらいながら実践に近い形で開発をしていくことで自分に足りていない能力や経験が身について実業務に入るのが楽しみになりました。また、新卒メンバーでのチーム開発という形だったのですが、事前にソフトスキル研修があったおかげでチームメイトとのコミュニケーションや関係を大切にし、自分だけでなくお互いの成長を考えあえる研修にできたと思っています。

 

最後に

このブログでは、アットウェアの研修がどんなものだったかを振り返ると共に、自分がどのような成長ができたかを書いてきました。

まとめると、研修を通して自分はこのような成長ができたと感じています。

  • 自分から行動する主体性が身についた
  • 自立して生きていくために重要な価値観を学んだ
  • チームでシナジーを生んで大きな成果を出すための考え方を学んだ
  • 日々を向上心を持って過ごしていくための人生の目標を立てた
  • 実践に近い形のハードスキル研修で、技術的な能力や経験が身についた

アットウェアでの研修では開発に必要な技術だけでなく、自分のさまざまな価値観を変えて社会で生きていく上での能力やマインドセットを楽しく身につけられます。このブログを見てアットウェアに興味を持ってもらえたら幸いです!
私はこれから自分で配属希望を出したプロジェクトで活動をしていきますが、最後に研修後の活動への意気込みを書いて終わりにしたいと思います。
実業務はハードスキルの側面が強く、技術を身につけることにとらわれてしまいそうですが、ソフトスキル的な成長との両方を考えて人として成長していきたいと考えています。その一歩目として、プロジェクトで活動をしていく上でただ流されて活動するのではなく、自分にとっての価値、お客さんにとっての価値が何なのかを真剣に考えて取り組んでいきたいと思います。

yamoryという脆弱性管理サービスを社内に導入しました

yamoryという脆弱性管理サービスを社内に導入しました

アットウェアではシステム開発・運用業務をしていく中で、様々なツールやサービスを導入しています。 ここ数年かけてセキュリティ周りへのアプローチとして、脆弱性管理サービス「yamory」を新たに導入しましたので、どういう視点と取り組みで組織に浸透させていったかを紹介したいと思います。

本記事では2年かけてやった社内への導入編として紹介し、次の記事では実際にプロジェクトで適用した実践編をお届けします。

システム開発をやっていく中で持っていた課題感

システム開発をやっていると、設計手法・実装フレームワーク・マネージメントなど様々な分野でナレッジを活かしてゴールに向かっていくわけですが、ゴールというのは納品を指すのではなく、ファーストリリースも通過して、永続的に価値を発揮し続けられるシステムとチームを形成していくことにあります。

その中で運用という面で避けて通れないのが、セキュリティ対策です。 クラウドパタンのベストプラクティスや最新のライブラリを適用したとしても、時間の経過と共に脆弱性が発見されることは避けて通れません。

システムの多くはMavenやGradleなどで依存関係のライブラリを管理しており、記憶で覚えきれなくなるほどの数になります。

そういう中で、ライブラリのバージョンは機能追加により不定期でアップデートすることもあれば、重大な脆弱性が発見されたタイミングで上げることがあります。

重大な脆弱性が見つかったライブラリ以外についても、「影響度が少ないだろう」とバージョンアップを放置しておくと以下の2つの観点で問題になることが多いので、小まめにアップデートをしていくという方針を取っているプロジェクトチームが多いです。

  • セキュリティホールが重なっているライブラリが依存関係を拡大させビックバンアップデートとなってしまう
  • バージョンが古いライブラリは最新のバージョン(バージョン2つ飛ばしなど)にアップグレードできないことがある
    • リファクタリングの粋を超えどんどん手がつけにくくなる
    • アップデート作業にかける専用予算などを確保して工数の問題が発生しがち

次に、プロジェクト横断に関連する状況をご説明します。

弊社では利用している主要なフレームワークはありますが、プロジェクトチームによって最適なモノを選んでいるため、専任者として全プロジェクトの利用ライブラリを把握してアップデート計画を立て、対応していくという体制をとっていくのはコミュニケーションコストを含め現実的ではありません。 そうなると個別最適となり、各チームで(もしくは中の誰かが)公開されているCVEやIT情報記事をRSSで購読したり、SNSでキャッチした情報でチームごとに対応しています。チームごととはいっても、少しでも効率化や情報共有をしてお互いに助け合っていこうということで、技術・セキュリティを扱う社内チャットへ展開しナレッジ共有を図っていこうという取り組みを長年行ってきました。

しかしながら、全ての脆弱性を自発的(プル方式)に調べていると、作業の重複や抜け漏れが発生する可能性がありますし、人的リソースの使い方がベストエフォートな対応となり最適なリソース配分や時間の使い方ではない状態でした。

最近ではAmazon InspectorやGitHub Dependabotが出てきて、検知する仕組みを利用し、社内横断でナレッジを溜めたり、取り組みがしたいと考えていたところでした。

yamoryとの出会いと紹介

そういった課題感を持っている状況でyamoryというサービスが世に登場して、yamoryのプロダクトオーナーが弊社に以下のような問い合わせをしてくださいました。

「新規事業としてサイバーセキュリティソリューション「yamory」を立ち上げました。 サービスの品質向上に向けて、様々な企業様からお話をお伺いしたく考えております。 「yamory」のサービスについて電話・web会議・面談等でご意見をお伺いできますでしょうか。

これはいい機会だと思い、Webミーティングを開いてお話を聞かせていただくと、以下の機能があることがわかりました。

  • SaaSでサービスを提供しているがソースコードを預ける必要がない
    • 預ける情報は依存関係を示すpom.xmlなどのメタ情報だけでよい
    • ソースコードの管理を最小スコープのまま維持できる
  • 使っているライブラリの脆弱性をリアルタイム(日次やCIと連動)で検出できる
  • 攻撃方法や脆弱性の種類などレポート形式で表示
  • 危険性を段階わけして一覧化・対応するかどうかのステータス管理(トリアージ)ができる
  • 社内の複数チームで利用できる組織機能があり横断した脆弱性状況も把握できる

私達の課題感を解消してくれるツールになりえると感じ、またサービスが開始されて間もないということで、フィードバック&トライアルに参加させていただくことになりました。

会話の中では「こういう事ができたらいいな」という事を開発者とプロダクトオーナーの方と直接会話でディスカッションしながらニーズを伝えることができ、また自分たちのこともより明確に理解できて、いい場となりました。

社内への導入に向けて

何はともあれ実際に使ってみようということで、イメージしていた通りの検知の仕組みで、可視化とハンドリングのサイクルを回していけることがトライアル期間の利用の中でわかりました。

CIへの組み込みにあたっては特別なagentをインストールする必要がなく、「APIのエンドポイントにAPIキーをcurlコマンドで送信すればよい」というシンプルな仕組みで、導入の敷居がとても低かったです。

弊社が主に使っている言語サポートとしては、JVM上で動作するJavaやScalaを始めとする(mavenやgradleやsbt)とJava Script(npm)に対応しており実用に足る状態でした。ただ、トライアル時点ではPythonのpip対応の要望はあるがまだリリースできていないとのことでしたが、対応していく方向性ではあるということでしたので、カバー範囲として充分でした。

いくつかの商用サービスを開発しているプロジェクトチームに評価を協力してもらって、社内の幾つかのリポジトリにも適用してみました。

社内でのファーストインプレッション

全社的に最初の評価をして出たフィードバックは意外な反応でした。

それは「サービスのポテンシャルは高いものの、自分たちのチームがこのサービスを活かし切れる状況ではない」という意見が複数のチームからでたことです。

例えば、SIの案件としてプロジェクトチームが今までセキュリティ対策に対して取っていたアプローチや、顧客と共にマイルストーンを決めて保守開発をしているやり方、プロジェクトによってはファーストリリース前という段階というケースもありました。脆弱性対策は大事だということはわかっているが、シードステージで予算の比重のかけ方のバランスどりに影響するといった点です。

これは私達のフィッティングの問題で、話をよくよく聞いてみると「とはいったものの、ぜひ使ってみたい」という意見がほとんどでした。

いきなり全振りで今までのやり方を考慮せず切り替えるのではなく、ホップ・ステップ・ジャンプ(ふつうのことにしていく)が必要だなと感じて、いつでも辞めれる・強制はしない・関心を高める、といった、推進活動をベースにして導入戦略を立てていくことにしました。

初年度の導入指針

初年度はまずホップをしたいということで、以下の導入コンセプトを立てて行き渡らせることに注力しました。

自分たちが認識していない脆弱性や未来に発生しうる脆弱性にも対応できるように、
アットウェアとして「システム開発をする時にはこれくらいのことはやっているよ」
というレベルの底上げをしていきたい。

社内で年一回行っている全社セキュリティオリエンテーションでも、ひとつのテーマとして話題に触れ、あるべき論を押し付けないということも心がけて、以下のような導入指針をきめて普及を進めました。

  • チーム毎にどのアプリケーションをスキャン対象にするかなどはお任せします
  • すぐ絶対に脆弱性0にする必要はなく誰かに報告を義務付けるということはしません
  • 使いたいという人があればいつでも招待します

契約を結ぶ

トライアル期間の終了に際し、社内からの理解も得てこの取組をさらに推進していくことを決めて、それなりの金額で年間契約を結びました。(専任者を設けるよりは全然安い金額ですが)

契約に至るまでにyamoryの中の方と交流させていただいた中での印象も導入の意志決定に影響したので、幾つか紹介します。

  • 開発者やプロダクトオーナーと直接やりとりでプロダクトの方向性がイメージができた
  • マイルストーンとその意義を聞いた時にパワーをかけ方・優先度の付け方に共感した(将来性)
  • 「社内へ普及しSIという業態で適用する」という弊社の課題感を共有した時のディスカッションで会話のコンテキストレベルが合った
  • 社内への勉強会やデモなど協力を惜しまない姿勢
  • 不安に感じた点について問い合わせたところ真摯な対応で説明いただけた
  • ユーザの意見を大事にしつつプロダクトのビジョンと方向性がしっかりしていた

1年経って普及はできたのか?

できませんでした。

と書いてしまうと誤解を生んでしまうかもしれませんが、yamoryという言葉をちらほらと会話の中で聞くようになったり、社員が四半期ごとに立てている個人目標の中に「yamoryを導入する」と書いてくださる方がでてきました。

非機能要件にあたる脆弱性管理を他の要件と共にバランスよくやっていきたいという意識が導入する前より顕著に高くなってきており、取り組みが作用してくる機運が高くなってきたというのを感じました。

半年後にヒアリングを行った結果、各プロジェクト事情を聞かせてくれました。

わかったことは、「本格導入はまだまだ道半ば」ということです。

そこで、1年目の契約が終わるタイミングくらいにyamoryの開発者とプロダクトオーナーと営業さんにご相談して、社内勉強会を開催していただくことにしました。

勉強会の後半部分で実際にPoCコードが存在する脆弱性を再現してみましょうということで、デモをしていただきました。この勉強会には多数の方が参加して事後アンケートでも非常に反応がよかったです。

「こういうこと大事だよね」という意見や「また勉強会をやって欲しい」という意見をもらいました。

1年目はホップの年と位置づけたので、次の年は更にステップアップしていくにはどうしたらいいかを考えました。

2年目の契約に向けて

今までは私が中心になって推進して私が最終的に判断の意志決定をしていました。 これからさらに飛躍するために、個人ではなく組織としての取り組みに発展したくて、 その輪を拡げてみようということを意識しました。

その時に、yamoryの契約に向けて営業さん・プロダクトオーナーとディスカッションしている時に伝えたのは「社内で一人も継続して使いたいという人がいなければ契約を更新しません」という意志決定の基準です。

つまり、自分のチームや全社で契約金額のコストをペイできるかどうかはさておき、

「もし、どこかのプロジェクトの案件で引き続きプロジェクト予算を使ってでも活用していきたいのであれば継続方向で調整をしていきますが、使い続けたいという声がなければ一旦契約は満了する方向にします。」

ということを全社展開したところ、使ってもらっていたプロジェクトメンバーからの反応は「継続できるなら利用したい」という声がいくつも届きました。

この瞬間に、今まで「各プロジェクトに使ってもらっていた」という状態から「自分の意志で使っている」にステップアップできたのです。

これで、2年目の契約に向けての機運もあがり、後押しをもらいながら期日ギリギリになってしまいましたが、yamoryの初めての契約更新ができました。

2年目でついに実運用で活用が確立

yamoryはサービスとして成長し、ホストスキャンの機能も加わりさらに便利になりました。 Docker対応やライセンス管理機能なども発表され実用性がどんどんあがってきました。

そんな中、CIへの組み込みやITSでのチケット管理フローまで確立できたチームがついに現れました。それに加えて、新規に立ち上がったプロジェクトでも導入されました。

log4j2の脆弱性が世の中を賑わせたりして、脆弱性という話題が賑わった年でした。 yamoryの活用事例のインタビューが他社で発表されたりして、HPに掲載されている導入企業数も増えたようで、弊社取引先も導入していたりして、世の中の需要の実感を感じました。

社内でも実用的な活用ができはじめて、取り組みが実になってきました。

そして3年目の今

こうやって、やったことや感じたことをアウトプットしようという段階まできました。

「世に同様のツールが充実してきてどれを選べばいいのか」という悩みの種も増えましたが、根本的な課題へのアプローチや意識を忘れず、この取り組みを通して文化形成の礎もできた気がします。

どんないいものでも、運用段階に持っていきDevOpsとして融合していくまでが大事で、小さな積み重ねが糧になっていきます。これからもよいサービスやツールがあれば実体験を通して評価し、導入を検討して、よりよいシステム開発ができる組織になっていければと思います。

リモートワーク制度_社員インタビュー

リモートワーク制度_社員インタビュー

新型コロナウィルスの感染拡大によりわたしたちの生活や働き方は大きく変わり、この経験は、今後の働き方を考えるきっかけになりました。

そして、わたしたちアットウェアSIカンパニー(※1)では、このコロナ禍の経験を活かし、選択的全国居住でのリモートワーク制度を導入することにしました。

この制度は、各自が自らの意思・責任で、勤務場所(オフィス/自宅)・居住地を選択し、自分らしく働ける働き方を実現するための制度です。もちろん、 一切出社しなくていい制度ではなく、組織活動に必要な場合はオフィスへ出勤することもあります 。

~期待する効果~

  • 1人ひとりが自分らしく働ける

    • 自分がパフォーマンスを発揮できる方法を選択できる

    • 幸せ・笑顔につながる

    • 自分の時間が確保できる

    • 通勤のストレスから開放される

    • お互いの思いやりがUPする

  • 多様性のある働き方ができる

    • ライフステージに合わせ柔軟に働ける

    • 家族との時間を確保しやすくなる

  • 場所によらず素敵な仲間と仕事ができる

    • 全国採用が可能になる

    • 自己都合で引っ越す場合にも仕事を継続できる

この制度を利用し居住地を変更した社員のインタビュー と 社員の日常を2回にわけてご紹介いたします。

※1アットウェアでは、2021年12月よりカンパニー制を導入しています

社員インタビュー

・名前:吉井

・入社年月:2021年4月入社(新卒)

・趣味:ランニング,旅行,映画鑑賞,FPS

◆どこでどんな働き方をしていますか?

今は、地元の静岡で働いています。働き方としては、基本フルリモートで、毎月1回は横浜本社へ出張し、お客さま含め、顔を合わせて打ち合わせを行っています。

たまに、お客さまのオフィス(都内)で打ち合わせを行うこともあります。

リモート作業といっても、1人でもくもくと作業するのではなく、音声チャットツールを使ってプロジェクトメンバーと会話しあったり、ペアプロしながら進めています。

◆全国居住が制度化される前と後で、働き方や生活で変化した点はありますか?

そうですね、僕の場合は、制度導入前後で、フルリモートは変わっていませんが、気軽に出社する。ということはできなくなりましたね。

コロナ禍になってからの入社だったので、入社してからずっと、「基本フルリモート」でした。ただ、入社当時は、会社に近い横浜市内に住んでいたので、ふらっとオフィスに出勤するようなこともありましたが、地元に戻ってからは、地元のネットワークを活用して、「新しいことに挑戦しよう!」と取り組んでいます。

◆横浜と地元でネットワークの違いはありますか?

地元の場合は、もともと、学生の間に構築できていたネットワークで、横浜では、コロナ禍の特殊な状況だったということもあって、ネットワークの構築には至らなかったですね。

「知らない土地でオンラインで」というのは、難しかったです。オンラインは気軽さもあるのですが、メンバーの名前が覚えづらかったり、会話のフックを見つけ難かったです。

◆なぜ、地元に戻ることを決断したんですか?

もともとこんなに早く地元に帰ることは考えていなかったんです。たまたま住んでいたシェアハウスが閉まることになったのがきっかけです。

1年近く住んでみて、横浜という土地の良さはわかってきたんですが、コロナ禍の生活は、都会だと人との接触数が多かったり、外出がしにくかったり、本来の都会の良さを体感し難かったんですよね。あと、色々なところに住んでみたいという願望があったことや、将来のために軍資金を貯めたいという気持ち、賃貸契約に縛られたくないという想いから、横浜市内での転居ではなく、実家に戻ることを選びました。

◆会社が離れた場所にあることで、不安を感じることはないですか?

ないか、あるか。でいうと、あります。相手の人となりを知る・自分を知ってもらうという関係性の構築に不安を感じています。ただ、飲み会や親睦会は好きなので、参加できるチャンスがあれば、積極的に参加したり、自分からも周囲の人を誘ったりと、不安を改善できるように意識しています。

◆会社の本社機能が近くになくて、困ったことはありますか?

9ヶ月ほど過ごしてみましたが、困ったということはあまりないです。あえて言うなら、健康診断のために出勤するのは大変なので、自分で医療機関を探して健康診断を予約する必要があるということですね。今までは、会社が横浜近辺の提携医療機関を予約してくれていました。全国居住によって、自分でやらなければいけないことが、ごく稀にありますが、地元に帰るということを自分で決断したので、困りごとだとは感じていません。

◆今の働き方で、しみじみと感じる良さ。を教えてください。

会社がシェアオフィスにあるということで、縛られずに働きやすい。とは思っていたのですが、アットウェアでは、社員が制度を作っていくことができるので、有志メンバーで制度改訂に取り組んだんです。その結果、全国居住を会社公認。とすることができたので、今は、縛られていないだけではなく、自分が思い描いていた”多拠点生活”の実現にも近づけていると感じています。

◆更なる改善ポイントをしいてあげるとすると?

僕たちの仕事は、機密情報を扱うので、どこでもふらっと気軽に業務を行うことはできません。例えば、人の目があるようなパブリックな場所で業務を行うことには、まだまだ課題があると感じています。(満員電車で顧客名を出して会話はしない。ことと同じ観点)

より柔軟に働くためには、インフラ整備なのか、各自のセキュリティに対する意識なのか、さまざまな対策がもっと必要だと思うんです。

他にも、チームで業務を進める上で、ほぼあったことがない人と一緒に取り組むことの大変さは感じているので、GMDay(半期に1度のリアル全社イベント)などを活かして、お互いの人となりを知った状態で、一緒に取り組めるとよいと思っています。

Scrum Interaction 2022 のスポンサーになりました

Scrum Interaction 2022 のスポンサーになりました

こんにちは。アットウェアでアジャイルコーチやスクラムマスターとして活動している梶平です。

アットウェアは、2022年9月22日(木)にオンラインで開催される Scrum Interaction 2022 にスポンサーとして協賛します。

個人的な話になりますが、前回の Scrum Interaction 2019 では、ジェフサザーランドさんと、野中郁次郎さんが同じ場所にいらっしゃるという奇跡的な場で、私自身とても興奮したことを鮮明に覚えています。

更に組織変革の事例を多く知ることができたり、参加者同士のグループディスカッションもとても楽しく、学び多き時間を過ごせました。

興奮。楽しさ。学び。

それだけではなく、場から発せられているエネルギーのようなものが自分の中に入っていくような感覚もあり、自身の日々の活動について応援されているような、ありがたい気持ちにもなれました。

今回もアジャイルの力に助けてもらいつつ、自身・チーム・組織の変革に取り組まれている事例や、その中で感じる悩み・モヤモヤを聞き、そして参加者の方々と話し合えることがとても楽しみです。

株式会社アットウェア 21年度新卒採用者 インタビュー動画その1

株式会社アットウェア 21年度新卒採用者 インタビュー動画その1

21年度新卒採用インタビュー その1

第1段は多拠点エンジニアを目指している吉井さんです。以下のようなことを聞いています。

  • 自己紹介

  • アットウェアを選んだ理由

  • アットウェアに入っての感想

  • 入社した時の研修

  • 仕事に慣れていく過程

  • 現在の仕事の進め方

  • 挑戦したいこと

  • どんな人にアットウェアを勧めるか?

株式会社アットウェア 採用チャンネルはこちら

株式会社アットウェア 代表 牧野インタビュー「システムで人々をしあわせにする組織づくりをサポートしたい」

株式会社アットウェア 代表 牧野インタビュー「システムで人々をしあわせにする組織づくりをサポートしたい」

株式会社アットウェア 代表 牧野隆志 インタビュー動画 第2段として、牧野が最近挑戦していることについて聞いてみました。アットウェア、アットウェアベトナム、個人としてどんなことに目を向けているでしょうか?


株式会社アットウェア 採用チャンネルはこちら

2021年11月

採用向けYoutubeチャンネルはじめます。

採用向けYoutubeチャンネルはじめます。

アットウェアの魅力を映像でお伝えしたくて、採用向けYoutubeチャンネルを開設しました。今後不定期ではありますが、動画をアップロードしていく予定です。

第1段としては、アットウェアの簡単な紹介ムービーです。

動画内容の概要

「システムで人々をしあわせにする」をミッションとしている、株式会社アットウェアの会社紹介動画です。

SI事業について

弊社のSI(システムインテグレーション)事業は、主にエンタープライズ(企業向け)に特化し、顧客企業のビジネスを動かす上で必要不可欠なシステムの開発を行っています。

働き方について

システム開発をする上で、顧客企業と「恊働」を行うためのワンチームを結成します。 株式会社アットウェアの社員は、お互いフラットな関係で働いています。上司・部下という関係や、役職(部長、課長、係長)というものはありません。一人ひとりが自分の働き方をし、創意工夫、意思決定おこない生き生きと活動しています。また、個々の能力を最大化できるよう自律型組織の文化を形成しています。

オフィスについて

私達はWeworkコミュニティを通して出会う様々なタイプの人と共創により価値を作り出すことも非常に重要であるとの狙いを持ち、2019年2月に横浜みなとみらいのWeworkに入居しました。残念ながら2020年初頭より新型コロナウィルス感染症の蔓延により、現在はテレワークを強く推奨している状況です。一日も早い、コロナウィルスの収束を願っております。

こちら、Vyondというアニメーション動画作成ツールを利用して作っています。

21年新卒の研修が終わりました🎉

21年新卒の研修が終わりました🎉

始めに

こんにちは、21年新卒の中山と申します!
21年新卒の研修が、7月いっぱいで終わり、8月からOJTという形で新卒4名(西川、平澤、吉井、中山)がそれぞれ違うプロジェクトに参画し、少しずつ開発に入っております。

そこで、このブログでは

  • 研修を振り返ってみて研修がどうだったか  

についてお伝えしたいと思います!🔥

研修を振り返ってみて研修がどうだったか

研修を通してどんな成長を感じられたか

中山:

吉井さんに、「研修を通してどんな成長を感じられたか」について伺ってもいいですか?🙋‍

吉井:

僕たちの今年の研修は、自身で得たい価値に即した目標を設定するセルフ・コントロール型研修だったので、自身で設定した目標を確実に達成し成長していく実感が得られました。

今までは目先の結果に注力してしまい今やる必要がないことはやらないことが多かったのですが、研修中は自分が結果を出し続けていくために必要な土台作りとして、今すぐ必要はないものの重要なことに注力し学ぶことができました。

技術面だけではなく、人として成長をし続けられる良い習慣を身につけることが特に成長した点だと感じています!

中山:

めちゃめちゃいいですね。
確かに、自分で得たい価値に即した目標を設定するから、中長期的な視点でどんなことを研修ですべきか考える必要があって、緊急性は低いけど、着実に良い習慣を身に付けるような考え方は僕も勉強になりましたね🔥
吉井さん、ありがとうございました!🎉

研修で難しかったところ

中山:

それでは、平澤さんに、「研修で難しかったところ」について伺ってもいいですか?

平澤:

そうですね。僕は、「セルフ・コントロール」という言葉を「何事も自力で解決すべき」と解釈してしまっていた場面が多くあったので、研修の初期では、何か困ったことがあってもなかなか仲間を頼れなかったんです。けど、このままだとよくないなと思い自ら質問をできるだけするようにしたんです。そうすると、少しずつ「何事も自力で解決すべき」という考え方から外れることができて、チームで協力して、それぞれの得意分野を出し合いながら進めていけるようになりました!

中山:

セルフって言葉を聞くと確かに、「自分で」という意味になるので、一人で全て決めて目標決めて頑張る、ように思ってしまうかもしれないけど、仕事は一人ではできないし、チームで成果を出すものですもんね、、。僕自身、平澤さんが徐々に自分が分からないことなどを同期とか先輩に積極的に聞いていて、とても素敵な姿勢だなあって思ってました☺️
平澤さん、ありがとうございました!🎉

配属に向けての意気込み

中山:

それでは最後に、西川さんに「配属に向けての意気込み」を伺ってもいいですか?

西川:

はい👍
配属先のプロジェクトでは、日本とベトナムのメンバーが混じったチームでBtoB向けのソフトウェアを開発します。
英語メインのチームで常に考えることが求められる環境ですが、自ら配属希望を出しました。
異なるバックグラウンドを持った人々と関わる中で、エンジニアとして成長し、プロジェクトのさらなる拡大に寄与したいと思っています。

中山:

西川さん、入社した当初からすごくベトナム推しだったので、配属希望出したときに「やっぱり!」と思いましたね笑
英語メインのプロジェクトで大変なこともあるかと思いますが、西川さんのガッツで乗り切ってください🔥
西川さんありがとうございました!

最後に

中山:

はい、ここまで21年新卒の同期3人に研修についての感想を聞いてみました!
アットウェアでは、それぞれの社員がどんな姿になりたいか、どんな価値を生みたいかを考え、そしてその姿になるためには、またその価値を生み出すためにはどんな目標を立てどんな研修をするかを自分たちで決めます。研修中には、悩んだり、一人では達成が難しいこともありますが、そんな時は仲間と相談しながら研修を進めていきます。アットウェアに何となくでも興味がある方はぜひ下のリンクなどからお問い合わせください!それではまたのブログ更新をお楽しみに!

新卒の方はこちらから
中途の方はこちらから

今年も、新人研修がスタートしました!

今年も、新人研修がスタートしました!

春ですね。弊社に、新しい仲間が4人入社いたしました!

本年度の研修もスタートしています。

昨年度から、セルフ・コントロール型研修を実施しました。研修が終わり、そのふりかえりを行い、本年度の研修を見直ししました。 このブログでは、昨年の研修のふりかえりと、本年度の見直した部分をお伝えしようと思います。

セルフ・コントロール型研修

 短くいうと、研修者と運営者が設定したゴールを共有して、ゴールまでのプロセスを研修者の裁量で決める研修です。

 弊社で取り組んでいた過去の研修内容を参考に、どのような研修内容を行うか、「カリキュラムは?」や「タイムテーブルは?」「担当は?」など組み立て、社員のいろいろなアイデアを募って、紆余曲折しながら、研修の設計をしていました。

 並行して、一昨年の弊社で 『7つの習慣』読書会 を行ってました。

 『7つの習慣』の「Win-Winのマネジメント・トレーニング」を読んで、「セルフ・コントロール型研修」に、手段を本人に任せることで、個々人の潜在能力を最大に活用し、主体性をはぐくむ実践経験ができる理想の研修を見出しました。

 私達は、研修者が研修後にどのような能力を身に着けているべきか明らかにして、研修者を全面的に信頼し、手段を押し付けないことで、早く目標達成しようと意欲的になり、望む結果にも、相手の成長にもいち早くつながると、考えました。

 そこで、セルフ・コントロール型研修になるように、研修者へ全面的なデリゲーション(手段は自由に選ばせ、結果に責任をもたせる)のもと、何が期待されているかお互いに理解し、納得するために「実行協定」をまとめました。

「実行協定」

  • 望む結果(カリキュラムの各ゴール)
  • ガイドライン(守るルール)
  • リソース(望む結果を達成するために使える人員・資金etc)
  • アカウンタビリティ(研修なので、理解度の報告)
  • 評価の結果(OJTへの移行の可否)

 カリキュラムは、ハードスキルとソフトスキルを体系化し、各課題のゴールを設定しました。

昨年度のふりかえり

研修が終了し、KPTにそって、ふりかえりを行いました。

Keep

  • ボリューム総量がちょうどよかった。
  • コロナ禍以降も、担当&研修者で制御できた。

Problem/Potential

  • 報告のフォーマットを用意したことで、報告書を書くことがゴールと捉えられ、ゴールまでのプロセスに自由度(創意工夫)が制限された。
  • 研修後、どんな姿になっているかを描いていないので、各課題を消化するだけになってしまった。

Try

  • カリキュラムは最低限を定義し、研修者に研修後のイメージ・目標を最初に想像していただき、カリキュラムに入れたいこと(希望)を盛り込む。
  • 報告の手段も自由にする

今年のセルフ・コントロール型研修

 ふりかえりを受け、今年の研修は、事前に、内定を承諾頂いて以降、新入社員の方々と研修内容のすり合わせの時間をいただきながら、研修内容を組み立てました。

 そして、研修後のイメージ・目標を見出すことを先に行うために、セルフ・コントロール型研修より、前に以下のイベントを行うことにしました。

  • ドリームマネジメント:自分の夢の解像度を上げる。
  • ミッションステートメント研修:自分の軸(原理・原則)を見い出す。

 今年の研修は、もう一つ願い(テーマ)を込めました。

「P/PCのバランス」

 研修は、P(成果:Performance)よりも、PC(成果を生み出す能力:Performance Capability)に重きを置いて、活動する。

(すでに始まっていますが、)これから、新しい仲間が、ワクワクして成長に取り組めるような研修にしたいです。

研修の終わりには、研修をうけたみんなより、レポートをお伝えしようと思います。

新型コロナウィルス感染拡大に伴う弊社の対応について

株式会社アットウェアは、新型コロナウィルス感染症の日本国内での感染拡大に伴い、弊社従業者を原則在宅での勤務としております。 在宅勤務中におきましても可能な限り業務遂行を維持する体制を取って参りますが、郵送物の取り扱いの遅延ならびに弊社代表電話からの担当者への取次時など、ご不便をおかけすることが予想されます。 お取引先様各位におかれましては、ご理解のほど何卒よろしくお願い申し上げます。 なお、お急ぎの場合は、名刺等に記載の担当者連絡先へ直接ご連絡ください。

私たちはミッションである「システムで人々をしあわせにする」の実現に向け、プロフェッショナルなソフトウェアソリューション・サービスを提供しておりますが、在宅勤務中におきましてもこれまでと変わらぬあるいはそれ以上の価値の創造を果たしていけるよう、日々の改善と努力を積み重ねて参ります。新たな挑戦故、ご迷惑ならびにご心配をおかけすることも多々ございますが、ご容赦いただけますようお願い申し上げます。

この難局を乗り越え、一刻も早く日本および世界の全ての人、社会が再び平静を取り戻し、またさらなる経済発展と平和の実現に向け、地域社会の一員として弊社社員一同取り組んで参る所存です。


※※※ 2020年6月30日更新 ※※※
株式会社アットウェアは、新型コロナウィルス感染症の日本国内での感染拡大を受け、3月中旬より弊社従業者を原則在宅勤務としておりました。
5月25日に首都圏の緊急事態宣言が解除されてから一ヶ月ほどが経過し、間もなく当初在宅勤務期間として予定しておりました6月30日となりますが、未だ従業者が安心して安全にオフィスに通勤ならびに就業できる状況とはいい難く、また通勤が避けられないエッセンシャルワーカーの方々などへの接触を少しでも避けるため、引き続き在宅勤務を推奨して参ります。期間については、現時点では明確には定めず、概ねワクチンが広く行き渡るなど状況が改善されるまでといたします。

なお、弊社はこれまでも従業者個人の状況に応じて在宅等での勤務も認めておりましたが、今後はより自分らしい働き方・生き方に重きをおいた多様な就業形態も視野に社内で議論を進め、取り組んで参りたいと考えております。


期間: 2020年6月30日まで 未定(概ねワクチンが広く行き渡るなど状況が改善されるまで)

水島さんを招いてジェネリクス勉強会を開催しました

水島さんを招いてジェネリクス勉強会を開催しました

縁あって@kmizuこと水島宏太さんに社内の技術推進活動の支援をいただいています。
その活動のひとつとして勉強会を開催したのでご紹介します。 コロナ禍の影響でオンライン勉強会です!

水島さんの経験や得意分野を踏まえ、弊社社員からテーマをリクエストさせていただき、アカデミックな話題も混ぜつつ、時にはマニアックな内容も盛り込んでもらっています。

ブログでは紹介できていませんでしたが、昨年より勉強会を開催してきました。

  • ガベージコレクションの基礎と歴史
  • 基礎の学び方
  • コンピュータサイエンスって何だろう?
  • Scala教育悲喜こもごも
  • Javaのジェネリクスを知ろう

この記事では、先週開催された「Javaのジェネリクスを知ろう」の勉強会レポをご紹介します。

Javaのジェネリクスを知ろう

この発表テーマをお願いする時に、実は他にもラムダの話を聞きたいというリクエストがありましたが、ラムダはジェネリクスを理解していることがキーポイントになるため、先にジェネリクスに絞ってお話をしていただくことに。内容はJavaを学び始めた新卒者に役立つような内容でありつつ、ベテラン向けにマニアックな話も入れて欲しいという、やや無茶なお願いをしました。それをうまく落としこんで私たちが聞きたい内容に仕上げてくださいました。ありがとうございます!

発表はJava 1.4までジェネリクスがなかった時代背景から話が始まり、Object型を使うとダウンキャストが必要となり安全性に問題があることをコード例を添えて解説。その後にジェネリクスが導入されるきっかけや歴史に触れて、概要や機能の話をしてくださいました。

発表時間は1時間弱で基本的なところがしっかり押さえられており、初学者でもわかりやすい内容だったと思います。その中でも私が興味深く感じたのは以下の話題でした。

  • 型パラメータの上限境界
  • ワイルドカード

ジェネリクスの機能の一つであるワイルドカードは、リリースされてだいぶ時間が経ってから、安全性の面で問題あることがわかったそうです。OOPSLA2016で公開された Java and scala's type systems are unsound: the existential crisis of null pointers という論文を引用しつつ、自身の考えを述べてくださいました。

危険視すべき問題なのかというと、水島さんの考えではそうではなく、「ワイルドカード単体では発生する問題ではないので、一概にワイルドカードが駄目だという話ではない」ということでした。nullや上限・下限ワイルドカードと組み合わせた時に発生するというもので、nullとワイルドカードという機能の組み合わせによって、安全性上の問題が発生してしまったよと。ユースケースなどの多面性や言語仕様として取り入れられた経緯を追いながら、なぜこの機能は存在しているのか、何がヤバいのかというのがわかって話を聞いていて面白かったです。

コーナーケースなので知らなくても実務では困ることは少ないかもしれないけど、知ったうえでJava APIやフレームワークのコードを読むと、見えてくる世界も違うかもしれませんね。

他のベテラン層の参加者に参加した感想を聞いてみたら「ワイルドカードの元になった理論を発明したのが日本人だって知らなかったし、他の言語でのジェネリクスの話が個人的によかったです。ScalaとKotlinが激似とか、Goでの話など。」と言っていて、新しい発見や新鮮さを楽しめたようです。

2020年にジェネリクスを取り上げていただいたわけですが、時が経ったからわかった事もあり「今だから言える事だけど実はワイルドカードは必要なかったかもね……」というような話ができるのも、今だからできる話題ですね。

たのしかったです。

「みんなのJava OpenJDKから始まる大変革期!」を献本いただき書評しました - 乗るしかない このビッグウェーブに -

「みんなのJava OpenJDKから始まる大変革期!」を献本いただき書評しました - 乗るしかない このビッグウェーブに -

先日(3/11)、技術評論社刊 「みんなのJava OpenJDKから始まる大変革期!」 を弊社牧野のもとに献本いただきました。

以下、そのときのやりとり

牧野「『みんなのJava OpenJDKから始まる大変革期』を献本いただきました!」

私「明後日発売の本じゃないですか!」

周り「せっかく献本頂いたたんだし速攻読んで書評を書いてツイートをしましょう!」

… 翌日 …

周り「そろそろツイートしようと思いますが読みました?」

隣の席の若手「ざっくり読んだのでこんな感じで簡単な感想書きました」

私「手元にまだありません」

隣の席の若手「私さんどうぞ」

私「」

という感じで空気を読んで書評を書くことに。

が、さすがに発売前には間に合わなかったので、機動力のある若手にツイート を譲りましたが、この週末を利用してようやく読むことができたので、遅ればせながら書評(というか感想)を書いていきます。

結論からいうと、「Java が OpenJDK としてオープンソースとなったことで、Java の進化が加速していることがわかり、Javaの躍動が感じられる本」でした。

内容と感想

全6章に渡る本ですが、各章ごとにテーマ・内容が異なっているので各章ごとに書きます。

第1章 Java 9 から 14 までに起こった変化から見るこれからのJava

ちょっと前に混乱をもたらした Java のライセンス変更は記憶に新しいですが、それ以外にも、Java 界隈では Java9 以降現在にいたるまで様々なことがありました。短期間にたくさんのことがありすぎて、情報がオーバーフローしてしまった方もいるのではないでしょうか(少なくとも私はそうでした)。また、その情報も、テック系ブログをはじめ、さまざまなところに分散していて、まとめるのも大変でした。

この章では、その Java 界隈の状況の変化が見通しよくまとめられています。

内容としては、Java 界隈の変化を押さえ、Java 開発体制から、Java9 〜 14 までのリリース内容概要、新しい言語仕様の紹介、これからの機能などがわかりやすくまとめられています。

過去と比較して、何ができるようになったかが把握できるのもさることながら、紹介されている機能・仕様が「何故そのようになっているか」にも言及されていて、現在の Java の機能がいかに使いやすくなっているかがよく理解できました。

第2章 JDKに関する疑問と不安解消! JDKディストリビューション徹底解説

Java リリースモデルの変更があり、その後、雨後の筍の様にたくさんのJDKディストリビューションが現れました。これらのディストリビューションのうち、どれを業務で利用するか迷った経験をお持ちの方は多いのではないでしょうか。

この章では、JDKディストリビューションの歴史から、現在どのようなJDKディストリビューションがあり、どのような特徴をもっているのかが網羅的に解説されています。さらに、どのように選ぶべきかという方針についても言及されています。

これを読んでおけば、JDKディストリビューション選択時のステークホルダーに説明する材料に困ることはないでしょう。

個人的には、BellSoft Liberica JDK が初耳だったので、ちょっと試してみたいと思っています。

第3章 JavaEEからJakartaEEへ 新しいEnterprise Java

20年ぐらい前にJ2EEを使っていましたが、そのときは設定が多く、柔軟性が少ない堅い印象。Java EE7 のときはてらだよしおさんが JJUG ナイトセミナーですごく推してた記憶。その後は進化が滞っていて、今後は余り使うことはないだろう。個人的にはそんな印象の Java EE ですが、 近年開発が再び動き出しています。そんな Enterprise Java の過去から現在についてまとめられています。

この章では、Enterprise Java にフォーカスして、その歴史やアーキテクチャの変遷、最新の Jakarta EE 8 の機能について、網羅的に解説されています。

序盤の歴史の部分は、J2EE を触ったことのある私からすると歴史書的な印象もありましたが、Jakarta EE8 の新機能の部分では、モダンな Java フレームワークの機能を積極的に標準化していこうとする姿勢がよくわかり、変わろうとしているんだ、ということが感じられました。

Enterprise Java の標準としてまとまることで、より開発しやすくなることに期待します。

第4章 MicroProfile が拓く Java のマイクロサービス

前章をうけて、Java EE から派生したマイクロサービスのためのAPI、MicroProfile について書かれています。マイクロサービスは流行っていますが、実装パターンは様々で、開発に時間がかかってしまう印象です。そんなマイクロサービスの実装でみんなが苦労している部分を標準化しようというのが MicroProfile です。

この章では、MicroProfile が産まれた経緯と、その実装方法、機能、そして今後の発展について説明されています。

マイクロサービスとして開発するかどうかは要件によってかわるかとは思いますが、いざマイクロサービスを利用する、となったときにこうした標準があることは助かると思いました。個人的には、今後の発展に含まれていた、「Reactive対応」「LRA対応」が興味深かったです。とくに、LRA(Long Running Actions)についてはマイクロサービスを作る上でいつも悩まされていたことなので、今後の動向に注視していきたいです。

第5章 ネイティブイメージ生成で注目! Java も他言語も高パフォーマンスGraalVM

昨年行われた JJUG CCC などのイベントでも、GraalVM と名のつくセッションは人気でした。その事実からもわかるように、GraalVM は、おそらくいまJava開発者の間でもっとも興味が惹かれている技術ではないでしょうか。

しかし、昨今のFaaS勃興の背景から、GraalVM はどうしてもネイティブコンパイラにフォーカスしがちです(私もその一面しか見ていなかった感じです)。しかし、GraalVMはそれだけでなく、多言語実行環境としての一面もあります。

この章では、GraalVM と HosSpot VM の内部構造を比較し、Graal VM がどのように動作しているのか、如何にして多言語実行環境を実現しているのか、ネイティブコンパイラがどのように動作しているのか、などが記載されていて、いままで曖昧だったGraalVMの全体像が明確に見える思いでした。

また、GraalVM の具体的な適用事例も幾つか紹介されており、この中でも興味深かったのは、リアクティブストリームを使ったアプリケーションにおいて、JITコンパイラをGraalVMのものに置き換えることで、最適化が図られる可能性があるという内容でした。

このことが必要になる大規模なプロジェクトはそう無さそうですが、今後の引き出しとするためにも、手元で試してみたいと思います。

第6章 マイクロサービス、クラウド、コンテナ対応

最後は、最近のJavaというより、Java界隈のフレームワークについての内容です。

Javaのフレームワークは、現在では Spring Boot が隆盛を極めているように思えますが、システムのクラウド化にともなうフレームワークに対する要求の変化から、新しい軽量なフレームワークが数多く誕生しています。その中から、Micronaut / Quarkus / Helidon を実際の実装・コード例を通して紹介しています。

実際に記載されている内容通りに手を動かすことで、ハンズオン的に各フレームワークの機能を知ることができますが、個人的に重要と感じたのは、最近のフレームワークに求められているものについての記事でした。

昨今のクラウドやマイクロサービスが求められているなかで、新しい軽量フレームワークには可搬性(Portability)や観測性(Observability)、非同期処理などが求められているとのこと。とくに「観測性」については、強く言及されている印象で、私も業務中、実装しているときに忘れがちな側面ではあるので、紹介されている軽量フレームワークを試しながら、どのように実現されているのかを確認したいと思います。

まとめ

Java開発をやってきた人の中には、長く進化が止まっていた時代のイメージから、「枯れた技術で長く続ける」という発想を持っている人もいるかと思います。しかし、時代は移り、Java は半年ごとに機能追加が行われ、常に新しいパラダイムを取り込むようになりました。

そうした状況の中、この本は、Java 開発者が今まさに読んでおくべきものだと感じました。一年後では遅いです。なぜなら、今の Java は進化を続けていて、数年後には、この本に書かれていることに加えて、さらに新しいパラダイムがやってきているかも知れません。

Java を使う開発者である我々も、常に新しい技術を学んで、この先生きのこれるようにしなければなりません。また、世の中のシステムが陳腐化することも避けたいです。

この本の序文において、著者の一人であるきしだなおきさんは以下のように書かれています。

Java はみんなで作るものになりました。

この言葉は、言語開発者にだけ向けられた言葉ではないと思っています。 我々開発者も、新しい技術を学び、学んだ知識を共有して、よりよいシステムをつくれるようにしていきたい。

この本を読んでその思いを新たにしました。

逆すえなみチャンスのムーブメントに乗っかりで開催したら最高だったお話

逆すえなみチャンスのムーブメントに乗っかりで開催したら最高だったお話

すえなみさんが主催している「すえなみチャンス」が面白そうだなと思って、アットウェアで逆すえなみチャンス的なことが開催できたらいいなという所から、トントン拍子で話が進み実現しました!

「すえなみチャンス」についてご説明をすると、参加者はすえなみさんの知りたい話をトークする代わりに、すえなみさんに焼肉をご馳走してもらえるというイベントです。それの逆バージョンをしてみたいというのが、今回の趣旨です。

開催レポを書いたのでご紹介します。

TL;DR

  • 二部に分けて開催したことで参加者が楽しめ、エッジの効いた雰囲気を作ることができた
    • 楽しめるように企画して楽しんだ!
  • 逆すえなみチャンスはプチカンファレンスかと思うくらい最高の時間だった
    • またやりたい
  • アーキテクチャを体現するということは強いメッセージ性があるので、感受性を養ってコミュニケーションしたり表現する事が大事。

第一部

第一部は、スライドを使ったオーソドックスな発表形式で、お話を聞かせていただきました。
発表者はすえなみさんと、すえなみさんをご紹介頂いたかとじゅんさんをお招きし、2名の発表となりました。

一人あたり30分から1時間程度の発表時間でお願いしていましたが、当日はお二人で1時間30分ほどとなり、発表のボリュームとして駆け足にならず、じっくりお話が聞けて、ちょうど良かったです。

すえなみさんがT字形ERの E-E 関連についての考察を話している姿

すえなみさんがT字形ERの E-E 関連についての考察を話している姿

かとじゅんさん

MSA(マイクロサービスアーキテクチャ)がテーマです。

昨今、世の中でマイクロサービスについて言及されたり・取り組んでいる事例があるなかで

  • 今まで「モジュール」と言われていたものと「マイクロサービス」はどう違うのか、共通性は何か。
  • 複雑性があるものをそのまま設計・実装するのは大変だけど、どういう考え方をするとよいのか。
  • 分割するアプローチ(分割統治)の必要性が、どういう経緯で出てきたのか。

というようなを切り口にして話してくださいました。

最初、「過去の文献や実践者とのディスカッションの中でも、最適解は見つかっていないけどドメインで分割すると良さそうという流れがある」というところから話が始まりました。そうやって歴史から紐解いていくことで、マイクロサービスの意義へと繋がり、幅広い参加者に向けた話なんだなと、発表への期待を持ちました。

私の所感を書く前にアットウェアの背景をお伝えしておくと、アットウェアでは技術的裁量があることを大事にしています。ビジネス要件やお客様の状況や運用のことも考えて、枯れた技術だけでなく、事前に試した上で最新の技術まで組み合わせているほか、言語やツールも選定して、アーキテクチャや運用の仕組みを考えて設計していきます。そういう背景を持ち合わせている聴衆に向けて、マイクロサービスのメリットの一例として以下のような事を紹介されていました。

  • 要件に合わせて言語やツールを選べる
  • 裁量が持てるのでモチベーションが持てるチームビルディングを試行できる

当日の話で一番印象に残っているのは、システムの構造には組織構造が大きく関わるという話です。

マイクロサービスアーキテクチャは、システムは人が作っているという事実を踏まえて、うまくやっていくためのアプローチがコンセプトとして込められているといいます。 個人的に分散化やクラウドなどの技術は関心が高い分野なのですが、それだけでなく、チーム開発という観点からも言及されていたのが、一層の興味を引き立てられました。 発表を聞いて、組織構造には利用者だけでなく、開発者・運用者として関わる私たちも含まれており(あってますでしょうか)、システム間の認識合わせやRESTインタフェース定義などに集中しすぎて、視点が狭くなりすぎないよう、モジュール化のさじ加減も大事なんだということを改めて意識しました。

最後にいくつかあった質問の中から興味深い内容をご紹介します!

  • Q. マイクロサービスの分割はトランザクションの単位で分けるという考えについてはどう思うか?やっている人の事例を聞くと2フェーズコミットすごく大変そう。分割労力に見合うのかと考えてしまう時がある。

  • A. サービスが別れると2フェーズコミットが必要な時はあるが、関心が強いものだけど業務が違うといったようなケースでは分割が難しい場合がある。そういう疑問こそ分散システムの難しさでSpotifyがとったアプローチは「モジュラモノリス」というトランザクションを共有するやり方をとっている。

この質問のやり取りを聞いて感じたことは、そうするとデータベースの共有のことを考えたり、DevOpsの事情で立戻って考え直したりすることあるだろうし、システムを作るのって面白いなぁと思いながら質疑応答を聞いていました。

すえなみさん

  • アーキテクトとしてチーム開発がうまくいくように考えてやっていること
  • プロダクトやビジネスに影響してどんなことを大事にしてアプローチしているか

というテーマを事前にリクエストして発表準備をしていただきました。

当日は、ソフトウェアアーキテクチャを軸に置いてコミュニケーションすることで、エンジニアとビジネスサイドが意思疎通できるという切り口で話をしてくださいました。

ソフトウェアアーキテクチャの説明で「抽象化と問題分割によって複雑性を減らす」ということが言及されて、かとじゅんさんの発表の繋がりがあってすごくいい感じでスタートしました。

Lean Architectureという書籍に書いてある「what system is」と「what system does」というフレーズを紹介してくださり、システムの特性には2つの観点があり「そのシステムが何か(システムの構造や状態を示す)」「そのシステムは何をするのか(システムの振る舞い)」があるとのこといついて解説頂きました。

それに加え、ソフトウェアアーキテクチャは「what system is」を規定するものなんだけど、これ以外に「what system can't (システム制約)」も含まれているのだという持論も述べてくれました。

開発者以外とのコミュニケーションについて話題にした時は、キングダムという漫画の「法治」という概念を言語化していくシーンをメタファとして、ソフトウェアアーキテクチャとの関連性を説いてくれました。 ソフトウェアアーキテクチャが発するメッセージ性の意味について、しっかりと受け止めました! 「法とは願いだ」というフレーズが意味するところ、「結果から考え始めるべきではない」というあるべき論、開発者を楽にしたり都合をよくする為ではなく「実際に利用するユーザ」のこと、「誰にとってどういう価値を提供したいのか」を示すという所に通じている、という考え方。すえなみさんの話を聞いて、普段から自分の行動や考えを深掘りしていこうと心に誓ったのでした...
繰り出される問題提起や持論が「いい話」ばかりで、心の中で頷くばかりでした(笑)

「実際にビジネス価値を生み出すのはアーキテクチャ自身ではなく、その上に乗っかるユースケースがビジネス価値だしていく」という考え・姿勢を持たれているからこそ、普段からコミュニケーションもうまくいくんだろうなと想像(すえなみさんと仕事をする人達の姿や顔なども)できました。

「顧客のビジネスをアクセラレートするシステム開発では、抽象化はビジネスを阻害したり促進もすることがあって、実際の現場のことを理解することで、求められている抽象化に繋がる」と述べられていたのは、ここでもやはりコミュニケーションコストを費やすことの重要性を感じました。

やはり、アーキテクトは顧客に近い位置で活動するのが大事ですね。 切り口や考察の視点が面白くもっと話が聞きたくて、あっという間に時間が過ぎてしまうのが惜しかったです。

第二部

IMG_3809.JPG

雑な感じのスクリーン

場所を焼肉店に移し、お肉を食べながら技術談義をするという感じで開催しました。 すえなみさんに「いつもどんな風にやっているんですか?」と聞いたら、「形式は決まっていなくて、集まる人や回によってバラバラです。食事前に済ませてからやるって事が多いです。ただこのスタイルも興味深いので全然アリです!」とのこと。

お店の一角にバッテリー駆動のモバイルプロジェクターを持ち込ませていただき(事前にお店には電話連絡しご了承いただきました)、参加者全員がLTスタイルでネタを持ち寄って、お酒の肴にしてワイワイやりました。
スクリーンはホワイトフィルムに木の骨枠を組み付け、雑に作って投影しました(骨枠は事前に用意してあった割り箸を雑につなぎ合わせて作成)。 細長のテーブルで奥の人にもしっかり見えて、とてもいい感じにできたのでバーベキューやお花見など野外でも応用できるポテンシャルを感じました。

カジュアルな感じのスタイルで美味しい食事というのがよくて、一番良かったのは、アットウェアからの参加者の6名、1部で発表したすえなみさん、かとじゅんさんを含め、全員がしゃべったこと。そして、社内のメンバーが社外技術者に自分の言葉で感じていることや取り組んでいることを伝えたうえで、コミュニケーション(ラフに雑談)できたというところでした!

技術を肴に楽しむ・共感する・悩みを相談する(考えていることの言語化やアウトプットからのフィードバック)ということを、研修スタイルだけでなく懇親会スタイルで1テーブルで行えるというのはいいですね。お肉も美味しかったし貴重な時間を過ごせました。

技術談義をすることは仕事のようで仕事ではない。そんなよくあるフレーズを実感したひとときでした。 自分たちのあったらいいなが実現できたことはうれしいですし、機会を第一部の形で社内全員に機会も創出できたというのも良かったです。

「また、やりたいですね!」と最後に言ってもらえて、お二人にも楽しんでいただけたのも嬉しかったです。 よかったという話しかしていませんが、これからも積極的にどんどんこういう活動を広げていきたいと思います!

木村宗太郎さんをお招きしてストリーム処理についての社内勉強会を実施しました

木村宗太郎さんをお招きしてストリーム処理についての社内勉強会を実施しました

dotDataの木村宗太郎さんを招いて、「ストリームデータ処理入門」と題した社内勉強会を開催しました。

開催に至った経緯

今回の勉強会のきっかけは、弊社で大規模のストリーム処理を扱うプロジェクトのメンバーでストリーム処理について雑談していたときでした。

そのプロジェクトメンバーの一人である私がストリーム処理に対する技術的興味をもっており、そのことを知った別のメンバーが、過去に ScalaMatsuri 2017 で木村さんがストリーム処理について発表されていたことを教えてくれました。

そこで「社内勉強会をお願いしよう!」と発案があり、共通の知人を経て木村さんにオファーをして快諾いただけたことで、今回の勉強会が開催されることとなりました。

「入門」という名の「全部のせ」

勉強会のタイトルは「ストリームデータ処理入門」でしたが、タイトルに書いてある「入門」以上の充実した内容でした。

「ストリーム処理とは何か?」という基本的なところから、その基盤や構造、利用方法まで、開発者がおさえるべきポイントを幅広く解説され、そのカバー範囲の広さはまさに「全部のせ」。

アジェンダを資料から引用してみましたが、その内容の充実ぶりがおわかりいただけるでしょうか。

  • What is Stream Processing?
  • Data processing patterns
  • History of Stream Processing System Architecture
  • Trouble of Stream Processing
  • Stream Processing system structure
  • Technical consideration points
  • Real Stream Processing performance problems
  • Stream Processing system misconceptions

当日はこちらの資料を使ってお話してくださいました。

それぞれの項目の内容もとても充実した内容で、木村さんも知識を共有しようと熱く語ってくださいました。 その情報量はあたかもバックプレッシャーのないストリーム処理のよう。 私も、情報を取り逃すまいと集中して聞いていました。

特に印象に残っているのは、「バッチ処理はストリーム処理のサブセットである」という概念。 「バッチ処理は、無限であるデータストリームを、一定時間ごとに区切って処理する、ストリーム処理の限定的なモデルである」という考え方ですが、今までバッチ処理とストリーム処理の関連性を意識していなかった私にとっては、目から鱗が落ちるような思いがしました。

勉強会を終えて

今回の勉強会は内容が盛りだくさんで、私もいまだ全て消化し切れていません。

しかし、これまで大まかな理解だった大規模ストリームデータ処理について、どのように構築して、どのようなところに注意するべきか、イメージが明確になったと感じています。 また、弊社で進めているストリームデータを扱うプロジェクトにおいては、勉強会で紹介された処理基盤プロダクトではないKinesisなどを利用していますが、質疑応答でKinesisならではの課題をディスカッションできました。勉強会中で学んだ問題点や解決方法などはプロダクト内容に関わらず、幅広く活かすことができそうだとも感じました。

今後ますますデータは増え続け、リアルタイムに処理しなければならない事例はもっと増えていくことと思います。そうした時代においてのソリューションの一つの選択肢として活用できるよう、この勉強会をきっかけとして更に技術を磨いていきたいです。