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

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

チームスピリット アドベントカレンダー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でモバイルゲームを作ってみたいですね)

チームスピリットデベロッパーブログを振り返る

こんにちは。プロダクト開発チームの松田(id:a-matsuda)です。

今年も残りわずかとなってきましたね。年末といえば 1年を振り返って成果を祝福したり、できなかったことを反省したり。そして来年は何をしていこうかと次なる目標を考え始める時期ではないでしょうか?

そこで今回は、はてなブログに引越しをして丸 2年となったこのチームスピリットデベロッパーブログを、google Analyticsのデータをみながら、振り返っていきたい思います。

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

チームスピリットのプロダクト開発チームの有志メンバーで書いているブログで、12月のAdvent Calendarの時期は、投稿数が多くなります(笑)これまでは、魂のブログという会社ブログのなかで投稿をしていましたが、2016年12月に独立、はてなブログに引越しをしました。

ブログビュー数ランキング

さあ最初は、みなさんがきっと気になる「ブログビュー数ランキング」です!

第5位:Slack×GAS 契約自動更新サービスの稟議忘れを防ぎたい!(ビュー数:461)

teamspirit.hatenablog.com

Slack×GAS連携を取り入れてから1年が経ちますが、おかげさまで稟議申請忘れが大幅に削減され効果を実感しています。 この記事でもご紹介している通り、Googleカレンダーの情報を抽出してSlackに通知をするなど、GASとSlackを連携させることで業務効率化や品質向上に繋がる様々な仕組みを構築できるので、そのあたりが注目されたのかもしれません。

第4位:入社して10ヶ月がたったので入社エントリ書く(ビュー数:512)

teamspirit.hatenablog.com

メンバーの入社エントリーですが、チームスピリットの自由な働き方や仕事に集中できる環境について紹介をしてくれています。 フレックスタイム制、スタンディングデスク、リモートワークやチームの雰囲気など盛りだくさんなので、気になった方はぜひチェックしてみてください。チームスピリットの働き方や環境に注目が集まることは、とても嬉しいことですね!

第3位:スクラムMTGに【Lean Coffee (リーンコーヒー)】を導入してみた!(ビュー数:642)

teamspirit.hatenablog.com

Lean Coffee というミーティング方法をご存知でしょうか? ご興味の湧いた方は、ぜひ記事をご覧くださいね! この記事に注目が集まったのは、みなさんミーティングのやり方について試行錯誤をしているということかもしれません。 新しいミーティング方法があれば知りたい、もっと良いミーティング方法はないのだろうか?と考えている読者のアンテナに引っかかったのではないでしょうか。

第2位:Amazon Echo から Salesforce へ繋げてみた(ビュー数:866)

teamspirit.hatenablog.com

GoogleHomeやAmazon Echoに世の中の注目が集まっていた2017年の記事で、GoogleHomeやAmazon Echoで何ができるのか、色々試してみようという動きが多かったですね。そういう意味では、世の中の興味・関心にマッチした内容になっていたことが、記事のビュー数アップに繋がったのかもしれません。

第1位:Google Homeから音声で出退社を記録する(ビュー数:1213)

teamspirit.hatenablog.com

圧倒的なビュー数で第1位を獲得したのは、GoogleHomeとTeamSpirit連携です!!おめでとうございます。 第2位と同様、2017年の記事で、GoogleHomeには注目が集まっていました。第2位からダントツ引き離したのは、やはりTeamSpiritと連携するというチャレンジをしているところでしょう。TeamSpiritのユーザ様をはじめ、エンジニアにも刺さる記事だったことは間違いありません!

アクティブユーザ数の動向は?

ランキング以外も振り返っていきましょう。アクティブユーザ数(以下AU)とは、特定の期間内にサイトを訪れたユーザーの数を表す指標のことです。月別のAUは2017年12月以降大きく増加しています。2017年のAdvent Calendarに取り組んだ後から増えていますね。ランキング第1位、第2位の記事が投稿されたのもこの時期です!

f:id:teamspiritinc:20181224232746p:plain
アクティブユーザ数

ユーザの地域は?

日本、シンガポール以外に、アメリカからのアクセスもありますね。Dreamforceに参加したチームスピリット社員からの閲覧かもしれません。今後はますます、世界のエンジニアからも注目される記事を書いていきたいですね。

f:id:teamspiritinc:20181224233748p:plain
セッション数(国別)

もっともよく使われるデバイスは?

まだまだPCからの閲覧が多い印象です。お仕事中にみてもらっているのでしょうか。

f:id:teamspiritinc:20181224233834p:plain
デバイス別セッション数

まとめ

簡単ではありますがチームスピリットデベロッパーブログの2年の奇跡を振り返ってみて、いくつかの気づきがありました。 これらを生かして、来年もこのブログを盛り上げていきたいと思います!!

  • (当然ですが)世の中の興味・関心が集まっている技術や取り組みに注目が集まること
  • TeamSpirit×興味・関心のある技術の組み合わせに期待されていること
  • Advent Calendarは新しい読者を獲得できる素晴らしい取り組みであること
  • 日本やシンガポール以外の国でも記事をみてもらえるチャンスがあること

エンジニア募集♪

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

エンジニア募集

終わりに

最後になりましたが、この投稿は チームスピリット Advent Calendar 2018 - Adventar 第21日目の投稿になります。

TeamSpirit Singaporeと日本の開発チームがうまくやってる話

Hi everyone! TeamSpirit Singaporeの二宮です。
私がTeamSpritの海外開発拠点の社員一号として入社し、気づけば6ヶ月が経ちました。

前回のTeamSpirit Singapore紹介記事はこちら。

teamspirit.hatenablog.com


今ではシンガポールのメンバーも増え、日本の開発チームと連携しながら、いい感じに開発が進められるようになって来ました。
今回はその事についてシェアしたいと思います。

 

 開発体制について

まず現在の開発体制、日本とシンガポールチームの位置付けについて説明したいと思います。

f:id:n-nino:20181219105324p:plain
ざっくり、こんな感じになってます。(※チーム名は仮称です。)

一つの製品を、モジュールで大きく2つのチームに分けて、その片方のチームが日本、シンガポールの混成チームになっています。

(Team Bの内訳は、日本:PM 1,スクラムマスター兼QA 1, エンジニア 3、シンガポール:エンジニア 5)
なので、もちろんスクラムイベントは日本とシンガポール両方のエンジニアが同席して行われますし、プロダクト横断の大きなスクラムイベントにもシンガポールからリモートで参加しています。

 

シンガポールチームの歴史

下記がシンガポールチームの人数推移です。

f:id:n-nino:20181219170420p:plain

6月から始まって、少しづつですが、着実に人数が増えて現在は5人になりました。

f:id:n-nino:20181219170817p:plain

上記の様に、国際色も豊かです。すべての国が分かりますか?

今後も、少しづつ人数が増えていく予定です。

 

コミュニケーションのとり方

シンガポールチームと混成チームになってから、チームの公用語は英語になっています。

スクラムイベント、チケットの表記、Slackでのやりとり、その他ドキュメントは基本英語ファースト(英語、もしくは英日併記)です。

とはいえ、全員がいきなり英語をペラペラに話せる訳では無いので、日本人同士の場合は普通に日本語を使っています。

始めた当初は全く自信がなかった日本メンバーも、学生時代の読み書きの経験+Google先生のおかげで、Slack上でのコミュニケーションはだいぶスムーズになってきています。

f:id:n-nino:20181219110910p:plain

口頭でのコミュニケーションが必要な場合は、私が通訳サポートすることもありますが、基本的にダイレクトにSlackなどでやりとりできています。

海外と一緒に仕事をするというのは一見ハードル高そうに見えますが、エンジニア同士の場合、そもそもプログラミング言語という共通言語があるので割となんとかなります。

シンガポールのメンバーも、コミュニケーションについて不便に思っていることは殆どなさそうです。

 

どこまで英語でコミュニケーションするか

ここが一つのキーとなる要素になるかと思っています。

よく英語化の事例とかで、社内英語公用語化!などと一気にすべてを英語に置き換えることを大々的にやっているところもありますが、私の感覚だとそんな必要はないと感じています。

ドキュメント類は読めないとわからないので英語、これは必要。

残りのミーティング類については、すべてを英語で行う必要はないというのが今の所の答え。

最低限は事前に用意して英語でやる、残りの込み入った部分については私が軽く通訳しながら、要点は後から改めて共有、それが効率が良くて早いです。

残りの小さな疑問や、質問については、ドキュメントや画面、ソースを見ながら後から直接個人間でSlackなどで英語でやり取りして埋めていけています。

今はそんな感じで状況に応じて、コミュニケーションの方法を変えていってうまく行っています。

 

出張によるF2Fのコミュニケーション

重要な開発が始まる時は、日本からPMやエンジニアが来て短期的に直接一緒に働くこともあります。

F2Fのコミュニケーションを取ることで、仕様の理解や疑問の解消を効率よく行っています。

普段、画面越しでしかやり取りできない人と直接コミュニケーションできるのも、シンガポールメンバーの刺激になりモチベーション維持にも繋がってます。

 

f:id:n-nino:20181219171516j:plain

 

 

交流イベントなど

仕事以外ではなかなか話す機会の無い人たちとは、"オンラインランチ"という企画をして交流を図っています。

"オンラインランチ"とは文字通り、画面越しにランチを持ち寄って、ビデオ通話しながら、雑談しながらランチを楽しむというものです。

顔と名前を知らないと、なかなか仕事上でも話しかけるのを躊躇したりしてしまいますが、このようにお互いを知ることで、オフィスを超えて気軽に話しかけられる関係を構築しています。

 

まとめ

最初はお互い、海外と仕事をしたことがない日本メンバー、日本と仕事したことがないシンガポールメンバー、という不安でいっぱいなスタートでしたが、今では非常によく開発プロセスが回せています。

英語でのコミュニケーションも最初は拙かった部分もありますが、日々良くなっていっています。

このままの調子で日本と海外で強固な開発チームを実現できるよう、さらに頑張っていきます!

----

この記事はチームスピリットアドベントカレンダー18日目の記事になります。

adventar.org

チームスピリットでのQA仕事内容

はじめに

寒い日が続いていますね。
QAエンジニアの生井 ( id:riririusei99 ) です。
会社ごとにQAと呼ばれる人達は働き方が異なっているのではないかというのが自分の持論で、今回は私が所属しているチームでの働き方を紹介することでチームスピリットに興味があるQAの方の想像と実際の仕事内容のギャップを埋められないかなと考えた。そんな記事です。

開発サイクルと主な仕事

所属しているTeamSpiritWSPチームではSalesforceプラットフォームのバージョンアップに合わせて4ヶ月の開発サイクルを一つの単位として開発を行っています。
2017年よりスクラム開発を採用しており、現在は4ヶ月の開発サイクルを更に2週間のスプリントに分割し、前半6スプリントが開発スプリント・後半2スプリントがリリーススプリントとしています。

開発サイクル単位でのQAの仕事をざっくりではありますが、簡単にまとめると下記になります。

f:id:riririusei99:20181213155338p:plain
開発サイクルでの大まかな流れ

  • テスト計画作成(左上のTest Planning)
  • StoryTicket のテスト設計・実施 (緑)
  • QualityTicketの実施 (青)
  • Test Reportの作成 (赤の範囲部分)
  • Quality Reportの作成 (オレンジ)

テスト計画作成

開発サイクルにおける計画を立てます。
私達のチームでは毎回少しずつ項目は違いますが主となるものは下記です。

  • 品質目標
  • リリース判定基準
  • テスト環境
  • 活動内容
  • テスト体制・スケジュール
  • 成果物

StoryTicket のテスト設計・実施

開発チームが作るストーリー毎の機能開発のテスト設計・実行を行います。
QAエンジニアはスクラムにおける開発チームのメンバーとして開発に参画しています。
そのため仕様検討を始めとするすべての会議に参加しますし、必要であれば調査も実施します。

QualityTicket(QA用バックログ)

テスト計画ができたタイミングでQA用のチケット(QualityTicket)のBacklogを作成します。
最近実施した具体的な例でいうと下記のようなイメージです。

  • 強化テスト
  • Salesforceプラットフォームのバージョンアップテスト
  • テスト設計のカイゼン
  • テストの自動化
  • CIサーバの構築

Test Reportの作成

スプリントレビューのタイミングでTest Reportの共有を行います。
Test Reportではテストの結果と起票されたバグチケットのトレンドからスプリント毎にリスクになる事象・問題がないかを確認しています。

品質評価レポート

4ヶ月毎のリリースパッケージを作成する際には現在のプロダクトの品質はどの程度かレポートを書きます。
ここではQualityTicketの実施状況や、各Test Reportを基にプロダクトの品質に課題があるかどうかとリリースできるような状態かを確認しています。
品質評価レポートは次回の開発サイクルでのテスト計画でのインプットにもなるので重要なレポートになります。

まとめ

いかがでしたでしょうか。 各項目でざっくりと書こうと思ったのですが、ひとつのセクションでも内容があるので簡潔に書いた結果、抽象的な記事になってしまって少し反省しています。

最後になりましたが、この記事はチームスピリットアドベントカレンダー17日目の記事になります。 adventar.org

最後までありがとうございました。ではこの辺で。

2018年に会社が発信した内容を可視化してみる

今年は会社として大きな節目の年になりました。それに合わせて様々なチャネルでの製品や会社情報の発信が活発化していましたが、一年を通じてどんなことをお伝えしていたんでしょうか、、

ということで、Pythonのライブラリで、さくっとテキストマイニングしてみました。

今回は実行環境としてGoogle Colaboratoryを使っています。クラウド上でJupyter Notebook環境が無償で使える、個人的には今年イチオシのML(機械学習)ツールです。

結果の画像

2018年の魂のブログ記事をワードクラウドで表示するとこんな感じです。

f:id:hwakabay:20181212183016p:plain

うーん、固い、の一言。基幹業務と密接な領域のBtoB SaaSなのでこうなりますが、もう少し柔らかくしたい。 あと、弊社はFintech企業でもあるんですが、そちらの訴求も強くしていきたいですね。

実現方法(ポイント)

以降は興味がある方に向けて、今回Pythonでやったことの流れを書いておきます。

1. Beautiful SoupによるHTMLのパース
  • ブログから対象範囲の記事CSVファイルを抽出
  • HTMLタグ除去など
2. Janomeによる自然言語処理(形態素解析)
  • 品詞のうち今回は名詞を抽出

※使っていたMecabでは上手く解析できず、途中でライブラリを切り替えました

3. WordCloudによる単語出現頻度の可視化
  • フォントやストップワード設定
  • お遊びでマスク設定

以上、処理時間は数分程度かかりますが、GPUの利用も無料なので有り難い限りです。

結びに

やはり驚愕すべきはGoogle Colaboratory。

ブラウザ上でまるで電卓を使うように対話的にPythonの処理を「無料で」実行が可能。ちょっとしたテキストマイニングなどは、既存の専用製品を使わずに済んじゃうあたりがうれしい一方、Googleのような巨大プラットフォーマーが「無料で」提供してしまうことによる恐怖も感じています、、。違うところで戦わないと死活問題です。

今回のワードクラウドを見て?TeamSpiritに興味をお持ちの企業様は、是非こちらからTeamSpiritが多くのユーザーに選ばれる理由をご覧ください!

この記事は「チームスピリット Advent Calendar 2018」の15日目です。
以上、若林(id:hwakabay)が執筆しました。

【バックエンドランチ #再始動】潜入レポート!

こんにちは。プロダクト開発チームの松田(id:a-matsuda)です。

クリスマス、お正月と転がるように毎日が過ぎていく師走となりましたが、みなさまいかがお過ごしでしょうか? プロダクト開発チームのフロアには、こんなに素敵なクリスマスツリーが飾ってあり、季節を、いまを、味わうことができます。 毎年ツリーの飾り付けをしてくれている皆さん、ありがとうございます!!

毎年恒例のクリスマスツリーwithアストロ

さて今回は、プロダクト開発チームで行っている「バックエンドランチ」に潜入した様子をレポートします!!

バックエンドランチとは

2018年夏にご紹介したフロントエンドランチの記事はご覧になりましたか?まだの方は、是非チェックしてみてくださいね。

teamspirit.hatenablog.com

バックエンドランチはフロントエンドランチと同様、バックエンド領域の気になる話題や、チームとして解決したいバックエンド課題をネタに和気藹々とランチしながら、侃々諤々盛り上がろうぜ、という取り組みです。 伝統ある?フロントエンドランチに対して、バックエンドランチは長い冬休みに入っていましたが(笑)、最近入社をしてくれたメンバーを中心にこのたび復活を遂げました!

バックエンドランチ #再始動

少し前になりますが、2018年11月6日(火)13:00より「バックエンドランチ」が行われました。

お弁当を持って集合!

メンバーがお弁当を持って集まってきました。

メンバー集合

ナポリタン、美味しそうですねぇ。

ランチ風景

こんなテーマで話をします

バックエンドランチでまず取り上げる大きなテーマは「Apex デザインパターンのアンチパターンについて学ぼう!」です。

Apexとは、Salesforce独自のプログラミング言語で、この言語を使うことで、Salesforceサービスのカスタマイズや修正、トリガーやストアードプロシージャの作成、ビジネス・ロジックの構築、実行などが可能となります。 Apexは、Javaに似ているオブジェクト指向の言語なので、Javaでおなじみのデザインパターンがまとめられています。今回は、デザインパターンの中でも、アンチパターンやベストプラクティスを勉強していこうというわけです。

ApexやSalesforceについてしっかり学んでみたい方は、Salesforce社の提供するTrailheadという秀逸なE-ラーニングツールがありますので、ぜひ取り組んでみてください!

今回の流れ

今回のバックエンドランチは、こんな流れで進んでいきました。

  • 学びの進め方
  • 一個やってみる:Over usage of formula fields
  • もう一個やってみる:Functional Decomposition

学びの進め方

Packt Publishing社から出版されている「Apex Design Patterns(by Anshul Verma and Jitendra Zaa)」を参考図書に、どんな風に学びを進めていくか全員で議論し、参考図書の章立ての順で学んでいくことが決まりました!

サマリも含め、13章あるんですね!

アンチパターンとベストプラクティス

一個やってみる:1. Over usage of formula fields

最初は「数式フィールドの過多」です。数式フィールドは簡単に作成および管理でき、値を動的に表示する場合には非常に便利ですが、レコードが取り出されるたびに計算される計算フィールドです。そのため、コードやレポートを使って大量のレコードを取得するなど多くの数式フィールドを使用すると、システムのパフォーマンスが低下します。また、数式フィールドがクエリまたはレポート条件で使用されると、アプリケーションのパフォーマンスがさらに低下する問題も発生します。

全員で、以下のようなことを話しながら、学んでいきました。具体的に自分たちが開発しているプロダクトでの使用を意識しながら、書いてあることを読み解くと、学びが深まることを実感しました。

  • そもそも数式フィールドは、TeamSpiritでどれくらい使ってる?
  • TeamSpiritで、●●●のような使い方をしたら、パフォーマンスに大きな問題が出そうだね
  • 数式フィールドのパフォーマンスを向上するには、Salesforceのサポートチームに連絡を取ってインデックスを貼ってもらうといいんだね

喋りたいことがいっぱいあります

もう一個やってみる:2.Functional Decomposition

トリガーやページコントローラー内に全てのビジネスロジックを書くことは簡単かつ迅速ですが、維持が難しいので「機能分解」しましょうという内容です。オブジェクトの観点から考えて、それに応じた1つ以上のクラスに機能分解することが非常に重要ですとはっきりと書かれています。

機能分解については、こんな会話になりました。

  • 今の開発では割とできているよね。
  • 機能分解の視点で、いくつか気になるクラスがあるなぁ。-->アクション一覧に登録しました
  • トリガー内にもビジネスロジックが入っているところはないだろうか。呼び出しているケースはどうだろうか。
  • トリガーから勤怠計算ロジックを呼ぶというは、アンチパターンだね。

まとめ

このように、学びを通して業務という実践に活かすことを意識しながら進めてきたバックエンドランチ。 実はこの処理が気になるんだよねという内容がポロっと出てきたり、参加したメンバー全員が、意見や気づきを積極的に、かつ楽しそうに発言している様子が印象的でした。

楽しそうな表情のバックエンドメンバー

次回は、3.Ignoring the equals() and hashcode() methods while performing object comparison、4.Circular dependencies に取り組むことを決めて、終了となりました!次に繋がるいいスタートが切れたように感じました。

バックエンドエンジニア募集♪

チームスピリットでは、バックエンドエンジニアを募集しています。最先端のPaaSプラットフォーム(Salesforce Lightning Platform)で、TeamSpiritのエンジンとなるロジックを生み出す仕事です。今回ご紹介した、バックエンドランチに飛び入り参加いただくことも可能ですので、少しでも興味を持っていただいた方、ご連絡くださいね。(直接メッセージでも、下記の応募フォームからでも構いません)

エンジニア募集

終わりに

最後になりましたが、この投稿は チームスピリット Advent Calendar 2018 - Adventar 第5日目の投稿になります。