Viewing entries in
イベント

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

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

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

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

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

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

興奮。楽しさ。学び。

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

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

ドメインモデリングワークショップ第2弾

ドメインモデリングワークショップ第2弾

前回に引き続きかとじゅんさんによる勉強会の第4弾で、ドメインモデリングワークショップの2回目を開催していただきました。

前回のワークショップでは、かとじゅんさんのドメインモデリングワークショップを参考にWalletアプリケーションで登場する概念のモデリングを行いました。

今回のワークショップではそのモデルを利用する側や保存する側などにもフォーカスして、アプリケーションの1つの機能として通して動作するよう実装していきました。

クリーンアーキテクチャ

始めに前回のワークショップのおさらいと、1つの機能を通して実装するに当たりクリーンアーキテクチャの解説をしていただきました。

その後JavaチームとScalaチームに分かれ、各チームはモブプログラミングの形式で実装を行っていきました。

IMG_2748.JPG

前回のワークショップで作成したアプリケーションを、まずはクリーンアーキテクチャの構成に変更していきました。

かとじゅんさんのクリーンアーキテクチャの記事で紹介されている構成を参考にinterface-adaptorcontract-interface-adaptoruse-casedomaininfrastructureというプロジェクトを作成し、依存関係を定義しました。

以下はその記述の一部です。(JavaチームではGradleを使用しています)

IMG_2753.JPG

build.gradle

project(':interface-adaptor') {
        dependencies {
            compile project(':contract-interface-adaptor')
            compile project(':use-case')
            compile project(':domain')
        }
    }

    project(':contract-interface-adaptor') {
        dependencies {
            compile project(':domain')
        }
    }

    project(':use-case') {
        dependencies {
            compile project(':contract-interface-adaptor')
            compile project(':domain')
            compile project(':infrastructure')
        }
    }

    project(':domain') {
    }

    project(':infrastructure'){
    }

各プロジェクトが上位のプロジェクトに依存しないことを実装者に強制するために、パッケージではなくプロジェクトで分けるという方法が印象的でした。

clean.png

Wallet作成のユースケース

今回取り組んだのはウォレットの作成というユースケースでした。

アドバイスをもらいながら、Walletの識別子をULIDを用いたものに変更したり、金額をint型からMoney型という値オブジェクトに変更するというリファクタリングを進めつつ、今回新たに作成したuse-caseinterface-adaptorについても実装していきました。

interface-adaptorに作成したWallet用のRepositoryはメモリ上に保存する実装をしたのですが、これはcontract-interface-adaptorにあるWalletRepositoryというinterfaceを実装しています。

後に保存先がDBになった場合でも、contract-interface-adaptorに定義したinterfaceを守った上で新しいRepositoryを実装することでuse-casedomainが隔離されinterface-adaptorの変更に左右されなくなるので、クリーンアーキテクチャのメリットを体験できる良い機会になりました。

最後に

今回のかとじゅんさんによるワークショップではDDDとクリーンアーキテクチャを用いて実際にアプリケーションの1つ機能を通して実装しました。

ドメインモデリングのワークショップを始めるにあたって、参加者から「Evans本やIDDD本を読んだが実際のプロジェクトにどう適用していけばいいかわからない」という意見をもらっていたのですが、この2回のドメインモデリングワークショップに参加して、「ずいぶん実装のイメージが掴めた」という言葉を貰え、非常に有意義な勉強会となりました。

今後は実装に対する理解を深めていきつつも、よりドメインを深く理解するという考え方や手法についてもフォーカスして知見を深めていきたいと考えています。

『Effective Java 第3版』研修を開催しています

『Effective Java 第3版』研修を開催しています

アットウェアでは、2018年12月より、柴田芳樹さんを講師に迎えて『Effective Java 第3版』研修を開催しています。

『Effective Java』は、かねてよりJavaプログラマにとって必読の書と言われてきました。その最新改訂版として昨年10月に『Effective Java 第3版』(Joshua Bloch著、柴田芳樹訳、丸善出版社)が出版されました。およそ10年振りとなる今回の改訂では、Java9 までの新しい構文・機能が網羅され、現代的な構文を Java ではどのように記述するべきか、示唆に富んだ内容になっています。社内では、普段から読書会が開催されており、当初『Effective Java 第3版』も有志を集めての読書会というかたちで開催する予定でした。しかし、翻訳者である柴田芳樹さんを講師に迎えるという幸運に恵まれたこともあり、研修という形での開催となりました。

柴田さんは、古くからJavaに関わられており、Javaの黎明期から業務としてJavaを利用してきた経験をお持ちです。また、『Effective Java』だけではなく『プログラミング言語Go』の翻訳や、『プログラマー"まだまだ"現役続行』の執筆など、多方面で活躍されています。そんな柴田さんのお話を伺おうと、研修には、入社1・2年目の新人から、開発経験10年以上のベテランまで、10名の社員が参加しています。

研修は、基本的には輪読・記載されている内容の解説・質疑応答という形で進められていきますが、解説される内容は書籍に記載されている内容だけにとどまらず、さらに掘り下げる形でJavaの言語仕様やJVMの仕組み、コンピューターサイエンスにまで踏み込む講義をされることがあります。とくに言語仕様やJVMの解説では、なぜJavaの文法がこのようになっているかという側面から話がすすめられるので、説得力をもったないようで語られます。また、折に触れ柴田さんの業務での実体験が話としてされることがあり、エンジニアとして業務を推進する姿勢や開発に対する意識など学ぶことが多くあります。経験に裏付けられた柴田さんの講義は、新人だけでなくベテランにまで良い刺激になっているのではないかと思います

研修も既に6回を数えており、和やかな雰囲気で進められています。研修の中で書籍のミスを発見する出来事もあれば、休憩時間には『Java PAZZLERS』の問題を解いたり、柴田さんから90年代のJava開発の話を聞くなど、講師と参加者の距離も縮まっており、楽しい時間を過ごしています。

研修は6月で終了予定ですが、この研修を通して、エンジニアとしてより大きく成長したいと思っています

ヌーラボの木村さんを招いてKubernetes勉強会を開催しました

ヌーラボの木村さんを招いてKubernetes勉強会を開催しました

ヌーラボ木村さんを招いて発表形式の勉強会を開催しました。

Kubernetes Meetup Tokyo #14 に弊社メンバーが参加した時に「イイ話だった。もっとお話を聞きたい」という声が出て、オファーをださせて頂き、快諾頂いて実現するに至りました。今回の為だけに業務を調整して、福岡から飛行機で駆けつけくださり感謝です。

最近、このような頻繁にゲストを招いて勉強会の開催が実現している様子をみると、普段の社内の声って大事だなとつくづく感じます。一歩踏み出し、アクションをすることができれば、色んなわくわくすることができたり、向かいたい方向へ前進できてイイ感じです。

そして、今回のKubernetes勉強会の内容の話題に移っていこうと思います。

開催にあたり、参加者の層やどんな話が聞きたがっているのかを事前に会話させてもらい、以下のようなテーマを候補を出していただきました。

  1. Kubernetes 基礎知識
  2. Cacoo の Kubernetes 環境
  3. Cacoo の Microservices 事例
  4. Kubernetes のつらみ
  5. Kubernetes Tips 、便利ツールなど

ついつい全部関心があると言ってしまいそうになるところですが、参加者をアットウェアエンジニア全員として案内をする予定なので、基礎や浅いところにも触れていただき、なぜKubernetesにしようと思ったか、調査や導入前段の思考をお話を聞けると、幅広い層にもリアル感が伝わっていいかなと考えています。

というようなご相談をさせていただきました。

また、Kubernetsに特に関心があったりKubernetes Meetup Tokyoに参加したメンバーの中で以下のような話も聞いてみたいというニーズがありました。

  • Kubernetes meetupで発表された内容をさらに深掘りした話
  • 導入後の苦労や運用周りの話
  • マイクロサービスの周りのアプローチを、どういう風にKubernetesのオブジェクト単位にまで落とし込んでいったかという話

これらのお話は「ぜひ懇親会でも更にお聞きできたら」ということを木村さんにお伝えし、当日の勉強会のテーマが決まっていったのでした。

開催された勉強会では、木村さん自身が関わっているCacooの開発を続ける中で、積み上げられた歴史を知る木村さんだからこそ伝えられる、オンリーワンなすごくいい発表を聞かせていただきました。

当日の勉強会で印象に残っていること

  • マイクロサービスと国際的なロケーションを組織にあわせた形でうまく融合できるようになってきたという話。
    • 最初うまくいかなかったところや工夫も聞けてよかったです。
    • 明確なオーナーシップを持つことでうまくいったそうです。
  • 使っているフレームワークや言語は多彩であった
    • その中でも独自のルールをなくして、標準的なルールに従うようにするアプローチをとった。
    • 新しいメンバーが入ってきても伝わりやすいというメリットを享受。
  • 本番環境とステージング(ベータバージョン)の使い方とアプローチ方法
  • コストの考え方
    • インフラコスト(メモリ使用量なども含め)は上がることが多い
      • AWSが儲かるアーキテクチャなんじゃないかな(笑)。だからみんなプッシュしているんですよ。(笑)と談話
    • ↑は半分冗談まじりな言い方ですが、メリットがあるからやっている
      • システムのスケールに加えて、複数拠点などの働き方・開発チーム自体もスケールできた。
      • 仕様を変えて進めていく時のやりやすさ
    • こういう話を弊社(アットウェア)のエンジニアが聞いたことを会話し、トレードオフや共通理解を深めていけると感じた。
  • 懇親会でも刺激を受けた
    • 木村さん自身が関わったKubernetes周り以外のナレッジもチームメンバーから得て、勉強会で展開したり、自身の学び・仕事に活かしているとのこと
      • チーム内で各々が素晴らしい関係が築けていることがわかるというエピソード。
    • 実は私と数名が横浜で行なっている個人活動のコミュニティの勉強会が、木村さんにとって勉強会デビューだったという出会いのミラクルな事実が発覚。

最後に

書きたいことは他にもいっぱいありますが、控えめに言って最高すぎたということで、この辺りで筆をおきたいと思います。 今回の内容とは全く同じではありませんが、木村さんがKubernetes Meetup Tokyoで発表されていた動画が公開されています。ご興味ある方は、ぜひ一度見てみてはどうでしょうか。

素晴らしい発表どうもありがとうございました!

かとじゅんさんを招いて「ドメインモデリングワークショップ」を開催していただきました

かとじゅんさんを招いて「ドメインモデリングワークショップ」を開催していただきました

前回に引き続きかとじゅんさんによる勉強会の第2弾です。

ドメインモデリングワークショップ

今回はドメインモデリングについてのワークショップを開催していただきました。 前回の勉強会の際に社内で、「Evans本やIDDD本を読んだが実際のプロジェクトにどう適用していけばいいかわからない」という声が上がっていました。 今回のワークショップではその辺りの疑問に応える形で、実際のユースケースからどうドメインモデルに落とし込んでいくか、という部分に焦点を当てたワークショップを開催していただきました。

お題はかとじゅんさんがScala福岡 2019でご講演なさったウォレットサービスのドメインについてでした。 想定するユースケースも講演内容のユースケースと同様のものが予め展開され、そこからどのようにモデルを見つけていくかという内容でした。

ドメインモデルの分析

以下がドメインモデルの分析で行ったモデリングの一例です。 付箋の色で表すものが違っていて、緑がドメインモデル、青が振る舞い、赤が属性、黄色が気になることとなっています。 支払いについてはウォレット集約の配下でまとまりましたが、請求をウォレット集約に含めるか否かで活発な議論がなされていて、モデルについてより深掘りして考える良い機会となりました。

IMG_20190122_185533.jpg
スクリーンショット 2019-01-23 19.06.40.png

ドメインモデルの実装

分析したモデルをモブプロ形式で実際のコードに落とし込んでいく演習も行いました。 言語の指定はなかったのですが、チームの共通言語がJavaだったので今回の演習ではJavaで記述しました。 頂いたレビューの中で、集約の与り知らないところでコレクションの操作をされるのを防ぐために、コンストラクタや値の返却時にはコレクションのコピーを渡すべきというのが印象的でした。

インスタンス生成時

// List<WalletEvent>は本来ファーストクラスコレクションにするのが望ましい
public Wallet(long id, List<WalletEvent> eventHistory) {
    this.id = id;
    // 外から渡された参照は外部で任意の操作をされることがあるので中身のコピーを渡す
    this.eventHistory = new ArrayList<>(eventHistory); 
}

値の返却時

public List<WalletEvent> getHistory() {
    // 渡した参照に外部で変更を加えられる恐れがあるのでコピーを返却する
    return new ArrayList<>(eventHistory); 
}
%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2019-01-23+19.05.49.jpg

最後に

かとじゅんさんにワークショップを開催していただき、実践的なドメインモデリングの手法を体験することができ非常に有意義で楽しい時間でした。 とても良い題材を頂いたので今後もウォレットサービスをベースにDDDについて取り組み、知見を深めていきたいと考えています。

増田さんを招いて「ドメイン駆動設計 考え方と技法」をテーマとして社内勉強会を開催しました

増田さんを招いて「ドメイン駆動設計 考え方と技法」をテーマとして社内勉強会を開催しました

あけましておめでとうございます。 昨年末に『現場で役立つシステム設計の原則』の著者としてもよく知られている増田さんをお招きして、ドメイン駆動の考え方や技法についての勉強会を開催しました。

開催のきっかけ

よこはまクラウド勉強会に参加しているメンバーがDDD Aliance高崎さんと弊社で『現場で役立つシステム設計の原則』が話題になっているというお話をした際に、お繋ぎしましょうかというお話を頂き今回の勉強会が実現しました。 著者の方から直接お話を聞けるとは思いもしなかったので、今回の機会を実現していただいた高崎さんには心より感謝致します。

内容

まずはソフトウェアの諸問題は変更容易性に依存していているというお話からはじまり、モジュール構造の評価指標、設計スタイルの話からドメインロジックに焦点を当てる開発手法の話へとわかりやすく順序立てて話を進められていました。 ドメインロジックに焦点を当てる開発において要求を分析するための技法のお話では、Fact-Rule-Goalアプローチ、VETRO分析などのキーワードでお話しいただき、実際の業務においてどうビジネスポリシーをどう噛み砕いていくかというを説明していただきました。 コードに近づいたところの話としてはドメインオブジェクトの設計パターンも説明していただきました。 クラスの単位や計算の種類、区分オブジェクト、コレクションの操作や契約による設計などのキーワードで説明していただき、よりドメインロジックに焦点を当てたモデリング手法を理解できました。

強く印象に残っているのが区分オブジェクトのお話のところで、区分、種別を見つけたらEnumに寄せてみようというものでした。 例としてレンタルビデオの料金種別を考えたときにEnumに{ 新作, 一般, 子供 }に列挙すると新作の子ども向けの場合はどうなるのか等の違和感が出てくる。 その違和感を見つけることでより本質的なドメインに焦点を当てることができるというお話をしていただき非常に参考になりました。

もう1つ強く印象に残っているのが契約による設計で、事前条件/事後条件の担保をassertでするのではなく引数や戻り値の型を用いて行うという手法です。 値オブジェクトとして定義した型を利用することで、その型のインスタンスが生成されているということは、存在すべき値の範囲で生成されているということができていると見なすことができるというお話でした。 増田さんのこちらの資料にもある事前条件/事後条件の担保についてのお話です。 利用する側としても渡すべき関心事が明示的でわかりやすいです。

私の普段の業務でドメイン駆動設計のことで疑問に思っている事柄について増田さんに質問をしたところ、増田さんご自身の中での答えとともに、日々実験的に色々なアプローチでより良い答えを探し続けているというお話をいただきました。 私も日々の業務の中で色々なアプローチを試しより良い答えを探し続けていく姿勢を学びました。深く感謝致します。

最後に

atWareでは技術スタックの1つとしてDDDをあげられるよう日々学習しています。 その1つの活動として今回の増田さんや前回の記事のかとじゅんさんのようなDDDの先駆者の方々をお招きして社内ナレッジを蓄積しております。 その過程で私どもとしても提供できるアウトプットがあればぜひして展開していきたいと考えております。 今後とも宜しくお願いします。

インターンシップ体験記・2017(徳島大学 森さん)

インターンシップ体験記・2017(徳島大学 森さん)

atWareインターンシップ参加レポート

徳島大学3年の森と申します。 この度、8/21~9/8の3週間に体験させて頂きましたインターンシップについて簡単にまとめました。

はじめに

私はこのインターンに以下の3つの目的を持って参加しました。

  • IT業界の方や他校の学生との交流
  • チーム開発
  • Webサービスの開発

結果として、3つの目的は達成でき意義のある3週間を過ごすことができました。今回は、上記3つの参加動機(体験できたこと)に関して、主観的に感じたことを交えてまとめました。拙い文章ではありますが、これからインターンシップへの参加を検討している方にとって、少しでも参考になれば幸いです。

概要

今回参加したインターンシップの簡単な概要としては、9人のチームで、3週間3回のイテレーションでのアジャイル開発によって、Springを使いWebサービスをつくる、というものでした。インターン生の9人は、4人が高専4年、4人が大学3年、1人が大学2年でした。作成するWebサービスは事前にメールで提案したものから適したものを選んでもらっており、初日にインターン生同士で詳細な仕様を決めました。

交流

チームメンバーの9人ですが、全員が初対面で出身地もばらばらだったので、地元の話や通っている高専・大学の話などの普段聞けない話が聞け、面白かったです。特に普段他校の方と話す機会が少なかったので、カリキュラムや学校行事のことや実習・研究でどんなことをしたかなどの話ができたのは良かったと感じています。3週間の時間があるので休憩時間やご飯のときにじっくり話ができる機会が多くあることも3週間のインターンならではのものだったと思います。
またインターン生だけでなく、社員の方とも話ができたり、開発のアドバイスをもらえたりできたことも、このインターンならではの良かったことだったと思います。今回開発を進めるにあたり、常に新卒の社員の方が付いていてくださりサポートして頂きました。アジャイル開発の進め方を教えてくれたり、Webアプリ開発の技術的な質問に答えてくれたりと、私たちインターン生にとって頼もしい存在でした。

アジャイル開発

開発の進め方はカンバンという手法を使い、タスクの切り分け・コスト見積もり、タスクの可視化、1イテレーション後に反省・改善、という流れでした。まず週の初めにミーティングを行い必要なタスクの切り分けとそれにかかる時間の相談を行います。開発経験に個人差があるのでこのミーティングの際にお互いのタスクへの認識や技術に関する知識を共有できました。開発を進める際には、タスク内容と達成に必要だと推定した時間を書いた付箋をTodo、Doing、Doneのタスクの状態に応じて壁に貼っておくことで、残タスクの量や全体の進捗具合を目で確認しながら進めることができました。1イテレーション毎に行う振り返りでは、それぞれ個人が1週間で感じた良かった点や悪い点を共有するミーティングを行いました。
今まで個人開発が多く9人ほどの人数で開発をする機会がなかったので、9人で1つのものをつくるのは難しいと感じましたが、今後チーム開発する機会は絶対あるので、その時に活かせられる良い経験ができたと思います。

mori-kanban.png

Webサービスの開発

 今回、開発にはSpring(Java、HTML、CSS)やGitを使用して進めていきました。チームではJavaやGitの経験が少ない方も多いため、タスクの切り分けではそのことを考慮し勉強時間もタスクとして設けました。私自身もJavaは学校で学んでいましたがSpringの経験が一切なかったので、勉強しながら開発ができ、無理せず足並みを揃えて進めることができました。また、タスクに取りかかる際には2人ずつのペアに分かれてそれぞれで進めていったため、先に勉強を終えたペアに分からないことや進め方を相談できた点でも安心して進められました。

mori-workspace.png

おわりに

 IT企業のインターンシップはバイトのように業務をこなす形式やハッカソン形式のものがありますが、今回はそのどちらとも違い、学ぶ機会の多いインターンだった思います。最初は技術面で不安がありましたが、チームメンバーでお互い勉強しながら開発ができたことや、社員の方がいつでもサポートしてくれたことや、社長の牧野さんからIT業界や企業に関するお話を聞かせてもらえたことなど、たくさんの学ぶ機会がありました。また同時に、交流の機会も多かったと思います。アジャイル開発やペアプログラミングでの交流だけでなく、歓迎会や打ち上げを企画してくださり、本当に楽しい3週間でした。
 最後になりましたが、インターンを無事終えることができたことに、丁寧に教えてくださった社員の方々や一緒に開発に取り組んだチームメンバーに感謝しております。楽しい3週間をありがとうございました。

mori-snapshot.png

インターンシップ体験記・2017(豊田高専 近藤さん)

インターンシップ体験記・2017(豊田高専 近藤さん)

1 はじめに

インターンシップでは集まった高専生、大学生で実際にサービスを作成する体験をしました。複数人で集まってチーム開発をするのは初めてではなかったのですが、仕様の話し合いの段階からやったことはなかったのでとても勉強になりました。開発方式はかんばん方式によるアジャイル開発、ペアプログラミングを行ないました。

2 チーム開発

初週の仕様の話し合いは自分の知識が足りず、あまり話し合いに参加できませんでしたが1週間実際に作業をすることで話し合いに必要な知識がついていき2週目以降の話し合いには積極的に参加することができました。 かんばん方式では実装にかかるタスクを切りだし、それぞれにかかる時間を設定しました。それを付箋に書きTodo(やること),Doing(やっていること),Done(おわったこと)の3つに分けたホワイトボードに貼ることで残っている作業、だれが今何の作業をやっているか、どの作業が終わっているかがすぐわかり、プロジェクトの進捗が一目でわかり、とても便利なプロジェクト管理だと思いました。

kondo-kanban1.png
kondo-kanban2.png

アジャイル開発では週の初めにその週にやる作業を決めることで前の週に残ってしまった作業や見つかったバグへの修正を簡単に組み込むことができて発生した問題に素早く対処できました。

3 開発に用いた技術

インターンシップでは以下の技術を使いました。

  • Java
  • Git
  • Springフレームワーク
  • SQL
  • HTML
  • CSS
  • JavaScript
  • jQuery

私はインターンシップ参加前はこれらの知識があまりありませんでしたがインターン参加前にこれらの技術の書籍をいただき、サポーターの方のわかりやすいサポートにより作業を完遂することができました。

4 おわりに

自分ではあまりJavaを用いてアプリケーション作成を行なったことがなかったり、SQLデータベースについての知識があまりなかったり不安に思っていましたが、インターン生の高専生や大学生、社員の方のサポートによりサービスを作成することができました。 歓迎会や打ち上げなどのイベントや社員の方に誘っていただきVimのイベントに連れて行ってもらったりしてとても楽しむことができました。
いろいろと迷惑をかけたと思いますが3週間ありがとうございました。

VimConf2017 スポンサーレポート

VimConf2017 スポンサーレポート

参加者のブログがすでに30件ほど公開されており、当日の熱も覚めやらぬ中、来年以降の開催に向け、スポンサーを検討している皆様に参考にしていただけるように、スポンサー視点でブログを書きたいと思います。

VimConfの今までと今年

2015〜2016年 にかけて

当時のVimConf閉会式で「誰か特定のメンバーがVimConfを主催しているのではなく、前年度とは異なるVimコミュニティの面々で運営され人依存ではなくなった。それは、コミュニティ形成の土壌ができたということだ。」的なことが、述べられたことを覚えており、この時期はひとつコミュニティが次のステージに進んだんだなと実感していました。

フォローバックエントリーからも当時の様子がわかります。

これには、感慨深いものがありました。

そして 2017年

兼ねてから国際的なカンファレンスを謳っていましたが、今年からスポンサーを募ることと、海外からスピーカーを招き、全セッション同時通訳されることがvim-jpより発表されました。

スポンサーになるまでの流れ

詳細はまったくわかっていなかったのですが、すぐに会社に稟議をとおし即日でTwitterの @vim_jp へ連絡をしました。 後述で書く VimConf2017のスポンサーになる理由 はあったので、会社とはすぐに話がつき、金額やスポンサード内容については概ね任せてもらえることになったのでした。

IMG_9630.JPG

スポンサーメニューを入手

個別に準備会メンバーから連絡をいただき、枠数や価格やスポンサー特典が書かれたメニューを入手しました。 非公開なものなのでここでは詳細は差し控えますが、企業スポンサーとしては妥当な金額なレンジでしっかりしたものでした。

弊社はプラスして下記のような提案をさせていただきました。

日中に温かいコーヒーとオレンジジュースを参加者に無償(飲み物を弊社が用意して提供いたします)で飲んでいただけるようにして、Vimらしいプリントした紙コップをノベルティとして配布し、当日を楽しんでいただければと思っています。

会場都合の確認や人数算出や提供方法など、準備会メンバー1名の方と数十通のメールをやり取りしました。 初回ということも重なってやりとりや確認事項も多く、仕事をされている中で各社とやりとりするのは大変だった思います。

ブログレポートやツイートにもありましたが、よくこのスタッフ人数で回せたなとスポンサー視点でも感じました。来年のスタッフはあと数人は増えるといいですね。

スポンサーになってみて

当日を過ごし、懇親会や参加者レポートを拝見し、得れたことや感じたことです。

  • 参加者の満足度が高いカンファレンスとなった結果、来年の更なるコンテンツを期待できた。
    • いち参加者としても嬉しい限り
  • スタッフの方々にとても感謝された
    • 開催の原動力は準備会に関わった方々のパワーが大きいですよね
  • 弊社の名前を司会の方から何度か紹介してもらった
    • スポンサーへの配慮をしていただいていると実感
    • 参加者の頭の片隅に残って何かの機会で「あー。あの時の。」ってことになるんじゃないかと
  • 一般参加した弊社メンバーにも「スポンサーになってよかったんじゃないか」とフィードバックをもらった
    • 一緒に働く人の理解もあって、Vim出張にも気兼ねなくいける!(2年ぶり3回目のVim出張に今月行ってきます)

VimConfをスポンサーするメリット

閉会の言葉では、VimConf2018に向けて、さらなるスポンサーを募っていましたね。検討しようと思った方々も多いのではないでしょうか?

弊社事例を紹介します。

採用に繋がる効果

アットウェアではVimのおかげである優秀な新卒社員を今年迎えることができました。

ISUCONというエンジニアの総合力を試されるチューニングコンテストがあるのですが、今年のISUCON7にその新卒社員も参加し、難関である予選を上位で突破しました。

入社してもらえるきっかけが、交流があったとある大学のコンピュータサークルから「勉強会でVimネタの話が聞きたい」とリクエスト受けて、新幹線に乗って大学へ訪問したことでした。彼はVimとラーメンも好きだったので横浜のこの地を選んでくれたのでした(採用担当の熱心な活動があったという事実もあります)。

これは、VimConfの幾つかのセッションで触れられた、「ダイバーシティや若い層の関心やコントリビュートもあって今がある」という点にも繋がっているように思います。

極端な事例なのかもしれませんが、弊社のような知名度が高くない会社でも「ポテンシャルを持った若者に関心を持ってもらえるきっかけになる」という恩恵をVimから受けました。

こういうことって本当にあるんですね。えっ!?

最後に

去年も良かったと思ったVimConfでしたが、今年はさらによかったですね。

スポンサーに名乗り出て、場づくりに貢献できてよかったです。

準備会および参加者のみなさまお疲れ様でした。VimConf2018でまたお会いしましょう!

これからも、弊社はVimConf以外にも社員が熱心におこなっている活動やコミュニティへ積極的に支援していきます。

インターンシップ体験記・2017(武生工業高等学校 三崎さん)

インターンシップ体験記・2017(武生工業高等学校 三崎さん)

はじめに

武生工業高等学校の三﨑です。7月31日から8月4日までの5日間、アットウェアでのインターンシップに参加しました。
私がインターンに参加しようと思った理由は

  • プロの仕事を少しでも知りたかった
  • チームでの開発をしてみたかった

です。5日間という少し短い時間でしたが、十分充実した5日間でした。
事前にオンラインミーティングもして、メンバーがとても優秀な方々だったので、インターンシップが始まる前からとても楽しみでした。

インターンシップの内容

インターンメンバー4人で instantcoder(簡単にプログラミングコンテストを開催できるシステム)を開発しました。私は、フロントエンド側を担当しました。競技プログラミングも行ったことがなかったので、様々なことを知ることができました。

開発を始める前に

マルチタスクのパフォーマンスの悪さを改めて実感しました。数字とアルファベットとひらがなを同時に書くのと、一種類ずつ書くのではかかる時間が圧倒的に違うというのを体験したからです。
レゴを使った、簡単なオブジェクトを作りました。単に作るだけではなく、何を作るか、最初に何をすると早く作れるのか、などを考えタスクを分けました。2チームに別れて行ったのですが、作るものに対してこだわらなくてもいいところにこだわったりしたので、他のチームは完成してプラス何を付け足すかのところまでいっていたのですが、私たちのチームは全て完成とまではいきませんでした。タスク管理の方法や短い期間しかないので開発での重要なところから作っていくなどを実感しこの後のインターンでの開発が行いやすかったです。

開発

私はwebアプリーケーションもまともに作ったことがなくgitでのプロジェクト管理も初めてだったので、初日はわからないことだらけでしたので、他のメンバーに迷惑をかけてしまいましたが、開発していく上で必要不可欠なスキルなので、学べて本当に良かったです。
私はフロントエンドのhtml、javascriptを使った開発を行いました。デザインの知識もあまりなかったので、Bootstrapを使いました。また、javaのフレームワーク、spring bootのthymeleafを使ったwebアプリケーション開発だったので、javaもあまりやったことがなくtymeleafの知識もほとんどなかったので、そことの都合を合わせるのが大変でした。

アニメーション、バックグラウンドあり

アニメーション、バックグラウンドあり

アニメーション、バックグラウンドなし

アニメーション、バックグラウンドなし

instantcoderのログイン画面です。このバックグランドは幾何学模様がアニメーションするライブラリを使っているのですが、ここに載せられているのは画像ですが、このバックグラウンドがあるのとないのとでは印象がだいぶ違うと思います。
実際に、このバックグラウンドは他のメンバーの方などにも支持されました。このように実際のwebアプリケーションとしての機能は同じなのにフロントエンドのUIはちょっとした工夫でユーザーなどに与える印象が全然違うということを実感しました。普段、私たちが使っているwebアプリケーションも様々なUI/UXの工夫があるということに気づきましたので、ただただwebアプリケーションを使うだけでなくそこの部分を考えながら使えるようになりました。

今後やりたいこと

  • UI/UXを考えて作れるようになりたい
  • SPA(シングルページアプリケーション)
  • gitでの開発になれる
  • サーバサイドの勉強

普段はiosアプリを作っていますが、今回webサービスを開発して、楽しかったので、今回作ったものよりもう少し高度なものを作ってみたいです。また、今後gitを使う機会は増えてくると思うので、早く慣れたいです。

まとめ

html、javascript、bootstrap、tymeleafへの対応など普段はやらなかったことができて5日間、充実な時間を過ごせました。
チーム開発は難しかったですが、とても楽しかったです。
インターンシップにいくことによって、普段は味わえない体験、インターンシップメンバーからの刺激などが得られます。特にインターンシップメンバーからの刺激は大きく、知りたいことがこのインターンシップ期間中に数多く増えました。例えば、今回はフロントエンド側の開発だけでしたが、サーバ側にもとても興味を持ちました。
社員の方やインターンシップ生の方々にはお世話になりました。本当にありがとうございました。

インターンシップ体験記・2017(徳島大学 居石さん)

インターンシップ体験記・2017(徳島大学 居石さん)

1 はじめに

徳島大学工学部 知能情報工学科 4 年の居石峻寛です.
7/31 - 8/4 の 5 日間,アットウェアでのインターンシップに参加させていただきましたので,その内容について記していきます.

2 実施概要

  • 日程 : 7/31 - 8/4の5日間
  • 場所 : 株式会社アットウェア 横浜本社
  • 内容 : インターン生で「競技プログラミングコンテストを簡単に開催できる Web システム」を共同開発
  • 参加者 : 4人 (大学院1年生,学部4年生,高専2年生,工業高校2年生)

3 スケジュールと活動内容

3.1 オリエンテーション,見積もり (7/31)

午前中はアイスブレイクを兼ねてインターン生のみんなでミニゲームを楽しみました.実施概要の参加者を見ていただけると分かると思うのですが,学年や所属している組織の性格も全然違っています.また住んでいる地域もバラバラだったので最初はうまくやっていけるのか不安でした.しかし社員の方が一生懸命考えてくれていたアイスブレイクのお陰で,昼食を摂る頃には気軽に話して盛り上がれるようになっていました.
午後からは開発したいものからタスクを炙り出し,プランニングポーカーで見積もりを立てていきました.今回は一週間しか期間がないということもあり,何を開発するかについては事前に Skype ミーティングで決めていました.しかしながら思った以上に難しく,見積もりをまとめるのにも結構時間と苦労をかけていた記憶があります.

3.2 開発 (8/1 - 8/3)

とにかく開発,テストの繰り返しでした.Scala で回答プログラムの実行・評価部分を開発していたのですが, なにぶん Scala での本格開発は初めてで社員の方々に訊いて回りながらなんとか組み上げました.
また技術以外の面でもブランチ管理に始まり,タスク管理ツールの使い方やコミュニケーションの取り方など共同開発をしていく上での必要な事柄が沢山学べたのは非常に大きかったです.
また雰囲気の方もただひたすらに開発をしてデスマーチのようになっていたかというとそうでもなく,インターン生同士で話をしながら和気藹々とした雰囲気での開発ができました.メンターの方々もときどき様子を見に来てくださったり,昼食を一緒に摂ったりして社員の方との交流も多分にでき非常に楽しかったです.

3.3 成果発表会 (8/4)

最終日にはスライド作成とスライド発表をしました.偶然海外からのインターン生も期間が被っていたようで, 成果発表は彼らと一緒にやることに · · · お世話になった社員さんたちや海外の学生さんらが聴講してくださっている中,緊張しながらも発表を耐えきりました.
最後に振り返りをして,反省をしつつ一週間のインターンは幕を閉じました.

4 成果

今回のインターンで開発させていただいたものは「競技プログラミングコンテストを簡単に開催できる Web システム」です.誰でも簡単に開催できるよう Dockercompose 一つを実行するだけでシステム全体が再現できるようになっています.システムの構成は下の図になっており,主催者がサーバを立ち上げて問題を作成し,回答者がそこへ回答プログラムを投稿すると自動で実行されて評価されるというものです.
僕はこの中で回答プログラムを受け取り,実行してテストケースをパスするか判定する評価部分を開発していました.

system.png

5 所感

 最初はうまくやっていけるか心配でしたが,メンターの方々のフォローやインターン生にも恵まれ,非常に充実した実りある一週間となりました.
 プログラミングで作ってみたい,誰かと一緒にモノを作る喜びを知りたい,IT を生業としている人と交流したい · · · そんな方には是非是非オススメのインターンシップです.
 最後にお世話になったアットウェアの皆様,この度は素晴らしいインターンを体験させていただき本当にありがとうございました.

インターンシップ体験記・2017(京都産業大学大学院 中村さん)

インターンシップ体験記・2017(京都産業大学大学院 中村さん)

アットウェアインターンシップ

はじめに

京都産業大学大学院生一回の中村です.7/31(月)から8/4(金)までの5日間,アットウェアでのインターンシ ップに参加しました.インターンシップでは競技プログラミング環境InstantCoderを開発しました.他に もタスクの切り分けなど実際の開発プロセスに近いことを行いました.インターンシップは僕以外に三人 参加しており,その三人とともにチーム開発を行いました.

インターンを通して行ったこと

  1. 顔合わせ
  2. タスクの切り分けとイメージの共有
  3. 開発

顔合わせ

まずインターンシップ初日にメンターとの顔合わせを行いました. そしてその後ドミノ倒しやレゴブロッ クなどで開発プロセスをざっと勉強しました. 具体的にドミノ倒しは,ドミノ以外にギミックがありその ギミックを最低5個使用しないといけないルールでした.そこで最善のギミックを選ぶ練習をしました. レゴブロックは実際にやるべき内容をタスク分割し,「Do, Doing, Done」でタスクの見通しを良くして組 み立てていきました.これにより実際のチーム開発でのカンバンの手法を学びました.

タスクの切り分けとイメージの共有

顔合わせが終了した後は,本格的に今回作成するInstantCoderを作成するために必要なタスクを切り出 し,それを分割していきました.その後分割したそれぞれのタスクに対して,そのタスクが終了するまで の所要時間を全員で考えました.所要時間の決め方は,全員に各所要時間の記されたカードを配っておい て,各人はタスクごとに自分が思う所要時間カードを出します.そして過半数の人が同じ所要時間のカー ドを出すまで出し直しを行いました.出し直す際は,どうしてその所要時間を出したのかを各人に聞 いてから出し直しを行いました.これによりタスクのイメージを全員で共有することができました.

開発

タスクの切り分けが済んだ後,そのタスクをbacklogに登録し実際に開発を始めました.今回制作したサー ビスは,ユーザから直接アクセスされるクライアントサーバ,実際にプログラムを実行して結果を返す実 行サーバに分かれています.なので人数をクライアントサーバ二人,実行サーバ二人にして分割しました. 今回僕は実行サーバ側でDockerを用いて,サービスの環境構築をしました.基本的にはMySQLとサーバの 環境を構築し,環境(コンテナ)間での通信を行えるようにしました.後は残っているタスクを消化する手伝いをしました.

成果物

idとpasswordを入力してログインします.

  • ログイン画面
title.png

その後問題を作成します.

  • 問題作成画面

create_problem.png
  • 問題一覧画面
problem_list.png

後は問題ページに行って,問題を投稿すると実際に動かしてくれて結果を出力してくれます.

  • 問題提出画面
submit_problem.png

  • 結果画面
result.png

まとめ

一週間という短い期間でしたが,学ぶことが非常に多くあったと思います.まずは常に一緒の机でのチー ム開発における一体感を初めて感じました.気軽に今何をやっているのかを聞くことができ,ホワイトボ ードなどで考えを共有することができました.そしてbacklogでタスクを管理したのでよりタスクを可視化できたと思います.これからも開発し続けていけたらなと思いました.一週間という短い期間でしたが, お世話になりました.

インターンシップ体験記・2016(千葉大学 中平さん)

インターンシップ体験記・2016(千葉大学 中平さん)

千葉大学3年の中平です。この度8/22〜9/2の2週間、インターンシップに参加させていただきましたのでその内容について簡単にまとめさせていただきます。

はじめに

私は転職サイトWantedlyでアットウェアのインターン募集を見つけて応募しました。インターンに参加しようと思った理由には以下のようなものがありました。

  • 今後の進路選択に向け、IT業界についてもっと理解を深めたかった
  • Webに興味があり、Webアプリ開発をやってみたかった
  • チームで開発をしてみたかった

今回、学校を通じての応募ではなかったことや、インターン直前の応募になってしまったことから参加できるかとても不安でしたが、社長の牧野さんが丁寧に対応してくださいました。結果的に、上記のインターンでやりたかった3つのことは、実際にインターンでやったことに変わり、充実した時間を過ごすことができました。

インターン内容

概要

集まったインターン生でWebサービスを1つ開発しました。今回は私と同じく2週間のインターンに参加する仲間が4人と、それよりも1週間早く開始していた仲間が4人おり、計8人で一つのサービスを開発しました。

私がインターンに参加した時点で既にサービスの企画と設計のフェーズが終了していたため、主に開発に携わらせていただきました。

プログラミング

開発の内、私はサーバーサイドを担当させて頂きました。Web開発は初めてであったため、MVCモデルが一体どんなものなのかを知るところから始め、主にビジネスロジックの部分を実装しました。開発ではJavaのSpringMVCと呼ばれるフレームワークを用いました。また、Java言語についてもあまり経験がなかったので、オブジェクト指向を用いたプログラミングの実践の機会にもなりました。

最初の1、2日は参考書や仲間のコードを読んでもあまり理解が進まず、悶々していましたが、一週間が終わる頃にはわかる部分とわからない部分が明確になり、仲間とうまく作業分担しながら作業を進めることができました。開発のほとんどは学習と同時並行でしたが、インターンに参加したメンバーもWeb開発が初めてという方が多かったので、アットウェアの社員の方々のフォローを頂きながらスムーズに開発を進めることができました。

最終的にはWebサービスを一つ完成させることができ、大きな達成感と自信を得ることができました。インターンに参加する前はHTML, CSS, JavaScriptのフロントエンド技術しかわかりませんでしたが、サーバーサイドの技術を学ぶことができたことが私にとって特に大きなポイントでした。

チーム開発

インターンではプログラミングだけでなく、チーム開発についても様々なことを学ぶことができました。その内の一つはカンバンと呼ばれる手法で、主に"タスクの見える化"を行うものです。ミーティングで事前に洗い出したタスクの中から、毎日今日やるタスクを選び、各人がDoing(今やっているタスク)欄にタスクを移してから作業を始めます。タスクが終了した時には見積もり時間に対して実際にかかった時間を記入してDone(消化したタスク)欄へと移していきます。

カンバンを用いながら開発することで、特に以下の様な点に気づきました。

  • あとどれくらいやることがあるのかという全体的な視点を意識しながら作業できる
  • プロジェクト自体の進捗が管理がしやすくなる
  • 長い間同じタスクに留まっている仲間を発見できる

このような手法は一人でプログラミングをする上では経験できないため、実際にそれを使ってチーム開発をすることができ、良い経験になりました。

それ以外にも2週間のチーム開発を通して、わからないことがあった場合に一人で悩みこまずに気軽に仲間と共有できる環境の素晴らしさを実感しました。また仲間のコードを読んだり、仲間と考え方を共有しあう中で、設計や実装がブラッシュアップされる体験も非常に楽しいものでした。インターンでは普段の学校生活ではあまり経験することのないチーム開発に触れる事ができます。紹介したカンバンやgitなどの開発手法・ツールに触れることも貴重な体験ではありますが、初めて会った仲間とどれだけ蜜にコミュニケーションを取れるかも重要な要素です。もしコミュニケーションに不安のある方でもアットウェアのインターンに参加することで自信をつけるきっかけになると思います。

インターンで使った言語・フレームワーク・開発環境

今回のインターンで学んだ技術的なものについて、具体的に名前を列挙してみました。言語やフレームワーク、ツールなどが入り混じっていますが、少しでも今後参加する方の参考になればと思います。

技術要素
全員Java, Tomcat, Git(Source Tree), Eclipse
クライアントサイドHTML, CSS, JavaScript
サーバーサイドJSP, SpringMVC, Hibernate, MySQL

さいごに

私は最初インターンに参加するにあたり、Javaでのプログラミング経験が少ないことや、Webサービスの開発経験がないといったことが大きな不安要素でした。しかし、今終わって振り返ってみると、わからないことはアットウェアの社員の方々が丁寧に教えてくださったり、一緒に参加していたメンバー同士で教え合うことができる環境で、とにかく"楽しみながら"開発をすることができました。

また、アットウェアのインターンでは社内で歓迎会や打ち上げを開いていただいただけでなく、皆でご飯を一緒に食べに行ったり、横浜スタジアムに野球観戦しにいったり、卓球をしたり、開発以外にも楽しい経験が盛り沢山でした。もしこの記事を読んでいるあなたが、技術的なハンデに関する不安で参加を迷っているのであれば、そんな心配は全く不要です!是非インターンに参加して欲しいと思います。また、アットウェアでは大学の単位認定についても対応して下さいますので、もし今後個人で応募する方がいましたら参考にしてください。

この度は本当にありがとうございました。

インターンシップ体験記・2016(奈良先端科学技術大学院大学 原さん)

インターンシップ体験記・2016(奈良先端科学技術大学院大学 原さん)

はじめに

奈良先端科学技術大学院大学の原です. 8月15日から9月2日までの3週間, アットウェアでのインターンシップに参加しました. そこで私はクラウド並列分散処理基板構築という内容を実施しました. 3週間で実施した内容を簡単に紹介したいと思います. また, 本記事が今後アットウェアへのインターンシップに参加する方のご参考になればと思います.

 

実施内容

本インターンシップで使用した主要技術は4つあります.

  1. Scala
  2. Spark
  3. Zeppelin
  4. Amazon EMR

これらの技術は私にとって経験値の少ないものでしたので, 学ぶことも多く, 非常に楽しく開発できました. そして, わからない所や深く知りたいことは, 社員の方々に聞くことができました.

本インターンシップで実施したことは2つあります. 1つ目は, アクセスログの並列分散処理と解析です. 2つ目は, 野球データの解析です.

アクセスログ

あるアクセスログを解析し, そこから何か有益なデータを見つけるといった内容です. 具体的には, アクセスログをSparkを利用して並列分散処理し, 集計されたデータをZeppelinで可視化するという流れです. このアクセスログは, 実際に運用しているプロジェクトのアクセスログであったので, ユーザが実際に利用している風景を想像しながらアクセスログを解析できました. ここで, 私はScala, Spark, Zeppelin, そしてAmazon EMRを利用し, データの並列分散処理と解析の基礎を身につけました.

野球データ

MLBで利用されているPitch f/xのデータを並列分散処理し, 解析しました. Pitch f/xは野球の投手の投球速度や投球軌道を追跡するスピード測定器システムです. イメージとしては, プロ野球1球速報のようなものです. このデータを元に, 投手はどのような配球で打者から三振を奪うのか調べました. 初めは, 下図のように三振を奪った投手の全ての配球を可視化したのですが, どのような配球で三振を奪ったのかよくわかりませんでした.

そこで, 三振を奪った配球を部分系列パターンとして抽出し, それを可視化しました. 全体的な流れを以下に示します.

  1. Pitch f/xのデータを習得
  2. Sparkで並列分散処理できるように, データセットを作成
  3. そのデータセットを用いて, 部分系列パターンとして抽出
  4. 抽出した部分系列パターンをWEBで可視化

また, 部分系列パターンとして抽出する際, データのフィルタリングしました.

  1. 投手と打者の指標
  2. 右打者, 左打者あるいは右腕, 左腕

これらを考慮することで, 優秀な左腕投手は, 優秀な右打者に対してどのような配球で三振を奪うのか知ることができます. 投手の指標として, 今回はK/BBを採用しました. これは奪三振数と与四球数の比です. 打者の指標として, 今回はOPSを採用しました. これは打者の出塁率と長打率の和です.

成果物

野球データに関する成果物を紹介したいと思います. 完成した成果物を下図に示します. これは右腕投手が右打者から三振を奪った際の部分系列パターン群です. 1つのパネルが抽出した1つの系列パターンの1要素となります.

下図は横から見た図です. パネルが奥行きを持って並んでいることがわかります. この奥行きを持って並んだパネルが1つの部分系列パターンです. また, パネルの1番奥の部分が三振を奪った球種とゾーンです. 例えば3つのパネルが奥行きを持って並んでいる所に注目すると, これは右打者に対する投球の中でアウトローのボールゾーンのスライダーが3球出現したことを示しています. そして, アウトローのボールゾーンスライダーで三振を奪ったことを示しています.

右打者や左打者, 右腕や左腕の組合せで, それぞれの傾向が見られたので, 非常に面白かったです.

 

まとめ

この3週間で私は以下のことを深く学び, 経験できました.

  1. Sparkを用いた並列分散処理
  2. データの可視化(見せ方)の難しさ
  3. エンジニアとしての振る舞い

私にとって経験値の少ないScalaやSparkを用いた開発, そしてデータの並列分散処理から可視化までの一連の流れを経験でき, とても価値のある3週間でした. 特に3については是非アットウェアへ行って自身の耳で聞いてください. 私がここで記事にするよりも有益な情報が得られます. また, 今回私はインターンシップ生同士でチームを組んでいなく1人でしたが, 隣でチームで作業しているインターン生や社員の方々を見て, 普段私がしているチーム開発を俯瞰的に見ることができ, 改めて振り返る機会を得ることができました. そしてインターンシップでの3週間, 私はとても楽しく有意義な空間と時間を過ごすことができました. 最後になりますが, 社員の方々やチームは異なりますが, 共に過ごしたインターンシップ生の方々, 本当にお世話になりました.

GJ Camp レポート

GJ Camp レポート

皆様、こんばんは。私、アットウェアの新入社員のMassanです。技術的な記事が多いなか、イベント的な記事をポストしたいと思います。そもそもGJってなに?というところから、社内の活動や雰囲気までふわっと伝われば幸いです。写真が全体的に黄色いのは、僕のカメラテクニックが低かったということもありますが、間接照明のせいでもあります。

GJとは

GJとはGood Job チームの略で、僕が所属するチームの名称です。弊社は現在、チーム制というものを導入しており、所属するプロジェクトとは別に様々な特色をもったクラスターによってチームを構成しています。GJ チームはGood Jobな仕事をしよう!という思想の元集まった集団です。私とNamさんが今年から加入して、6名となりました

GJ Camp

GJ Campは9月末に行われ、コワーキングスペースを借りて、丸一日もくもくと開発をするイベントでした。弊社では社内のコミュニケーションツールとして、Nulabさんが提供しているTypetalkを使用しており、社内でTypetalkのbotの開発が少し盛り上がっていたこともあり、一人一個botを作るという目標を立てました。

 

参加者と成果

GJ Campで作成しようとしたプロダクトと、それぞれのキャラクターを紹介します。


朝活推進派。

朝活推進派。

S.K:おすすめランチbot

GJチームのボス。一見でこぼこなチームをさらっとまとめる紅一点。
Campではみなとみらい近郊のランチ情報をポストするBotを開発。アイコンがキュートでした。


M.S:airconbot改

GJチーム最強のエンジニア、Javaをこよなく愛しています。
Campでは、typetalkのチャットからエアコンを操作するbotの改良を行いました。

チャイナでご満悦の室長


遅れてきたのに、いち早くbotを開発し終えた

遅れてきたのに、いち早くbotを開発し終えた

K.A:乗り換えbot

GJチームのインフラ担当。自己啓発本を読みまくり、メンタル的な面でも、技術的な面でも自分のブラッシュアップを怠らない、常に進化し続けるエンジニアの鏡です。Campでは天気の情報と、乗り換え案内を駆使して、どの電車に乗るべきかを教えてくれそうなbotを開発。ソースを全然公開してくれません。


紹興酒を飲みまくっている 懇親会にて

紹興酒を飲みまくっている 懇親会にて

O.F:

GJのご意見番。仕事が忙しすぎて、チームミーティングや活動にジョインできていません。会社への貢献度は計りしれません。飲み会も遅れてやってきました。


真剣なときのナムさんと、メガネを取ったときのナムさんはイケメン。

真剣なときのナムさんと、メガネを取ったときのナムさんはイケメン。

Nam Lai:connect server

GJのチャーミング担当。ナムさん。Goをこよなく愛するベトナムからの刺客。5月からアットウェアにジョインしましたが、新卒とは思えないほどの実力者です。Campではスケールが壮大すぎるプロジェクトに手をつけ出して終わってしまいました。
日本人の彼女募集中。


当日はカメラマンだったので、ナムさんに撮られたこの写真しかなかった。

当日はカメラマンだったので、ナムさんに撮られたこの写真しかなかった。

Massan:weekCheck.go

GJのフレッシュ担当。大学が情報系だったが、さぼりにさぼってここまできてしまいました。すこしずつ成長中です。Campでは、Goで曜日bot開発を行いました。


懇親会

関内で作業を行っていたので、近くの中華屋さんで懇親会を行いました。チームに加入してから初めて、全員と顔をあわすことができて、とてもよいCampとなりました。ボス曰く、チームとしても今期初の全員集合会だったらしく、まとまり感が出てきていい感じだそうです。

今回はクローズドなCampでしたが、今後はオープンな勉強会なども行っていく予定です。
今後ともGJチームをよろしくお願いしまーす!!!

インターンシップ体験記・2015(神奈川大学 本田さん)

インターンシップ体験記・2015(神奈川大学 本田さん)

はじめに

こんにちは。神奈川大学経済学部の本田です。
8月31日~9月18日までの3週間、アットウェアでのインターンシップを経験させていただきましたので、その経験について書かせていただきます。

私はアジャイルチームとして、実践的なアジャイルプロセスを体験させていただきました。
開発したアプリケーションの概要や開発手順については先に投稿された幾谷さんの記事 コチラ をご参照ください。
3週間という長いようで短い期間のインターンシップでしたが、
まるで3年間ほどアットウェアで過ごしたかのように思える密度の濃い日々を送らせていただきました。
私が学ばせていただいたことは数え切れないほど多いのですが、中でも終生の思い出になると感じた3つの学びについて書かせていただきます。

アットウェアでの3つの学び

アットウェアのインターンシップを通じて私が学んだ3つのこと

  • HTML・CSS・bootstrapを中心とした様々な開発スキル
  • アジャイルプロセスがどのように開発現場で実践されているのか
  • 文系大学生として交流したことがない方々の生き方や考え方

HTML・CSS・bootstrapを中心とした様々な開発スキル

「Gitってなんですか?コマンドプロンプト使ったことないです」、これがインターンシップ初日の私の惨状でした。

アジャイルチームは私と幾谷さん計2人のチームで、
高専在学中の幾谷さんとプログラム未経験の私とでは時間にして7年分以上の経験の差がありました。
そこで私は浅学ながら少しだけ経験のあったHTMLやCSS等の開発のフロント部分を担当させていただき、幾谷さんがその他の全ての開発を担当する、という分担になりました。
しかし、フロント部分の開発だけでも相当に難航してしまいました。
冒頭でも述べたように私はGitの存在さえ知らず、幾谷さんとソースを共有するだけでも一苦労、という状態だったからです。
当然、HTMLエディタなんて使ったこともなく、ページの余白調整だけで丸一日を浪費してしまうこともありました。

このように、なぜインターンシップに応募しようと思ったのか?と思われても仕方がないような状況にも関わらず、社員の不破さんと矢納さん、幾谷さんは初歩の初歩から開発に必要な知識を丁寧に教えてくださいました。
不破さんにはCSSコーディングの一連の手法やデバッグの仕方を、矢納さんには私では手も足も出ないような技術の導入の仕方を、幾谷さんにはその他開発の途中で必要になる知識を逐一教えていただきました。

皆様のおかげで、ひよっこではありますが初日とは比べ物にならないくらいのスキルを身につけることができました。
springbootやbootstrap、gradleなんて聞いたことすらなかったのに、それらを触りだけでも扱えるようになったのはアットウェアの皆様のご教授があってのことです。
ありがとうございます。

アジャイルプロセスがどのように開発現場で実践されているのか

アジャイルプロセスという言葉はインターンシップ直前にネットで30分ほど調べただけで一体どのような手法なのか?やどんなツールを用いるのか?は全く知りませんでした。
しかし、この3週間の経験によってアジャイルプロセスがどんなものかおぼろげながら掴めた気分です。

特にアジャイルプロセス理解のための参考になったのは初日の武永さんのアジャイル講習です。
もし何も分からぬまま「アジャイル」という言葉を聞きかじっただけの状態で開発が始まってしまっていたら……、と考えるとこの講習にどれだけ助けられたか計り知れません。
開発中は何度もこの講習のノートをこっそりチートシートにして「イテレーション」や「スプリント」、「バックログ」といった用語を知ったふうに振舞っていました。
またアジャイルプロセスを実践するにあたって新井さんにはどれだけ感謝しても感謝しきれません。
私達のチームはタスクの切り分け方が雑だったり、足りなかったり、タスクにないことをやってしまっていたりと、
アジャイルプロセスを実践できていなかったところも多々あったのですが、新井さんは私達がどんなに失敗してしまっても、見捨てずにアドバイスをしてくださいました。
常に私達のことを案じてくださり、本当にありがとうございました。
一度失敗したことを二度失敗しないように今後も気をつけていきます。

アジャイル開発を実践させていただいたことで、
イテレーション毎の計画ゲームによるタスクの洗い出しや、イテレーション中のタスク管理、KPTによる振り返り等、
どんな本を読んでも決して学ぶことができない"アットウェア流"アジャイルプロセスを学ぶことができました。

文系大学生として交流したことがない方々の生き方や考え方

さまざまな知識を学べたことも良い経験でしたが、インターンシップでの一番の経験は多くの社員の方々と交流させていただいたことです。

私達はたった3週間のインターンシップ生であるにも関わらず、初日から最終日まで社員の方々はいつもにこやかに話しかけてくださいました。
毎日お座敷でお昼ご飯をご一緒させていただき、エンジニアリングや野球、家族の話など楽しかったり、ためになったりするお話をうかがうことができました。
休日には牧野さんのご自宅にお招きいただいてとてもおいしいご飯をいただき、とても楽しい時間を過ごすことができました。
このインターンシップでの一番大切な思い出です。

まとめ

このように私はアットウェアでのインターンシップでたくさんの知識と経験、思い出を得ることができました。

  • HTML・CSS・bootstrapを中心とした様々な開発スキル
  • アジャイルプロセスがどのように開発現場で実践されているのか
  • 文系大学生として交流したことがない方々の生き方や考え方

実は、私は就職での希望業界を全く考えておらず今までなんとなくパソコンが好きというだけで「希望業界はIT系・・・?」などと言っておりました。
今回のインターンシップも他のインターン生のような「これがやりたい!」という意思を持って参加していなかったことは否めません。

それでも今回のインターンシップを通じて将来はIT系に進みたいなあと明確に思えるようになりました。
他のインターン生と比べると私のスキルが劣っていることは明らかだったので、今後は猛勉強が必要だと思いますがこのインターンシップでの経験を思い出にがんばっていきます。

3週間本当にありがとうございました!

インターンシップ体験記・2015(奈良高専 幾谷さん)

インターンシップ体験記・2015(奈良高専 幾谷さん)

はじめに

奈良工業高等専門学校専攻科2年の幾谷です。 ソフトウェア工学を専攻し、以前から開発プロセスに興味があったので、今回アットウェアでのインターンシップに参加しました。 結論として、ここでのインターンシップは、ぼくにとって大きな衝撃と感動に満ち満ちていました。 とくに以下の3点について素晴らしい経験ができたと考えています。

  • アジャイル開発を実際に自分で計画・実行することができた
  • 実際にアジャイルツール(カンバン、KPTボード)を動かしながら開発できた
  • 新技術に飢えているハイスペックギークな方々とたくさんお話ができた

情報が好きで、プログラミングが好きで、新しいものが好きな方はアットウェアでのインターンシップに参加することを強く勧めます。 私がアットウェアで3週間どのようなことをしたかを記事としてまとめることで、IT企業を目指す就活生やインターンシップへ参加したい学生の一助になれば幸いです。

作成したいアプリケーションの決定

アットウェアでのインターンシップは8月31日から9月18日までの3週間でした。 アジャイルの手法にのっとって、2人のチームで自分たちで考えたアプリケーションを開発することが私のミッションでした。

初日(8月31日)にチームメンバーの顔合わせ、「アジャイルとは何か」についての講習、作りたいアプリのコンセプトの決定をしました。 アジャイルチームの社員の方々との検討の結果、我々は学生向けのマッチングサービスをWebアプリケーションとして開発することになりました。 コンセプトをインセプションデッキという形でまとめることで、より詳細に作ろうとしているアプリケーションを想像できるようになりました。

インセプションデッキの構築後は、タスクの洗い出しとユーザーストーリーマッピングを行いました。 社員の方々が実際に使っているやり方で開発の計画をつくることで、私のアジャイルへの理解がとても進みました。

スケジュール

2日目以降はおおむね以下の画像のとおりに作業を進めました。 実働10日間を2つのスプリントに分割し、それぞれの中で計画・開発・ふりかえりをまわすというやり方が基本となりました。

開発

開発はJava+Gradle+Springで行いました。 アットウェアでは多くの方がJavaでシステムを書いているので、困ったときにはすぐに質問できる環境になっていました。 10時から19時まで昼休憩を除いて、毎日7時間弱ぐらい開発に没頭していました。 開発時のタスクはすべてカンバンで管理し、毎日タスクカードがCheckIn -> ToDo -> Doneと流れていきました。

ふりかえり

各スプリントの最後にはふりかえりの時間が設けられていました。 ふりかえりでは、作成したプロダクトのデモ・KPTによるチーム改善・次のスプリントの計画を行いました。 毎週このようなデモがあるので、1週間の開発時間内に動く成果を出すことが要求されます。 すこしプレッシャーもありましたが、動く成果を出し続ける作業は進捗の明確化はもちろんのこと、作業者の精神衛生にとっても有益だと感じました。

デモの後はKPT法でいまのチームが「続けるべきこと(KEEP)」、「問題(PROBLEM)」、「問題解決のための施策(TRY)」を議論しました。 毎週このような場を設けて、定期的にチームを改善することで、アジャイルの土台が保障されるのだと思いました。

KPTのあとは次のスプリントの計画を行いました。 このスプリントで取り組むユーザーストーリーをバックログから選択し、それぞれについてタスクの洗い出しと見積もりをしました。

成果物

実働10日間の開発の結果、facebookアカウントで登録するマッチングサイトが完成しました。

まとめ

この3週間のインターンシップで以下のことをとても深く学ぶことができました。

  • アジャイルにのっとったソフトウェア開発のやり方(カンバンによるタスク管理、KPTによるふりかえりなど)
  • JavaによるWebアプリケーション開発(Java+Gradleの使い方、SpringによるWebフレームワーク開発)
  • 新しい技術を学ぶ姿勢、追いかける姿勢

学校の授業や独学でなんらかの情報技術を学んでいる人にとって、アットウェアでのインターンシップは、コーディングだけではないソフトウェア開発のイロハを学ぶために最適な機会になると考えています。 プログラミングをやっていない人にとっては(ぼくの相棒はプログラミング経験なしでした)、IT企業が実際にどんなことをしているのかを知るためや、プログラミングを自分の技術にするためのまたとない機械になると考えています。 すこしでも情報に興味があって、最先端の現場で通じる技を知りたい方は、是非アットウェアでのインターンシップに応募してみてください。

最後に、アットウェアの皆さんには、アジャイル手法の教示から開発の支援まで、さまざまな場面で多くのご支援をいただきました。 社会経験として、技術の鍛錬として、素晴らしい3週間をほんとうにありがとうございました。

【告知】TDD勉強会@みなとみらい

【告知】TDD勉強会@みなとみらい

TKG 「Tamago Kake Gohan」じゃなくて、
TDR 「Tokyo Disney Resort」でもなくて、
TDD 「Test Driven Development」

TDD(テスト駆動開発)とは、プログラム開発手法の一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、
そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させる、という短い工程を繰り返すスタイルである。
多くのアジャイルソフトウェア開発手法、例えばエクストリーム・プログラミングにおいて強く推奨されている。(wikipedia より

TDD 知ってます?

TDD 実際にどうやるの?

TDD プロジェクトで取り入れたことありますか?

TDD やってみてどうですか?

TDD 気になることありませんか?


そんなギモン・シツモンを抱えている方に朗報です!
JJUG CCC 2014 で TDD に関する登壇経験のあるグロースエクスパートナーズの大中さんを迎えて、
明後日9月18日(金)16時から弊社横浜本社(場所はココ)で「TDD 勉強会」を行います。
まだ参加者募集中ですので、ご興味のある方は是非ともご参加下さい!
https://keyatware.doorkeeper.jp/events/30962

※ JJUG:日本Javaユーザーグループ
※ CCC:Cross Community Conference

YOKOHAMA MARATHON 2016

YOKOHAMA MARATHON 2016

前回距離が不足していて話題となった横浜マラソンですが、
今回は2016年3月13日(日)に開催が決まり、今月9月1日からエントリーが始まりましたね。(公式サイトこちら

atWare にはマラソン部はありませんが、何人かはフルマラソン経験者がいます。(私もその一人)
先日社員でランチに行った際、スタート・ゴールが弊社のあるみなとみらい地区ということで、横浜マラソンの話題になりました。
するとあまり運動しなさそうなメンバから日頃からトレーニングしているメンバまで、数人がエントリーすることが判明!
地元優先枠や外国人優先枠(こちらは先着順!)があるので、多少当たる確率は多少上がりそうです。

フルマラソンのコースは、横浜の名所を回ります。(公式サイトより)
中華街を通らないのは残念ですね…

みなとみらい大橋[スタート]
 ↓
横浜スタジアム
 ↓
マリンタワー
 ↓
本牧周辺
 ↓
南部市場
 ↓
首都高速湾岸線
 ↓
本牧ふ頭D突堤折返し
 ↓
赤レンガ倉庫
 ↓
みなとみらい
 ↓
パシフィコ横浜[ゴール]  ↓ みなとみらい大橋[スタート]

募集人数は合計25,000人。
内訳はフルマラソン:23,950人、10km:1,000人、10km(車いす):30人、2km(車いす):20人
フルマラソンには以下枠が存在しています。(公式サイトから抜粋)

  1. 地元優先枠:3,000人(申込多数の場合は抽選)
    ・ 横浜市民(2,000人)横浜市在住の方
    ・ 神奈川県民(1,000人)横浜市以外の神奈川県在住の方
  2. 一般枠:19,450人(申込多数の場合は抽選)
    ・ 一般の方
  3. 外国人優先枠:500人(先着順)
    ・ 外国籍の方が優先的に参加できる枠
  4. 横浜マラソンチャレンジ枠:500人
    ・ 横浜マラソンへの参加機会の提供をきっかけとして、
    多くの方がランニングをはじめとしたスポーツを習慣にしていただけるよう、
    各区のマラソン大会や市内の各区スポーツセンターなどで実施する
    ランニング関連事業(ランニング教室やランニングイベントなど)と連携した参加枠を設定します。

フルマラソンであれば4~5時間近く走るまたは歩くことになるので、日常生活では考えられない運動ですね。
一応レースなので、皆さんテンション・アドレナリンが全開となり、本来のペースを保てなくなることが多々あります。
また沿道からは芸能人かのように応援・声援が聞こえてくるので、更に頑張ってしまいます笑
終盤になると、「ロッキーのテーマ」や「負けないで」を用意してくれる方もいて、ランナーに勇気とパワーと与えてくれます。
正直かなり辛いことばかりですが、完走出来た時の達成感は最高に気持ち良いですよ!
これからトレーニングを開始しても間に合いますので、特に横浜市民の方は応募してみてはどうでしょうか?締切は9月30日です。
きっと新たな自分と横浜が発見できますよ!!