チームスピリットデベロッパーブログ

チームスピリット開発者のブログ

Agile QA Night!!登壇レポート

こんにちは、QAチームの生井(id:riririusei99)です。

今回は私、生井が登壇しました、『Agile QA Night!!』のイベントをレポートします!

Agile QA Night!!とは

株式会社ビズリーチ様が開催する、「D3(ディーキューブ)」というプロジェクトチームでは、たくさんのイベントや勉強会を開催しており、今回は「Agile QA」というテーマで勉強会が開催されました。

Agileな組織が多くなっている昨今、QAはどのようにAgileに入っていくべきなのでしょうか。 今回はAgile開発に上手に入り込んでいるQAの方々をお招きし、以下のような話をしていきたいと思います。 (Connpassより)

d-cube.connpass.com

きっかけ


前回のブログで発表した内容が好評で、今回の勉強会の開催・参加が決まりました。

本当にありがとうございます。

参加レポート

さっそく発表の内容のレポートをします。

発表1:チームスピリットにおける品質保証の仕組み:リターンズ


speakerdeck.com

前回の発表の再演を依頼されていましたので内容はほぼ同じですが、AgileQAというテーマに則したように若干構成をいじっています。
また、前回の発表で話きれなかった部分などの補足などを追加しています。

発表した感想ですが、120人入る会場で登壇することは人生で初めてで非常に緊張しました。
といいつつも、社内のメンバーに向けてリハーサルを行った際盛大に失敗した発表をしていたおかげで幾分かリラックスして臨めました。
協力してくれたメンバーに感謝です。

※質疑応答の時間がとれなかったため、パネルディスカッションの質問については後述します。

発表2:伝統的な文化が根強い組織がAgileな感じにQA戦略を組み立てた


※資料は共有され次第、添付します

speakerdeck.com

次は認定スクラムマスター、認定スクラムプロダクトオーナーを所持されているacchanさんの発表です。
私も認定スクラムマスター取りに行きたい。

発表では既存の開発がいわゆる「なんちゃってスクラム開発」になっていたところに対して、

  • Heuristic Test Strategy Model
  • A new model for test strategies
  • MicroSoftによるScale Agile to Large Teams
  • QA2AQ

といった考え方をベースにしてスクラムと品質保証に取り組んでいるという内容でした。

個人的には、「開発、QAという境はなくチームがスプリント内で開発、テスト全てやる」という考え方と弊社の「QAは開発チームの1メンバーなので、スプリント内で開発・テスト全てやる」という考え方はとても近いかなぁと思いました。

参考リンク
Heuristic Test Strategy Model danashby.co.uk docs.microsoft.com www.wirfs-brock.com

発表3:Agile開発に入り込むQAの方法


3番目の発表については、開催・会場提供していただいているブロッコリーさんです。 Agile開発に入り込むQAというテーマで初めはQAの開発組織の関わり方について発表した後、モブプログラミングを開発者とテストエンジニアが行うというテーマで発表されました。

speakerdeck.com

  • 時間の経過を意識したテストケースの命名
  • テストエンジニアは指摘事項を言い切るべきか

といったテーマについては、日々の業務に直結するような内容で非常に参考になりました。

参考リンク nihonbuson.hatenadiary.jp

発表4:Agileな開発におけるテスト観点のお話(仮)


speakerdeck.com

発表の最後は「アジャイルな気持ち」と「テスト観点」について発表したなそさんの発表です。

アジャイルな現場とは居酒屋だというなそさん

  • 「スプリント:入店から退店まで」
  • 「プロダクトバックログ:伝票」
  • 「完了の定義:料理を提供し、お金を払う」

たしかにこの居酒屋に置き換えると理解が進みそう…積極的に使っていこうと思います。

さすがテストラジオを運営しているなそさん、発表が上手く、数々の名言が飛び出して来ました。

パネルディスカッション


さすがに、壇上で話していたのでここは若干、割愛。 詳しくはtwitterで「 #D3QA」で検索お願いします。 ここでは、パネルディスカッションで答えられなかった質問にいくつか答えていきます。

なまいさんのテスト計画書の具体例が見たいです。イメージを掴みたい!

すごーく簡素に書いてみました

項目 項目例 説明
品質 デモ利用可能なプロトタイプのの出荷 PM・ステークホルダーの要求を書く
リリース判定項目 優先度High以上のチケットが全て解決済み
シナリオテストの実施が完了している
実施体制 QA2名で実施
戦略 プロダクト品質のリスクを洗い出し優先順位を決めて実施する
QualityBacklog 以下に必要なタスクを計画する
(強化テスト) シナリオテスト,ユーザビリティテスト デモ利用のため性能テストは行わない
(手動テスト) テスト設計改善 上がったバグチケットを分析し、多発する観点をチェック項目に組み込む
(自動テスト) E2E基盤作成 本番機能開発に備えて基盤作成
スケジュール

以前書いた内容はこんな感じです。
teamspirit.hatenablog.com

Agileはいつも短いスプリントでの検証なので、たまに大きな検証漏れも発生する場合があり、それは解決するために何か素晴らい方法提案できるのでしょうか?

まずは大きな検証漏れがどんなものがあるか明らかにすること&合意するのが大事だと考えています。
プロダクトにおけるNever(絶対にやってはいけないこと), Must(できること),Want(できたら嬉しい)をPM・ステークホルダー・QAでそれぞれ出し合って合意しましょう。
そうすることで想定している大きな検証漏れが発生しづらくなります。 合意した内容は一度作ったら作りきりにせず、都度メンテナンスが必要です。

アジャイルでQAやっているのは楽しいですか?楽しいとしたらどのあたりが楽しいですか?

楽しいと思う瞬間はたくさんあります。個人的に思う3点を書きます。

  • 仕様作成から参画できるので自分のアイディアが反映されることがある
  • 機能実装の進め方もチームで決めるため、テストの量を(ある程度)コントロールしながら開発を進めることできる
  • チームで作ったものという意識が感じられるため、リリースのときはやっぱり嬉しい

開発者がQAが行うテストを日常的に行う(手伝う)ことってありますか?

実装するメンバーもQAも等しく開発チームの一員なので手伝う・モブテストやることはよくあります!

おわりに


組織の状態によってスクラム開発におけるQAエンジニアの働き方は違うのだなぁと感じました。
その上で、組織が成長することで自分たちの組織の中でも品質保証のやり方を変化させていかないといけない未来が見えてきました。
特に開発メンバーのテスト支援という部分で挑戦できる部分がたくさんあることがわかったので今後は、そういった部分でも注力したいと考えています。

f:id:riririusei99:20190315155130p:plain
発表の様子

We're Hiring!!


チームスピリットではQAエンジニア/開発エンジニアを絶賛募集しています!! 興味をもった方、詳しく話を聞いてみたい方は、以下のリンクからお問い合わせください!

www.teamspirit.co.jp

以上、登壇レポートでした。

"サービス品質向上しナイト ~みんなでテスト!10年続くチームと品質~" 参加レポート

こんにちは!
みなさん、品質もりもりあげていますか?(謎

チームスピリットデベロッパーブログ初登場のQAエンジニア角(id:naomi-s)です。

今回は弊社シニアQAエンジニアの生井(id:riririusei99)が登壇した、
『サービス品質向上しナイト ~みんなでテスト!10年続くチームと品質~』のイベントをレポートします!

サービス品質向上しナイト ~みんなでテスト!10年続くチームと品質~とは?

株式会社ウィルゲート様がいろんなテーマでエンジニアのための勉強会・イベント『Hacker's GATE』を開催されており、 今回は”品質”をテーマに、「組織」として品質向上に取り組む 3 社の発表とパネルディスカッションをする、というものでした。

小さなチームのうちは「個」の力で賄えていたソフトウェアの品質担保のプロセスが、組織の拡大に伴って属人化していしまい均一ではなくなってきた……そんな悩み、あると思います。

今回のイベントでは「組織」として品質向上に取り組む 3 社に発表・パネルディスカッションをしていただきます!(Conpassより)

f:id:naomi-s:20190215014311j:plain
弊社で開催され、開始時点で会場は熱気に包まれていました!

1.ウエディングメディアを支えるQAチームの取り組み

トップバッターは株式会社ウエディングパークの 斉藤 健太さんです。
斉藤さんは同社にエンジニアとしてジョインされたあとQA部門を立ち上げ、現在はエンジニアマネージャ兼QAマネージャをされているということでした。

f:id:naomi-s:20190215015329j:plain
ハートの公式キャラクターがかわいい♡

同社のQAチーム立ち上げ前には、

  1. サービス拡大による不具合の増加 
  2. ナレッジが蓄積できない 
  3. 改善しなければいけない危機感 

という開発の課題があったそうです。 この中で今回は1の課題への取り組みについてお話いただきました。

サービスが拡大するにつれ機能の増加や仕様の複雑化が進むことで、メンバーの「機能の把握度」や「仕様の理解度」が開発品質を大きく左右する状況となったため、 サービス仕様理解を深めることが大切!と様々なアクションを実施されたそうですが、そのひとつがなんと仕様の理解度を計測するための筆記テスト!それも役員まで含めた全社員に行っているとおっしゃっていました。

工夫ポイントとしては、筆記テストにすることで仕様の理解度を定量的に把握できるようにしただけでなく、障害分析に基づいて問題を作成することで社員の納得感が生まれるようにしたそうです。その結果、仕様や影響範囲を知っておかなければいけないという危機感がメンバーにうまれ、開発・テスト時の影響範囲漏れが減少した効果があったとか。

このような開発の課題に対する様々な施策の結果、最終的な成果はなんと障害発生率が(障害件数の減少により)前年度の半分に減ったのこと!すごい! (これには参加者の皆さんからも、おお!という声がもれていました)

speakerdeck.com

2.品質向上に向けた組織改革と成功失敗例

続いては、今回のイベントを企画された株式会社ウィルゲートの鶴飼 吉行さん。 執行役員 兼 開発グループ ゼネラルマネージャー 兼 開発グループ ソリューションユニット マネージャーの鶴飼さんが、同社の品質向上のための組織改革についてご説明くださいました。

f:id:naomi-s:20190215023753j:plain
熱く語る鶴飼さん

同社は2つの事業に対して3プロダクトがありそれぞれの事業フェーズが異なることから、求められるプロダクト品質が異なるという状況の中で、 開発チームとしての課題としては大きく以下の3つがあったそうです。

  1. エンジニアのキャリアパスがない
  2. 組織としてナレッジを蓄積する場所がない
  3. 品質という言葉でくくってはいけない問題(品質ってなに?という状況)

これらの課題のうち手として、事業部と紐付かない横断的組織である開発本部を発足させたとのこと。

その結果、開発本部発足1年後には新技術の導入による開発の生産性の向上・エンジニアのキャリアが多様化し、成果としては障害件数が1/3にまで減少したそうです。
一方で、事業フェーズの違いやピンポイントすぎるものなどの理由で横展開出来なかった、上長が組織ラインとセクションラインで2重になり意思決定が割れた、などの失敗もあったということでした。

このような経緯を踏まえ昨年は

  • 開発側から研究開発の提案実行
  • 他事業部との共同R&D
  • バグが混入しづらい仕組みづくり(アーキテクチャを刷新)
  • 技術の見える化(スキルマップと評価を策定し、見える化した)

などに取り組まれたとのことでした。

まとめとしては、品質向上に向け組織改革を進めるには『まず自社が求めていることとエンジニアができることを明確化すること』、つまり事業フェーズにあわせて品質というものを分解することが必要、そしてその後に事業に対してコミットできるようにする必要があるということでした。

speakerdeck.com

3.チームスピリットにおける品質保証の仕組み

最後の事例は弊社の生井から、チームスピリットにおける品質保証の仕組みについての発表でした。

f:id:naomi-s:20190215134943j:plain
TeamSpiritのTシャツ&パーカー&TSIカラーのスニーカーという勝負服で登壇!

まずは、チームスピリットが目指す未来のQA組織の説明から。 大きく『継続性・再現性』と『適応』の2つを達成したいということでした。 一見相反するようなこれら2つはそれぞれ、

  • 継続性・再現性:サービス開発に終わりはない。全体感を意識した仕組みを作る(属人化させない)←ルール・戦術
  • 適応:チームの変化や適応できる余力をもつ←得意な分野で勝負する

ということを意味しており決して相反するものではなく、チームとしてベースとなるルールや戦術を共有しつつ、品質向上のために個々人の得意な分野を活かすという在り方を提案していました。

その後、現在のチームスピリットのスクラムの特徴について説明を行いつつ、スクラム×QAについて熱く語りました。 様々な工夫などの紹介が、多くの方の気づきにつながることができたようです。

speakerdeck.com

パネルディスカッション

休憩を挟んで行われた登壇者3名によるパネルディスカッション。 事前に参加者アンケートから選ばれた質問を登壇者に回答していただきました。

その前に、このイベントの参加者の属性を簡単に調査すると、

  • エンジニア:約半数
  • QAエンジニア:約1/3
  • PM:1割程度
  • その他:数名

そして、自社にQAチームがある方はおよそ半数でした。想像より少なかったので、開発エンジニアの兼務もしくはこれから立ち上げを検討している方々が多かったのでしょうか。

f:id:naomi-s:20190215210428j:plain
皆さんの質問を真剣にきいてます

いくつかの質問に真剣に回答、ときにはパネラーからパネラーへ質問するというシーンもありました(笑)

イベント終了後は生井の乾杯のかけ声で懇親会も開かれ、ピザをつまみつつ皆さん交流を楽しんでいました。 生井に多くの方が声をかけてくださり、様々な話ができたようです。 f:id:naomi-s:20190215210819j:plain

イベント後の様子

イベント後は全パワーを使い切っていた生井。 翌日に感想を聞いてみました。

『チームスピリットのQAチームはスクラムに寄り添って活動していることを紹介できたと思います。
沢山の人に興味を持っていただけたので、今後も発信できればと思います。
発表については社内でのリハーサル・当日の運営などたくさんの協力がありました。
結果として、喜んでもらえる勉強会になったので会社のメンバー・運営の方には感謝でいっぱいです。』

f:id:naomi-s:20190218110627j:plain
開催中のヒトコマ

We're Hiring!!

チームスピリットではQAエンジニアを絶賛!募集しています!!
興味をもった方、もっと詳しく話を聞いてみたい方は、ぜひ以下のリンクからお問い合わせください! 一緒に品質をもりもり上げていきましょう!!!

www.teamspirit.co.jp

Salesforce コミュニティ合同イベント「Japan Dreamin' 2019 」に参加してきた

こんにちは、プロダクトディベロップメントチームの倉谷(id:a-kura)です。

Salesforce コミュニティ合同イベント「Japan Dreamin' 2019」が2019年1月26日(土)に開催、「繋ぐ」をキーワードに日本全国のコミュニティが大集結しました。簡単ですが、参加レポートを書かせてもらいました。

www.trailblazers.jp

Dreamin' とは

Dreamin' とは、全世界で開催されている Salesforce の Community Conferences になります。大きなイベントでは企業スポンサーをつけて2日間開催する、など活発に活動しています。

Japan Dreamin'

今回は、その Dreamin' を日本で開催しました。公式の紹介はこちらです。

「繋ぐ」をキーワードに全国のコミュニティが大集結!!

User、Admin、Developer、自身の壁を少し超える事で繋がりができ、お互いの理解が深まり、より一体感を持てることができるかと思います。

地域、会社をも跨いで繋がって行きましょう!!!

続きを読む

フロントエンド・アーキテクチャ Meetup 参加レポート

こんにちは。プロダクトディベロップメントチームのエンジニア id:tsi-shinjo です。 今回は、先日(2019/01/24)開催した フロントエンド・アーキテクチャ Meetup by scouty × TeamSpirit についてレポートします!

teamspirit.connpass.com

今回のイベントについて

今回は、幅広いテーマでLTをする「ほろよいてっく」とは異なり、「フロントエンドアーキテクチャ」という観点でそれぞれの知見を共有する、という目的で、株式会社scouty様と合同で開催されました。ライブラリやフレームワークの使い方・テクニックについて扱う勉強会が多い中で、「フロントエンドの設計」に絞ってのイベントはなかなか珍しいのではないかと思います。

1. フロントエンド設計の話 / 株式会社scouty 翁さん(フロントエンドマイスター)

scouty翁さん(1) scouty翁さん(2)

最初は、株式会社scoutyのフロントエンドマイスター(!)、翁さん( @kahirokunn )のLTで始まりました。

Atomic Design や、それにインスパイアされた Atomic Componentといったデザイン手法、他の発表者の話題にも上がっているDDD(ドメイン駆動設計)のほか、内部状態の整合性を保つための設計パターンとして Flux, CQRS, QueryComponent, Business Logic Component など、さまざまな設計手法をご紹介いただきました。

Atomic Design や Flux (Redux) は弊社のフロントエンドでも採用していますが、改めて他の設計手法も眺めると、それぞれの特徴が見えてきて興味深いですね。Atomic Component については実装例もご紹介いただいたので、実際にコードを読んでみるのも面白いです!

2. TeamSpiritのフロントエンドアーキテクチャ / 株式会社チームスピリット 横山(フロントエンドアーキテクト)

TS横山(1) TS横山(2)

続いて、弊社のフロントエンドアーキテクト・横山によるLTです。弊社ではDDD(ドメイン駆動設計)をフロントエンド設計に取り入れていますが、なぜそれを採用したのか、React+Redux上でDDDを実装するにはどうすればよいかといったノウハウを、コードを交えて簡潔に説明してくれました。

DDD自体、例の分厚い本を読むのはかなり骨が折れる(しかも実践DDDはフロントエンドについてはほとんど言及されていない)ため、実践しようにもなかなか難易度が高いですが、こうしてフロントエンドDDDの実践例を見ると、いまチャレンジしようと考えている方にはとても心強く感じるのではないでしょうか。

3. チームスピリット社のFEメンバーがドメイン駆動を取り入れようとしてきた歴史の話 / 株式会社チームスピリット 植田(プロジェクトマネージャ・元フロントエンドエンジニア)

TS植田(1) TS植田(2)

休憩を挟んで三番目は、弊社プロジェクトマネージャの植田から。先ほどの横山のLTを受けて、弊社のチームがDDDを取り入れるまでにどのような試行錯誤がされたか、という話でした。

ディレクトリ構造の設計とその変遷、Flowtype導入の経緯など、DDDに限らず「チームスピリットのFEチームがどういった悩みをもっていて、どう試行錯誤を繰り返して設計してきたか」が、実感を交えつつ説明されていました。似た悩みを感じている方はたくさんいると思うので、共感された方はぜひ実践していただきたいですね!

4. 何故 TeamSpirit には DDD が必要だったのか / 株式会社チームスピリット 湊(開発マネージャ兼フロントエンドエンジニア)

TS湊(1) TS湊(2)

最後は弊社の開発マネージャ・湊が、なんと出張先のシンガポールからリモートで発表してくれました!(何故か向こうのオフィスは今日にかぎって照明が薄暗く、映像がちょっとホラーになっていましたが……)

湊もまたDDDを取り入れるまでの経緯を語ってくれましたが、植田のLTとは異なり、「複数のチームに分かれて開発する上でDDDはどう役立ったか」という観点からの話でした。「DDDという設計方針が存在することで、チーム内だけでなく、チームを超えた関係性にも秩序が生まれるようになった」という話は、今までにない視点で興味深かったです。DDDは開発が大規模であるほど享受できるメリットが大きいので、プロダクトのフェーズを見ながら良いタイミングで導入していきたいですね。

まとめ

「フロントエンドアーキテクチャ」という話題に絞ったMeetUpでしたが、それぞれに異なる視点からの考察があり、とても多様性があり興味深い会でした。LT後の懇親会では至るところでDDDについての話で盛り上がっていたようです。

DDDアンケート 開催後のアンケートを見ると、「ドメイン駆動設計は聞いたことがある or 学習をしたことはあるが、実際の業務では活用していない」という方が多かったようです。 「今回のMeetUpを受けてドメイン駆動設計(や他の設計手法)を試してみた」という方が増えると嬉しいですね。その際はぜひご登壇をお願いします!

実践ドメイン駆動設計 (Object Oriented SELECTION)

実践ドメイン駆動設計 (Object Oriented SELECTION)

次回は2月13日(水)に、 サービス品質向上しナイト ~みんなでテスト!10年続くチームと品質~ というイベントを開催予定です。弊社のシニアQAエンジニアも登壇予定ですので、ご期待ください!

willgate.connpass.com

We're Hiring!!

チームスピリットではエンジニアを募集しています。興味をもった方、もっと詳しく話を聞いてみたい方は、ぜひ以下のリンクからお問い合わせください!

www.teamspirit.co.jp

ほろよいてっく〜冬休み直前バージョン〜 参加レポート

こんにちは!プロダクトディベロップメントチーム松田 (id:a-matsuda)です。
東京でも初雪が観測されるなど、寒さ深まる今日この頃ですが、みなさまいかがお過ごしでしょうか。
さて今回は、昨年12月27日に開催した『ほろよいてっく〜冬休み直前スペシャル〜』の様子をレポートします!

ほろよいてっくとは

今回で3回目の開催となった「ほろよいてっく」。乾杯からスタートするほろよいてっくは、お酒を楽しみながら自由なテーマでLTを披露していく会で、社内メンバーだけでなく社外の方の飛び込みLTも大歓迎!!
気楽な雰囲気で、楽しみながらテックも学べてしまうのが、ほろよいてっくの魅力です。
過去のほろよいてっくも記事になっていますので、ぜひご覧ください!

teamspirit.hatenablog.com

 

乾杯!

弊社QAエンジニア・生井の掛け声の元、「ほろよいてっく」が始まりました!
今回も、SALVATORE CUOMOのビザとアルコールで乾杯。

f:id:teamspiritinc:20190112182948p:plain

 

Lightning Talkスタート

1. 「A QA engineer’sTool」by Rysei NAMAI

トップバッターは、最近”スニーカー”という趣味が増えた、QAエンジニア・生井です。
「チケット優先順位」および「テスト計画」の施策内容と、なぜそういう施策になったかの背景をシェアしてくれました。うまく回っている現場では、当たり前のようにやっていることも多いかと思いますが、なぜそれが必要なのかわかっていないと手段が先行してしまうこと、ありますね。ちゃんと背景を理解していれば、状況が変化した時にも、柔軟に形を変えていくことができそうです。

f:id:teamspiritinc:20190112184156j:plain

2. 「UTF-8入門」by Yoshihito NAKAHATA

続いて、前回のほろよいてっくのLT「オブジェクト指向とは何か?」が大好評だった、フルスタックエンジニア・中畑。今回もテーマ選びが秀逸です。
文字コードの基礎、Unicode/UTF-8の概要、エンコード/デコードそして脆弱性と、15分で語るにはかなり奥深い内容が、中畑のテンポで展開されました。(笑)
当たり前のIT技術が増えているなか、技術の成り立ちを理解せず使うことも増えていますが、こうやって興味を持つことはエンジニアとしての応用力に繋がりますよね。

f:id:teamspiritinc:20190112184416j:plain

3. 「モバイルでアトミックデザインをやった話」by Shodai YOKOYAMA

次は、弊社フロントエンドエンジニア・横山から。React.js のコンポーネント設計にAtomic Designを取り入れた話でした。Atomic Design の考え方や解決できることから、具体的にどのように導入していったのか、なぜうまくいったかまで、リアルな体験に基づく内容でした。継続開発のためにも綺麗なコンポーネント設計をと考えるエンジニアやチームは、Atomic Designを検討してみたらいいかもしれません。プレゼンテーションとビジネスロジックがちゃんと分離していれば、検討の価値がありそうです。

f:id:teamspiritinc:20190112184716j:plain

4. 「いとをかしな芬国記」by Chikara ISHIKAWA(飛び入り!)

飛び入りで社外から参加いただいた石川さんが登壇くださいました!LTに聞き入ってしまったため、写真を撮り忘れてしました。申し訳ありません!

学生時代苦手だった英語をどう克服してきたかの話。学生時代に北欧留学をし、留学先で「「自分が話せるスピード」=「聞き取れるスピード」」ということに気づいて、海外ドラマをみながら、オーバーラッピング(字幕を英語にして俳優と一緒に喋る)やシャドーイング(字幕なしで遅れて喋る)を始めたそうです。オーバーラッピングは効果があり、なんと留学前後でTOEICのスコアも400%UPしたとか。私もシャドーイングは継続していますが、効果を実感した方の話を聞くと、励みになりますね!

5. 「Salesforce + React Native」by Tatsuya SHINJO

続いて、フルスタックエンジニアで、Devリーダーとしても活躍する多才なエンジニア・新上のLTです。イカのレベルもすごいんですよ。
私たちは、Salesforce Lightning Platform の開発基盤で開発をしています。Salesforceでモバイルアプリというと、Salesforce公式アプリが思い浮かびますが、それ以外にも、MobileSDKから作る方法、ReactNativeで開発する方法などがあります。今回はReactNativeで一部機能を開発してデモをしてくれました。色々できそうで面白そうですね!

f:id:teamspiritinc:20190112185901j:plain

 

6. 「初詣の前に」by Kaoru NAITO

唯一の女性フロントエンドエンジニアとして活躍する内藤。神社好きで知られる彼女、テックから離れて「神社とは何か?」を存分に語ってくれました。
祈り、感謝、誓いなど、日本人の生活のなかに入り込み、自然に行う行為の一つだと思いますが、全て神道からきているもの。祈り、感謝、誓いなどを通して、心は強くなるものと内藤。
みなさんは、年始は初詣に行かれましたか?神社は「自分自身を省みる場所」であり、「去年のことを感謝して、今年のことを祈って、今の自分に誓ってみる」のが本来の参拝だそうです。ぜひ来年の初詣にお役立てください!

f:id:teamspiritinc:20190112190344j:plain

7. 「英語学習という海に漂流して行き着いた先は・・」by Akiko MATSUDA

私・松田は、英語学習の海を漂流してきた話をしました。私の英語学習の歴史、独断と偏見に満ちた英語学習比較、そして辿り着いた英語コーチングスクール。
コーチングスクールの売りはコーチングですが、その仕組みはまるでスクラムでした。開発以外でもスクラムの仕組みは適用できること、またスクラムという仕組み自体が売りになっていることは、とても驚きでした。
自己管理に自信のある方は、継続学習にぼっちスクラムを取り入れてはいかがでしょうか?

8. 「英語を勉強する上で大事なたった1つのこと」by Yoshiaki MINATO

マネージャー兼フロントエンドエンジニアで、来年からTeamSpirit Singaporeにジョイン予定の湊。今一生懸命向き合っているのが、英語学習です。
「現地のエンジニアと必要最低限、仕事のコミュニケーションだけ取れるようにする」を目標に据え、最短で目標を達成するために湊が行なっていることをシェアしてくれました。単語を覚える→フレーズを覚える→実践する→繰り返すと言う感じでサイクルを回しているそうです!いいことを言っているのですが、なぜか面白くおかしく湊らしく、という印象が残るのは、やはり湊のキャラクターによるものでしょう。

f:id:teamspiritinc:20190112190758j:plain

9. 「誰も教えてくれない「開発」のこと」by Akira KURATANI

最後はPDチームディレクターの倉谷のLT。すごーく中身がきになるタイトルです笑
開発で考えること4つ(進行、仕様、設計、品質)を、ひとりプロジェクト、ウォーターフォール、スクラム、失敗するスクラム、アジャイルでは、誰がどこをみるのかを倉谷の視点で定義。
倉谷のLTのキモは、誰かが言っていることではなく、倉谷が考えていることを披露したところ。参加者も、どうあるのがいいだろうと考える機会になったのではないでしょうか。新しいことに挑戦していれば、誰も経験したことがないことにぶち当たるかもしれません。自分の頭で考えることが大事という真理を伝えてくれました。

f:id:teamspiritinc:20190112190829j:plain

 

まとめ

LT後は、LTのネタを肴に、あちこちで会話が盛り上がっていました。参加してくださったみなさまから、色んな話が聞けて面白かったという感想もいただきました。
ほろよいてっくでは、社外からの参加&飛び入りLTも大歓迎です!次回は春先に開催予定ですので、お楽しみに!!
また、チームスピリットでは、社外の方も参加可能なMeetupを不定期で行なっています。1月にはフロントエンド・アーキテクチャ Meetupを、2月には品質向上のMeetupを開催予定。こちらも奮ってご参加くださいませ♬

エンジニア募集♪

チームスピリットではエンジニアを募集しています。チームに興味を持っていただいた方、ご連絡くださいね。(直接メッセージでも、下記の応募フォームからでも構いません)

エンジニア募集

 

 

チームスピリット アドベントカレンダー2018を総括

こんにちは。QAエンジニアの生井(id:riririusei99)です。

12月25日はアドベントカレンダーの最終日です。 早いもので開始から最後のエントリーまであっという間だったという感じがします。

adventar.org

総括ということで今回は2018年のアドベントカレンダーの投稿について(役に立つか分からない)一言コメントを添えて紹介します。

まとめ

1日目

アドベントカレンダーのスタートを飾ったのはディレクターという役職で幅広い活動をしている倉谷のLightning プロセスビルダーに関連する投稿です。
社内ではチームリーダの役割も持つ倉谷ですが、こういった活動に積極的に参加してくれてとても嬉しいです。

teamspirit.hatenablog.com

2日目

シンガポール拠点のライアンのSalesforce Basecampの参加レポートです。
写真多めで楽しそうなのが伝わってきたので、参加レポート書くときはたくさん写真を撮ろうと思いました。 teamspirit.hatenablog.com

3日目

チームスピリット社が誇る情熱エンジニアが綴るシェルスクリプトに関する投稿です。
弊社が開催しているほろよいてっくで毎回発表をしていますので、興味があるかたはそちらも是非お越しください。 pokuwagata.hatenablog.com

ほろよいてっく ほろよいてっく〜冬休み直前スペシャル〜 - connpass

4日目

プロダクトマネージャのスキルを念能力に例える投稿です。
これを読んだ時にQAエンジニアで考えたらどう考えるか…と他の職種でも考えたくなりました。 niseissa.hatenablog.com

5日目

開発チーム内で定期的に開発されるテックランチを取り扱った投稿です。 読むとナポリタンが食べたくなる。…そんな内容です。(冗談です。) teamspirit.hatenablog.com

6日目

フロントエンドテックリードによる渾身の今年の振り返り。 ちなみに彼は、会社の社員紹介ブログの記念すべき第1回を任されています。

2018年を振り返る · GitHub

7日目

参画したばかりのメンバーにも記事を書いてもらいます。 今日までの経験を基にSalesforceの紹介をしていただきました。 a-nakaya.hatenablog.com

8日目

写真×バックエンドエンジニアであるTsuruokaの投稿です。

trrrrok89.hatenablog.com

ちなみに前回のほろよいてっくの写真も撮っていただいています。 ほろよいてっく〜夏の自由研究発表会!〜 参加レポート - チームスピリットデベロッパーブログ

9日目

Aceによるシンガポール拠点の様子を書かれた投稿です。オフィスがとてもキレイ。
チームビルディングのツールとして卓球をしていますが、日本のオフィスはSplatoonができます。

htike-ace.hatenablog.com

10日目

和服系フロントエンドエンジニアによる。猫100%な記事。 地域猫活動って初めて聞きました。勉強になります。

naito-kaoru.hatenablog.com

11日目

QAのKaoによるオフィスをクリスマス仕様にしてくれた記事。
オフィスに季節感をもたせると違う気分になれてとてもいい感じです。 kaesanno.hatenablog.com

12日目

開発チームがはじめたアドベントカレンダーですが、弊社マーケティングチームの竹田にも協力していただきました。 SWTTで弊社倉谷が登壇した様子をレポートしています。

チームスピリット 倉谷、「Salesforce World Tour Tokyo 2018」で行われたEinsteinに関するセッションに登壇! |チームスピリット

13日目

休暇中のQAエンジニアにもアドベントカレンダーを書いていただきました。 旅行先のドイツについてレポートしてくれています。自分も休みをとって旅行したくなりました。

703de.hatenablog.com

14日目

JerryによるLightning Componentの紹介です。
彼とはF1の感想をSlackで飛ばし合う仲なので、一緒にシンガポールにグランプリ見に行く際には向こうのオフィスでリモートワークしたいです。

ye-jerry-teamspirit.hatenablog.com

15日目

2018年いちばんヒットした記事を書いたプロデューサーの若林による、会社ブログの解析記事です。 総括の記事を書いてて気づいたのですが、サムネに会社のロゴが写ってるんですね。

teamspirit.hatenablog.com

16日目

プロダクトマネージャの古川によるFlutterとSalesforceの連携に関する投稿。 ごめんなさい、まだ読めてないです。この記事を書いてるまさに今、記事があがったみたいです。

teamspirit.hatenablog.com

17日目

私、生井によるチームスピリット社での仕事内容を書きました。
同じQAエンジニアでも仕事内容違ったりするので参考になれば… teamspirit.hatenablog.com

18日目

二宮による2拠点による開発の話と英語によるコミュニケーションについての投稿です。 英語、自分の思ったことがスラッとでるように頑張りたいです。 teamspirit.hatenablog.com

19日目

Prashantによる"Key to have a good work life balance" タイトルの通り…卓球・そしてマッチョな投稿です。(職場での働き方について言及しています) singh-prashant.hatenablog.com

20日目

新婚開発リーダーのApex自動テストの記事。 品質に対して強い関心をもっている気さくなお兄さんです。 qiita.com

21日目

弊社マネージャによるデベロッパーブログを振り返る記事。 12月25日公開って完全に本投稿と被せに来てますね…(笑)

teamspirit.hatenablog.com

22日目

じょーん(これがやりたかった) Salesforce女子部に所属してるRangerエンジニアのSWTTの参加レポートです mihoko-az.hatenablog.com

23日目 & 24日目

まとめが終わった後に公開される…はず!!!

総括

一言コメントを追加して紹介するだけなのに、想像以上に時間がかかりました…。
ですが、昨年のアドベントカレンダーに比べてたくさんのメンバーが参加することができました。
単純にメンバーの数が増えたのもありますが、様々なメンバーでプロダクトの開発を行っています。 弊社に興味がありましたら、右側の採用ページのリンクを押してくださいね!(露骨)

というところでアドベントカレンダーの総括を終わりにしたいと思います。

本投稿はチームスピリットアドベントカレンダーの25日目の投稿でした。

adventar.org

Flutter から Salesforce へ繋げてみた。

こんにちは。

株式会社チームスピリットの古川(id:furukawa-hisakatsu)です。

前回に引き続き、技術的な話となります。 今回は私自身も初めて触ってみましたが、昨年(2017年)からリリースされており、じわじわと人気が上がっている「Flutter」を使用してSalesforceと繋げてみました。

後、この記事はチームスピリット Advent Calendar 2018の16日目です。(大遅刻)

adventar.org

How to Flutter

Flutterとは?

そもそもFlutterとはなんぞやという人向けに、まずFlutterに関して軽く説明します。

Flutter自体は、Googleにて開発されており、主な用途としてはAndroidやiOS(iPhone)向けのモバイルアプリケーションとして利用されます。 メインの言語としてはあまり有名ではないが「Dart」言語を使用して開発します。 また、XamarinやReact Nativeと同様、一つのソースコードでAndroidやiOS(iPhone)開発ができるクロスプラットフォーム開発も行うことができます。

そのため、今回はAndroidやiOS(iPhone)にて動作し、Salesforceに接続して情報を取得しよう!が目的となります。

Flutter開発をしてみよう

Flutter開発に関してはそこまで敷居は高くなく、公式HPからインストール手順に従うことにより、手軽に開発することができます。 (iOS開発を行う場合は、Apple Developer Programの契約とMacOSが必要ですが)

flutter.io

また、Flutterに関しては他のライブラリに比べて、親切にも正常に設定されているかを検査する「doctor」機能が実装されており、 手軽さに拍車がかかります。

また、開発用IDEとしてAndroid StudioやXcodeにてそれぞれ機種のエミュレーションが可能となりますが、 実際の開発、検証を行う場合は実機による開発や検証をおすすめします。 (今回サンプル作成時も色々と悩まされました…)

実際に接続しよう

今回のサンプルコード

github.com

実行方法

  1. 上記URLから、Gitで取得する、もしくはzipファイルをダウンロードして適当なフォルダに解凍してください。
  2. Salesforceにログインを行い、接続アプリケーションの作成を行い、「コンシューマ鍵」と「コールバック URL」を「lib/settings.dart」の5~6行目に格納してください。
    (詳細な設定方法は以下「接続アプリケーションの設定」をご確認ください!)
  3. 該当フォルダかたコマンドプロンプトやターミナルを開き、「flutter run」を実行すれば、できるはずです!
    (できなかった場合、記載されているコマンドを実行してみたり、「flutter docter」で設定が問題ないかを確認してみてください。)

説明

今回のサンプルではSalesforceとの認証を行い、ユーザ情報を表示するだけのシンプルな画面となっております。

f:id:furukawa-hisakatsu:20181225203429p:plain
FlutterToSalesforce

処理の流れ

  1. まずエントリとして「main.dart」に接続され、「settings.dart」からスマートフォンのストレージにて保存されている情報を取得します。
  2. 保存されている情報がなければ「connect/connect.dart」に移動し、WebViewにてSalesforceのログイン画面を表示し、認証します。
    認証後には「setting.dart」からスマートフォンのストレージにて保存され、「main.dart」に移動します。
  3. 「settings.dart」に保存されている情報があるため、「user/user.dart」に移動し、ユーザ情報を取得して表示されます。
  4. 右上の「ログアウト」をタップし、「はい」を選ぶことにより、「settings.dart」からスマートフォンのストレージにて保存されている情報をクリアし、「main.dart」に移動します。

Salesforceとの接続の話

今回のSalesforceとの接続に関しては、ユーザ情報の取得に関しては、よくあるREST API Queryを使用しているため、説明は割愛します。

認証に関しても、一般的なWeb サーバ OAuth 認証フローにて行っており、リダイレクト先自体は自身である「localhost」を指定し、URL情報から認証コードを取得する形となります。 ですが、今回は一般配布向けのアプリケーションであるため、通常で使用される「コンシューマの秘密」は使用せず、「コンシューマ鍵」のみを使用した認証方法となります。 それにより、以下の接続アプリケーションの設定がほんの少し違う形となっております。

接続アプリケーションの設定

さて、Salesforceと接続するための設定を行いましょう。 基本的な設定に関しては前回記事を参考にしてください。以下は変更点のみを記載します。

f:id:furukawa-hisakatsu:20181225215537p:plain
接続アプリケーションの変更点

  • コールバックURLには自身である「localhost」を指定しましょう。(例:「http://localhost:25640」)
  • 今回は「コンシューマ鍵」だけで認証を行うため、「Web サーバフローの秘密が必要」にチェックを外しましょう。

実行してみましょう

f:id:furukawa-hisakatsu:20181225221020p:plain

少し苦戦するところはありますが、簡単にモバイルアプリケーションができました。

締め

今回Flutterにてモバイルアプリケーションを開発してみましたが、まだまだ不具合等もちらほら見えており、まだまだ発展途上ではある状態となっております。 ですが、クロスプラットフォーム開発ができるメリットはそれぞれの言語習得や労力を上回る成果を出してくれます。 Flutter以外にもいくつか選択があります為、自分に合った言語やライブラリを探してみてください。

(自分としてはUnityでモバイルゲームを作ってみたいですね)