TECH PLAY

KINTOテクノロジーズ

KINTOテクノロジーズ の技術ブログ

936

2022年振り返り&2023年展望 KINTOテクノロジーズの景山です! 2022年の振り返りと2023年の展望について書こうと思います。 2022年はさまざまなサービスをローンチしました。 5月のbZ4Xの受注サイトローンチ。ローンチ後にリコール対応が入り、その後、法人顧客が受注できるように改修などローンチ後も開発チームは多くの対応をしてくれました。 7月にKINTO ONE中古車サイトのローンチ。まずは東京都からですが、11月には愛知県も追加。今もより便利にするため各種機能の開発を継続中です。 もちろんKINTO ONE新車も多くの機能を追加開発してきました。 Globalでは10月にFIFAワールドカップカタール2022をターゲットにKINTO RENTというレンタカーサービスをローンチしました。多くのFIFAワールドカップ観戦にいらっしゃった方に使っていただきました。 またGlobalデザインシステムもローンチしました。この内容については、このアドベントカレンダーの 12月7日 に佐々木さん、渡辺さんが書いてくれていますのでご興味ある方はそちらをご覧ください。 これ以外にもGlobal ID PlatformやGlobal KINTO Appの各国のニーズに向けた対応も継続的に行なってきました。 Global ID Platformに関しては、OpenID Foundationにも加入して最新テクノロジーのキャッチアップとプラットフォームへの適用も開始しています。 ウェブやアプリ以外にも今年は販売店さんをテクノロジーで支援する取り組みも開始しました。 販売店の方のニーズをヒアリングして販売店支援のためのツールを開発して提供し、好評かつ改善要望をいただいており、いまも開発チームが毎月updateをしてくれています。 ツール以外にも販売店の方がKINTOはじめクルマを売るために我々の技術で解決できる課題を探し出し、ソリューションを提供する、という取り組みを開始しました。 ちょっと変わったところでは、Rookie Racing(ROOKIE Racing)というレーシングチームの公式ウェブサイトも制作して喜んでいただいています。 データ分析関連でも、Amazon QuickSightを使った全社ダッシュボード機能の開発。事業メンバーが簡単にSQLを発行できる独自データ分析ツール”nicola”の開発、など、営業やマーケとタッグを組んで社内データの活用にプロアクティブに取り組んでいます。 KINTOテクノロジーズの提供する独自アプリとしてPrismというネイティブアプリをローンチしました。まだiOS版のみの提供ですが、モビリティに限らず、みなさんがどこかに行きたいと思ったときにおすすめの行き先を直感で選ぶことができるアプリです。アジャイルで機能改善をどんどんしてくれているので、毎月のように使いやすくなっています。ますます多くのお客様に使っていただけるといいなと思っています。 当社では評価のなかに「自分の技術力をいかに高めたか」「チームや会社の技術力アップにいかに貢献したか」という評価指標があります。 このアウトプットをサポートするために、勉強会や研修参加、参考書籍購入などサポートを充実させています。 勉強会では、コーヒー、ピザ、サンドイッチのデリバリーができるので、カジュアルな雰囲気で開催されている勉強会が増えてきました。 また、エンジニア陣が自主的にテックブログを立ち上げました。執筆する人が出てくるのかなと心配していましたが、多くの社員が積極的に参加してくれて、2月公開分まですでに埋まっています。 エンジニアリング教育研修プロジェクトというものも立ち上げて、エンジニアにどうスキルアップしてもらおうかと、検討議論をスタートしています。 働く仲間が増えるとともに、4月に大阪心斎橋にOsaka Tech Labを開設しました。また6月には東京の2拠点目の神保町オフィスも開設しています。 東京、大阪、名古屋と拠点が違う仲間同士でコミュニケーションをしっかり取れるような環境を用意してくれました。 われわれが利用しているSlack, Zoom, Box, Jira, Confluence, Miro, Adobe, Figma, Google workspaceなどのツールもコーポレートITチームが利便性をそこなわないように考慮しつつ、よりセキュアに利用できるようにマネジメントしてくれるようになり、みなが安心して多様なツールを活用できるようになりました。 みながプロアクティブに課題解決に取り組んでくれて良い年になったな、とおおいに感謝しています。 さて、来年、2023年は、今年以上に新しいサービスをローンチする年になりそうです。 先日、記者発表したKINTO Unlimitedサービスも絶賛開発中で来年前半にフェーズを切ってローンチしていきます。 KINTO Factoryも同様に開発中ですが、これも来年前半にローンチしていきます。 トヨタ自動車とのコラボレーションプロジェクトでデータベース構造やインターフェースの定義で調整に苦労した部分もありましたが、クルマの作り方そのものを変えるようなプロジェクトで、今後のモビリティビジネスに与える影響は大きいプロジェクトですので、開発サイドとしては遅れなくローンチできるように用意周到に進めたいと思っています。 中古車サブスクも展開地域の拡大がありますし、新機能の開発も進んでいます。中古車ビジネスは知見を溜めつつ、システムをアップデートしていますが、来年はいよいよ本格的な展開になりそうです。 もちろん新車のサブスクも多くの機能追加が予定されています。 サブスクサイトの完全リニューアルを一昨年より開始していますが、いよいよ来年半ばにはローンチしたいと思っています。これによって、サブスクサイトの機能追加や新機能導入がたやすくなり、今まで以上に便利で使いやすいモダンなサイトにしていくことができるようになります。 いまはまだお伝えできないビッグプロジェクトも進行中です。 データ活用のレベルも一段階ぐらい上がるのではないかと期待しています。 各事業部の日々の活動がデータドリブンになることで、戦術や戦略の精緻化ができるのではないかと思っています。 GlobalでのKINTOの展開も、コロナ禍がようやく落ち着いてきて、スピードアップしていきます。 社員が海外のメンバーと現地でコミュニケーションする機会も増えることから、KINTOビジネスを推進するための、より現地のニーズに即したITサポートができると期待しています。 すでに社員数は300人になりましたが、まだまだ一緒にプロジェクトを進めてくれる仲間は必要になりそうなので、採用活動も強化していきたいと考えています。 テクノロジー強化も重要な取り組みです。 クラウドを活用したときのパフォーマンス向上策や運用効率化などもっとクラウドを使い倒すスキルを高めていきたいと考えています。幸いにもAWSさん、Googleさんから手厚いサポートをいただいているので、実現できると思っています。 今年以上に忙しくも充実した年になりそうなので、社員一丸となって頑張っていきます!
アバター
2022 Review & 2023 Outlook This is Kageyama from KINTO Technologies! I would like to write a review of 2022 and my outlook for 2023. We launched various services in 2022. In May, we launched the bZ4X online subscription sales site. After the launch, we had to deal with a recall, and then we also made modifications to the site to allow corporate customers to place orders. Thus, the development team took a lot of action after the launch. Online used car subscription sales site launch in July. We started with the Tokyo area, but added the Aichi area in November. We are still developing various functions to make it more convenient. Of course, we have also developed many additional functions for KINTO ONE site. In October, we launched a rental car service called KINTO RENT in Qatar mainly for customers who came to watch the World Cup. We also launched the Global Design System. Please refer to the article in this advent calendar written by Sasaki-san and Watanabe-san on 7th of December if you are interested in the details. In addition to this, we have been continuously working on the Global KINTO ID Platform and the Global KINTO App to meet the needs of each country. As for the Global KINTO KINTO ID Platform, we have also joined the OpenID Foundation to catch up with the latest technologies and start applying them to our platform. https://openid.net/certification/ Besides web development and apps development, this year we also launched an initiative to support dealers with technology. We have developed and provided tools to support dealers based on interviews with dealers about their needs. We have also started an initiative to find issues that can be solved by our technology and provide solutions to help dealers sell cars on KINTO and credit. We also created an official website for a racing team called Rookie Racing although they are not a dealership. The team is very happy with the website. https://www.rookie-racing.co.jp/ In the area of data analysis, we have developed a company-wide dashboard function using Amazon QuickSight and a proprietary data analysis tool called "nicola" that allows business members to easily issue SQL. We are working proactively with sales and marketing to improve the use of data in each department within the company. KTC has launched its own app called Prism. It is still only available for iOS. It is an app that allows you to intuitively select a recommended destination when you want to go somewhere, not only for outings using a car. The app is getting more user friendly every month as they keep improving the features in an agile way. I hope more and more customers will use it. Among our evaluation criteria, we have a measure of "how well I have improved my own technical skills and knowledge" and "how well I have contributed to improving the technical skills and technical knowledge of my team and the company. To support this output, we offer a full range of support, including study groups, participation in training, and the purchase of reference books. More and more study sessions are being held in a casual atmosphere, with coffee, pizza, and sandwiches by delivery. Also, our engineering team has voluntarily started this tech blog. I was worried about whether anyone would be willing to write one, but many engineers have actively participated, and it has already filled up to be published in February. We have established an organization called the Engineering Education and Training Project, and we are starting daily discussions on how to have engineers improve their skills. Along with the increase in the number of people working for our company, we opened the Osaka Tech Lab in Shinsaibashi, Osaka in April. We also opened the Jimbocho office in June. This is our second office in Tokyo, and we have offices in Tokyo, Osaka, and Nagoya. The corporate IT team has prepared an environment that allows for good communication between the Tokyo, Osaka, and Nagoya offices. The Corporate IT team has managed our tools such as Slack, Zoom, Box, Jira, Confluence, Miro, Adobe, Figma, Google workspace, etc. in a more secure manner while taking into consideration the convenience of the tools we use. The management of these tools has been improved so that they can be used more securely without compromising their usability, and everyone can use them with peace of mind. I am very thankful that everyone has been proactive in solving issues and that this has been a good year for us. Next year, 2023, will be a year of launching new services even more than this year. The KINTO Unlimited service, which we recently announced to the press, is under development. We will launch it in phases in the first half of next year. KINTO Factory is also under development and will be launched in the first half of next year. This is a collaborative project with Toyota Motor Corporation, and although there were some difficulties in coordinating the database structure and interface definitions, it is a project that will change the way cars are made itself. Since this project will have a significant impact on the future mobility business, I hope that the development team will be prepared to launch without delay. The used car subscription business is also expanding its service area, and development of new features is underway. We are updating our used car business system while accumulating knowledge, and next year will be the year when we will finally be able to fully expand the business. Of course, many new features will be added to the new car subscription business site as well. We have started a complete renewal of the new car subscription site the year before last, and we hope to finally launch it in the middle of next year. This will make it easier to add functionality and introduce new features to the site and make it more convenient, user-friendly, and modern than ever before. We are also working on a big project that I can't tell you about at this time. I expect that the level of data utilization will also become more sophisticated. I believe that each business unit will be able to refine its tactics and strategies by utilizing data. KINTO's development in Global will also speed up as the Corona disaster finally settles in. Since our employees will have more opportunities to communicate locally with our overseas members, I expect that we will be able to provide IT support more in line with local needs to promote KINTO business. We already have 300 employees, but we will still need more people to work with us on projects, so we will also be stepping up our recruitment efforts. Strengthening our technology is another important initiative. We would like to enhance our skills to make better use of the cloud, including measures to improve performance and operational efficiency when utilizing the cloud. Fortunately, we are receiving generous support from AWS and Google, so I believe we can make this happen. It's going to be an even busier and more fulfilling year than this year, so all of us will work together to make it happen!
アバター
Happy Christmas🎄 こんにちは!KINTO ONE 開発Gの渡邊です。 普段はフロントエンドエンジニアとしてNext.jsやTypeScriptを用いてプロダクト開発を行なっています。 また、テックブログ運営チームとしてテックブログの開発・実装も担当しました。 アドベントカレンダーの最終日の今回は、テックブログのデザイン選定やフロントエンド開発についてご紹介いたします。 テックブログチームの立ち上げ テックブログ運営チームは元々、社内のアウトプットカルチャーを育むことを目的に、リーダーの中西さんを中心に有志4名が集まり発足しました。 残タスクの見える化を意識して運用体制やブログの仕様について話し合ったので、とにかく高速で物事が決まっていったのを思い出します。 その中で私は、ブログ全体のデザインとフロントエンド実装を担当しました。 週次のミーティングでは、議論から生まれたアイデアをプロトタイプに反映し、チームに共有していました。 プロトタイプがあるとチームのモチベーションも上がるので、実装担当として目に見える進捗を意識して開発に臨みました。 Next.js でテックブログ開発 フロントエンドのフレームワーク(ライブラリ)はNext.jsを採用しています。 Next.jsを採用した理由は自分自身一番馴染みがあり、ブログ記事をMarkdownファイルとしてストックし、Static Site Generatorで静的サイトを生成すれば良さそうだなと構想段階から考えていたからです。 作成したプロジェクトからビルド時に静的コンテンツを生成し、成果物をホスティングしています。 また、Next.jsはGitHub上に様々なライブラリを組み合わせた examples を公開しています。 この中の一つに blog-starter があり、ブログの雛形を用意されていたので、着手しやすかったのもNext.jsを採用した理由です。 以上を踏まえて、テックブログを作り上げるために必要なステップを以下の3つに分類し、開発を行いました。 デザイン選定 画面実装(記事一覧ページ・記事詳細ページ) Markdownツールの準備 デザイン選定 デザイン担当を引き受けたが、ブログデザインのノウハウが全くなかったので他社事例のリサーチから始めました。 他者事例から得た特徴や気付きを元に、テックブログに必要なUI要素や情報整理をチームで行いました。 特徴・気付きをまとめたドキュメント デザインリサーチを進める中で、シンプルかつ分かりやすいデザインを目標にして、考慮するべき4つのコンポーネント(ヘッダー・カード・リスト・フッター)に着目しました。 また、実装を担当することも決まっていたので、コーディングがしやすく拡張性の高いデザインを意識して作成しました。 コンポーネント分類 ある程度デザインが出来上がったタイミングでサイトデザインを管理している部署に確認いただき、アドバイスを頂けました。 画面実装 画面のテンプレートはblog-starterで用意されていたので、スタイルのコーディングに集中するべく、CSSフレームワークとして Tailwind CSS を採用しました。 Tailwind CSSの特徴は、標準のクラス名がシンプルかつどのようなスタイルを表しているかを認識しやすいように定義されているので、直感的にスタイルを変更でき、開発コスト削減にも繋がっています(ユーティリティファースト)。 何人かの社内のフロントエンドエンジニアがテックブログの機能拡張やバグ改修で関わってくれてますが、学習コストが少なくスムーズに実装してもらっているのでチーム開発に向いているなと思います。 レスポンシブ対応を同じ className 内で書けるのも魅力的です。 <div className="md:px-6 lg:px-10 md:py-10 md:hover:shadow-xl"> <div className="mb-6"> <CoverImage slug={slug} title={title} src={coverImage} /> </div> <div className="flex items-center mb-4 md:mb-6"> <div className="background-color h-7 flex items-center rounded-lg p-2 md:p-4 mr-3"> <span className="text-white text-xs md:text-base">{category}</span> </div> <div className="text-gray-500 text-sm md:text-base transition"> <DateFormatter dateString={date} /> </div> </div> <h3 className="text-xl sm:text-2xl md:text-2xl lg:text-3xl mb-2 md:mb-6 leading-snug text-color"> <Link href={`/posts/${slug}`}> <a className="hover:underline">{title}</a> </Link> </h3> </div> Markdownツールの準備 テックブログでは、Markdownパーザーとして zenn-markdown-html と zenn-markdown-css を採用しています。 blog-starterで用意されているデフォルトのMarkdown記法ではバリエーションに欠けるかつカスタマイズのハードルが高いのが採用理由です。それぞれのパーサーの役割は以下の通りです。 zenn-markdown-html Zenn独自の記法を含むMarkdownをHTMLに変換(markdownToHtml)するためのパッケージ zenn-content-css zenn-markdown-htmlでMarkdownから変換されたHTMLに適用するためのCSS CSSを適用したいコンポーネントやブロックに className=znc を指定 多種多様な埋め込みコンテンツ等も用意されているので、リッチなブログが作成できます。(TweetのURLを記載するだけで簡単にコンテンツ表示) https://twitter.com/KintoTech_Dev/status/1597900747538046978 今後トライしたい機能 シンプルで分かりやすいを目標にスモールスタートしたテックブログですが、将来的に実装したい機能のアイデアもまとめておきます。 リリース後に社内外から「こんな機能つけてみたらどう?」という意見を多くいただき、日々注目を集めていて嬉しく思います。 実際に RSS機能 を追加したりとアップデートに勤しんでいます。 タグやカテゴリーを付与して、記事検索機能や絞り込み機能を実装 多言語対応出来るようにローカライズ機能を実装 コンテンツ管理をMicro CMSやクラウドサーバーに載せ、ローカル管理をやめる まとめ 限られたリソースの中でしたが、フロントエンドの新しい技術に触れることが出来、楽しく開発が出来ました。 また、修正Pull RequestやIssuesを立ててくれる仲間が増えてきて、徐々に社内のブログカルチャーが出来てきたかなとも思います。 まだまだ改良の余地があるテックブログですが、技術のキャッチアップを忘れず、引き続き頑張っていきたいです。 最後に 今年のアドベントカレンダーを通して、少しでも弊社の取り組みや社員の働き方を知っていただけたら嬉しいです! そして、KINTOテクノロジーズでは、一緒に働ける仲間を募集しています。詳しくは こちら から 最後まで読んでいただきありがとうございました! 参考 ZennのMarkdown記法一覧
アバター
実は、密かに進化しています。KINTOテクノロジーズ流インハウスクリエイター。 Merry Christmas! クリエイティブグループでCDをやらせてもらっていますスギモトアヤです。今回は、このブログの場にお邪魔して、チームの紹介(自慢)をさせていただきます。私たちが在籍するKINTOテクノロジーズは、クルマのサブスクKINTOのサービスをドライブさせるエンジニアが中心の会社。名前の通り、テクノロジーの会社なのでエンジニアが中心ですが、その片隅でしっかりと生息しています。大好物は、誰も食べたことのない、一筋縄で解決しない新規案件です(笑)。 クルマのサブスクKINTOサイトの改善や、静的コンテンツ制作、販売店さん支援施策、新サービスのブランディングといった、ビシッと気合いの入る案件から、社内グッズのデザインというほっこり案件まで、クリエイティブなアイデアとお客様視点でお応えする23名の(2022年12月現在)制作集団です。私たちの活動をドラマチックに?!お伝えします。 シーズン1:2021年、お客様視点で考える集団へ いまでは、ビジネスサイトのメンバーと上流工程からディスカッションし、制作に取り組んでいますが、私が入社した頃は、ビジネスサイドから依頼を受けたものを制作するというスタンスでした。 このままでは、インハウスの意味がないので、「質の高い制作物をつくる集団が社内にいるみたいだぞ、相談にも乗ってくれそうだ」と認識してもらうために、まずは、我々発のプロジェクトを社内で立ち上げました。その名も「みんながわかるプロジェクト」。 ビジネスサイドの人に比べると、クルマに詳しくなることは難しいけれど、クルマを知らない人=お客様視点で企画やUXの改善をすることはできそうだ、ということで社内を横断するチーム体制をつくり、プロジェクトを発足させました。私を含め、入社数ヶ月のメンバーで発足したので、心細かったですが、部長がサポートしてくれました。そして、社長に「お客様視点」での企画をプレゼンし、お墨付きのプロジェクトに。プロジェクト発信から結果を出すことで、社内で徐々に認めてもらえるようになりました。 シーズン2:2022年、共感できる仲間づくりへ 新サービスの上流を担う企画から入り、要件を整理し、制作進行もするWebディレクターと、カタチにするデザイナーは大忙し。社内の期待に応えるためにも、クリエイティブ力の底上げは早急な課題でした。採用を強化し、クリエイティブジャンプアップするためのビジョンに共感してくれるメンバーを増やしました。そして、組織体制に変化を加え、デザインプロセスの見直しなどをし、ビジネスサイドから「依頼される」ではなく、「相談を受け」て、共に施策に向き合うスタイルができあがりました。 いまでは、多彩なメンバーが揃って、頼もしい限り!みんな、ありがとうー!Webまわりだけでなく、グラフィック系、ロゴやネーミングといった新サービスのブランディングにも携わり、お客様のタッチポイントに関わるビジュアル部分の大半に携わることができています。 シーズン3:2023年へ、進化はつづくよ、どこまでも インハウスのクリエイティブとして、魅力的な環境というのは、情報が伝言ゲームにならずに、直接、ビジネスサイドと話ができること。お互いが熱量や夢みたいなものを伝え、カタチにしていくことはクライアントワークとは一味違う深みを感じます。ブランドコンセプトからトータルにデザインできるのはやりがいがあります。とくに、我が社は隣の島にはマーケティングチームがいれば、開発チームも身近にいるという環境。さらに、副社長や社長といった経営層と話せるのもかなり魅力的だと思います。もちろん、ダメ出しもダイレクトにもらえます(笑)! 2021年、グループのポテンシャルを社内に広く示すためのプロジェクト発足。2022年は、クリエイティブジャンプアップさせることに共感してくれる仲間づくりができた1年でした。 と、そうこうしていたら、今年もあと数日です。2023年は、さらに進化&深化できるように、幅広い守備範囲をカバーしながら、攻めていきたいと思います。 全ては、より良いモビリティサービスでお客様に感動してもらうため。 課題に取り組みながら、頭を使う。迷いながら、手を動かす。そして、よく食べて、よく寝る。KINTOテクノロジーズにいれば事業の成長とともに、若返りできそうです(笑)。 みなさま、よいお年をお迎えください。まずは、楽しいクリスマスを!
アバター
はじめに モバイル開発グループでiOSエンジニアをしている日野森です。 10年以上iOSアプリ開発をしてきた経歴を活かしてシニアエンジニアとして日々業務をこなしています。 今回はそんな日々の業務をやってたらいつの間にか内製化できた話をしたいと思います。 当時の状況 当時の開発の状況は、リリース2ヶ月前。開発はほぼ外部ベンダーさんが請け負っていて、進捗としては7、8割終わっていると言う話でした。また、運営側もスマートフォンアプリの開発も未経験なチームだったので、ベンダーさんにどう指示すれば良いのか困惑している様に感じました。 そんな状況のチームに私を含めた2名のiOSエンジニアが開発メンバーとしてアサインされました。 ちなみに当時は両者とも中途入社したてで、モバイル開発グループという枠組みも出来ていない時期でした。 改善点の洗い出し 最初に渡されたリポジトリの中に見事に出来上がっているスパゲッティコードに軽い眩暈を起こしたのを覚えています。 ジョインしてすぐに外部ベンダーさんと連携をとって大規模なリファクタリングをするのはコミニュケーションコストが高いので、外部ベンダーさんにはそのまま開発を続けてもらって、私たちは仕様理解を進めつつリファクタリングを行う事にしました。 当時のコードは、大きく以下の3つの改善点がありました。 ⛔ 活用されていないCI環境 ⛔ 統一されていないアーキテクチャ ⛔ 縦横無尽に呼ばれるシングルトンクラス 細かくはまだ色々ありましたが、ひとまずこの3つを大きな改善タスクとして進める事にしました。 大規模リファクタリング 大まかな方針は決まったので、まずはコードに直接手を入れない改修から入り、徐々に内部の深いところまで改修を進める事にしました。 ✅ 活用されていないCI環境 当時、CI環境は一応用意はしてる様ですが、ほぼ使われてない状態だったので、以下の2点をCIで定期的に実行できる環境を構築。 コードの静的解析 ユニットテスト実行 ユニットテストのカバレッジレートは0%。すぐに数値を上げるのは難しいので、カバレッジレートは表示するだけに止めて、最低限のレビュー環境の整備に努めました。 ✅ 統一されていないアーキテクチャ MVVMがベースになっている形跡はありましたが、Viewから処理を分離できておらず、ViewModelが飾りになっているケースがほとんどで、アーキテクチャとして機能していない状態でした。 そこで、MVVMにClean Architectureの原理を適用し、Input、Outputを活用してViewModelでPublisherの操作を行うという実装を全てのViewControllerとViewModelに行い、Viewから不要な処理部をViewModel、Modelに分離しました。 こちらの小山さんの記事にその辺りの開発手法が書かれているので、こちらも読んでくれるとより理解していただけると思います。 https://blog.kinto-technologies.com/posts/2022_12_07_Combine%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6MVVM%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%97%E3%81%9F%E8%A9%B1/ ✅ 縦横無尽に呼ばれるシングルトンクラス シングルトンパターンは簡単に使えるのは利点ですが、誤解して使用されることも多く、共依存化、複雑化しやすく、テストも書きづらくかなり慎重な運用をしないと簡単にブラックボックス化してしまいます。 このパターンはチーム開発では非常に危険なので、このシングルトンで運用しているクラスを除去していきました。 この三つのタスクを1ヶ月程度の間に一気に解消した事で、コード全体の視認性が格段に良くなりました。そうすることで、ようやく実コードに落とし込まれた仕様を追える様になり、機能追加も問題なく処理できる様になりました。 そしてチーム開発へ 大規模リファクタリングが終わった事で、自然とベンダーさんがやるよりもこちらでやった方が早いと言う状態になり、こちらで開発作業を完全に巻き取る事が出来ました。 ただ、このままではチーム開発体制の基盤が出来ただけなので、ここから足りないUnitTestの拡充、データフローの整理、UIのリファクタリング、等々色々とありました。 しかし、再構築した基盤とPRのルール、ブランチ戦略・レビューフローを整えたチームはしっかりとしたコーディング思想が根付いてきていて、メンバーが増えても大きなコードの乱れもなく進める様になり、他のメンバーの指摘も適切な指摘が増えて、自走できるチームになったと思います。 👨‍💻👩‍💻 現在は、SwiftUIやモダンなアーキテクチャへのチャレンジをチームで進めることで、チーム全体でモダンな開発手法を取得できる様に日々チームで試行錯誤しています。 さいごに 私たちKINTOテクノロジーズではチャレンジを一緒にしてくれる仲間を絶賛募集中です。 一緒にチームビルディングできる日を楽しみにしています。
アバター
自己紹介・記事要約 先月はmy route開発Gのグループマネージャーとして紹介記事を書かせて頂きました岩元です。 実はモバイルアプリ開発Gのマネージャーも兼務しておりまして、なぜそのようなことになっているのかという事なども交えつつ、モバイルアプリ開発Gの紹介記事を書かせて頂きたいと思います。 モバイルアプリ開発グループについて モバイルアプリ開発グループとは モバイルアプリ開発グループは2022年初に設立されたばかりの新しいグループで、その名前の通りモバイルアプリ開発を専門とするエンジニアが集まっています。 モバイルアプリ開発の専門家としてのプライドを持ち、サービスの垣根を超えてKINTOテクノロジーズの関わる全てのモバイルアプリ開発を一手に引き受けています。 基本的には各サービスを担当する開発グループ(主にバックエンドAPIの開発を担当)と協力してモバイルアプリを作っているわけですが、作って納品して終わりという関係ではありません。その後の運用開発や改善にも積極的に関わり、各サービス担当開発グループと一緒に責任を持ってサービスを盛り上げていくグループです。 これまでの軌跡 それでは、なぜモバイルアプリ開発グループが設立されることになったのかという事についてお話ししたいと思います。 KINTO Technologiesの黎明期 KINTOテクノロジーズは(株)KINTOの開発部にルーツを持っています。当時のKINTOはWebでの申し込みが中心でモバイルアプリを持っていなかったということもあり、在籍エンジニアはWeb系のエンジニアばかりで、モバイルアプリの経験者は非常に少ないという状況でした。 my route開発 そんな中、元々はトヨタ自動車の実証実験からスタートしていたMaaSアプリである my route の開発をKINTOテクノロジーズが担当することになりました。当時のmy routeはパートナー企業により受託開発されており、それを内製化するというのが最初のミッションでした。バックエンドAPI開発の内製化は順調に進んだものの、モバイルアプリの開発に関しては専門のエンジニア不足によりパートナー企業頼りという状況が長く続いておりました。その状況を打開するため、モバイルアプリ開発経験のあるエンジニアの異動や積極的な採用活動を通して徐々にモバイルアプリの専門家を増やし、2021年の秋頃にはモバイルアプリ内製化のプロジェクトをスタートさせるところまで体制を持ってくることができました。 my route以外のアプリ開発 my route開発G内のモバイルアプリエンジニアの体制が充実してくるのに伴い、my route開発以外のグループからモバイルアプリ開発に関する相談を受ける事が多くなってきました。 その頃のKINTOテクノロジーズはmy route以外にもいくつかのモバイルアプリを扱うようになっていましたが、モバイルアプリエンジニアの不足からその開発はほとんどパートナー企業任せになっておりました。それが原因の全てとは言いませんが、あまり上手くいっていないケースが多かったのも事実です。 それらの相談に乗ったり開発業務を手伝ったりしているうち、my route開発グループでありながらそれ以外のサービスに携わる業務の割合が徐々に増えてきました。 モバイルアプリ開発Gの誕生 気がつけば半数ほどのメンバーがmy route以外のサービスを担当するようになってくるに至っては、このままmy route開発G内のチームという位置付けも組織的に無理がある状況となってきました。そのため、2022年1月に独立しモバイルアプリ開発グループが誕生することとなりました。 各サービスの開発グループ内にモバイルアプリエンジニアを配置することも検討されましたが、その時点ではそれぞれ出身やバックボーンの違うエンジニアが集まったばかりの状態であったため、今のままエンジニアが散らばってしまうとKINTOテクノロジーズとしてのモバイル開発の標準が確立できないことが危惧された結果、グループを設立するということになりました。 その甲斐もあり、約一年経過した今ではさまざまなことが標準化され、品質の高いモバイルアプリケーションを作れるエンジニアたちが集う組織へと成長しています。 モバイルアプリ開発グループの特徴 チーム構成 2022年末時点で25人ほどの規模まで人数が膨らんでいます。Android/iOSエンジニアの数はほぼ半数ずつで、両方に対応できたりFlutterやUnityなどマルチプラットフォームのスキルを持ったメンバーもおります。また、プロデューサーと呼ばれるPM的な動きをする人たちも数名在籍しています。 今現在はネイティブアプリの開発が中心ということもあり、大きくAndroidチームとiOSチームに分かれていますが、今後はサービス単位のチームに再編してサービスへの結びつきを強めることや両方のOSに対応できるエンジニアのスキルを活かせる組織に変えていく事も検討しています。 国際色 他グループと比べて非常に外国人比率が高いという特徴を持っています。特にAndroidを得意とするエンジニアは8割ほどがグローバル人材です。出身地域も韓国、中国、台湾、ミャンマー、ポーランド、ドイツなど非常に国際色豊かなメンバーが集っています。 英語の得意なメンバーも多いですが、今現在は会社としての共通語が英語化されているわけではありませんので、全員業務できる程度には日本語でのコミュニケーションが可能です。 いろいろな文化を持った人たちが集っていますので、普段からかなり賑やかで闊達なコミュニケーションが行われています。日本人だけの集団に比べてかなりダイレクトなコミュニケーションに面食らうことも多いですが、そういう違いを楽しめるような組織でありたいと思っています。 どんな人たちが集っている? 採用の際に重視している事は、モバイルアプリ開発のスキルがある事は当然として、それ以上にモバイルアプリの開発に興味を持ち、トレンドを追う姿勢があるかという事です。というのも、モバイルアプリ開発の世界は日々新しい技術や手法が生まれてきており、既存の技術に安穏としていてはすぐに陳腐化し置いていかれてしまうからです。 その結果、モバイルアプリ開発が大好きというメンバーが集っており、業務以外でも切磋琢磨しており、勉強会なども活発に行われています。 新しい仲間へ モバイルアプリの専門家として成長したい、常に最新の技術を活かして業務したい、そんな方には最適の環境だと思います。 実際の業務経験が少なくても、熱意と勉強する姿勢を持っている人も大歓迎です。 私たちと一緒にトヨタグループを支えるモバイルアプリケーションを作っていきましょう!
アバター
はじめに KINTOテクノロジーズでmyroute by KINTOのデザイナーをしている山本佳と申します。 普段はmyroute by KINTOに関わる、LPやバナーデザインなどの広告デザイン、アプリの画面遷移の整理やガイドラインなどの制作を担当しています。 myroute by KINTOとは、移動手段の検索・予約・決済まで、移動に関する一連の機能をひとつのアプリ内で完結。「街の賑わいを創出」するイベントスポット・店舗情報の提供を行い、街中における円滑な移動のサポートをするマルチモーダルモビリティサービスです。 解決したい課題 チケットの販売枚数の向上、週の利用頻度増加という目標がある中での施策の一つとして、トヨタファイナンシャルサービス株式会社の担当者の方と協力させていただきました。 myroute by KINTO内に特集記事というコンテンツがあり、そこに誘導するポップアップを出して記事を選んでもらい、お出かけに繋がり、アプリの利用拡大を狙っています。 そこで今回のデザインのタスクとしては、アプリ内に出すポップアップデザインの品質向上となります。 クリエイティブ改善施策 「クリエイティブの品質の向上」と、かなり曖昧で現状と目指したいゴールの差異を埋めることが大切になると考えました。 まずは課題の棚卸、そこから今回のデザインにとってマストでやるべき3つの課題を抽出しました。 ①ターゲットに合ったアプローチにする。 担当者間で共通した人物像を形成して、どんな人に届けるのかを明確にすると、ユーザーにあったカラートーンで角の丸みは..などデザインを考えるのも楽になりました。 ②記事とデザインの整合性を保つ。 極端な例ですが、スタイリッシュなポップアップデザインがあったとして、その記事の内容が「紅葉に行ってかわいいカフェにおでかけ」のような記事では、読んでもらえずにすぐに離脱してしまいます。 ですので、デザインをする前に記事を読み込んで適切な表現を想像することが大切でした。 ③おでかけがしたいとおもえるワクワクを届ける。 抽象的でわかりにくいですが、よくネットなどで見かける「限定商品!」や「1000円はお得!」などのような、誰が見てもわかりやすいユーザーにとってのメリット要素は無く、今回のポップアップは「おでかけして楽しんでみませんか?」というアプローチなので、自分で広告をみたときの「ワクワク感」を大事にしました。 ポップアップの見せ方 デザインの課題とは別にポップアップの見せ方も重要だったので検討しました。 ABテストをして効果の高い見せ方の調査もしたいと思い、いくつかのレイヤーパターンを出しました。 「①は広告感が強いが表示させたいものがユーザーにとって適切だと効果が高い傾向にある。大手動画メディアの広告表示でやっていた。②は詳細の文章を入れているので親切で優しいタイプだが、文章が長いと飽きられそう。③は汎用性が高いタイプ、キャリア形のポップアップでよく見かけることが多かった、今回の施策に向いているだろうか...」など、様々な見せ方を検討していました。 結果 このように、デザインとしてできるアップグレードをいろいろな方向性から模索していました。 毎週ポップアップを打ち出した3ヶ月後の結果として、1100DAUの向上(この施策以外にも様々なキャンペーンなどをしているので、その効果も反映されています)、ポップアップのクリック率は7%から毎回19%近くにあり、11%の向上となりました。 クリック率の改善として良い結果が出たのは、トヨタファイナンシャルサービス担当者のビジネスサイドの課題解決策も素晴らしかったことはもちろんですが、私としては隔週でコミュニケーションをしてビジネスとしての狙いや記事の内容、デザインの方向性の理解を深めることができたことが何よりもこの結果に繋がったのではないかと考えています。 今後の課題 今回の施策について各地域のパートナーにも共有して、効果が高い広告デザインについて知識を深めることやデザインのガイドラインを制作して品質のブレを無くすなど、まだまだ課題があります。 今後もPDCAを回してデザインをアップグレードしていきたいと思います。
アバター
はじめに QAグループのokapiです。 私は、QAの主担当として案件に参画させて頂くことが多いため、今回は、KINTOテクノロジーズ株式会社で、QAが案件に参画して、どのように開発チームとコミュニケーションを取って、作業を進めているかを記事として作成します。 本記事の目的 QAと関わったことがないチームと案件を進める場合、 QAは何をやってくれるのか、どのように進めてくれるのかと探り探りで進む事が多いので、 そういった場合でもスムーズに進められるように「QAの認知度」をあげたいと思っております。 QAとは QAは、「Quality Assurance」の頭文字をとってます。 「Quality Assurance」は、「品質保証」という幅広いとらえ方となりますが、 「ユーザーにとって不利益が生じていないか」「ユーザーが使いやすいか」という観点で、 ユーザーの実際の利用想定に基づくシナリオテストや、画面UIの検証といった、 ユーザー視点でのテストを実施しております。 主なQAと開発チームのテストにおける役割分担に関しては、下記の表に記述します。 項目 QA 開発 備考 システム要件に沿った 仕様の確認 ㅤ◎ㅤㅤ ㅤ〇ㅤㅤ QAは、システム要件通りに機能と性能が満たされているかを、ユーザー視点を踏まえて確認 ユーザーの利用を想定したシナリオに沿った確認 ㅤ◎ㅤㅤ ㅤ△ㅤㅤ QAがメインで確認 上記以外 ㅤ△ㅤ ㅤ ㅤ◎ㅤㅤ 依頼があった場合、開発チームの外部結合テストやQAが確認可能な範囲でリソース的に問題なければ確認 QA作業の概要 作業フェーズ 概要 テスト計画フェーズ ㅤㅤㅤㅤㅤㅤㅤㅤ プロジェクト全体のスケジュールと仕様が分かる資料(システム要件、画面仕様書等)を連携頂き、QAが以降のフェーズの作業をどのように進めるかを記載したテスト計画を作成 テスト分析フェーズ 仕様が分かる資料(システム要件、画面仕様書等)から、 テスト範囲(テスト対象/対象外)を明確にしたテスト観点を作成 テスト設計フェーズ テスト観点からテストケース(前提条件・手順・期待値)を作成 テスト実施フェーズ 作成したテストケースを基にテストの実施を行い、 不具合報告・改修確認を行う 開発チームとコミュニケーションが必要な点 テスト計画フェーズ QAがテストを実施する期間/検証環境/QAの実施担当者・開発チームの窓口担当者/ 対象端末・ブラウザを纏めたテスト計画を基に開発チームと認識がずれていないかを確認します。 テスト分析フェーズ テスト観点を作成するために必要な情報は、JIRA or Confluenceを活用して質問し、 認識が合わない部分や開発チームの担当者が複数になる箇所は、 打ち合わせを行い確認して、仕様を整理します。 仕様が整理できたら、テスト範囲(テスト対象/対象外)を明確に分かるような テスト観点を作成して、開発チームと認識がずれていないかを確認します。 テスト対象/対象外については、ブラックボックステストの観点から、 ユーザーが実際に使う部分(QAが案件で必要だと思った所)を対象として、 ユーザが触れることのない部分(たとえばシステムの管理画面等)を対象外としております。 ただ、シナリオテストで一連の流れの確認も行うため、ユーザー側のテストで通る部分は、 対象外部分でもテスト対象となります。 ※リグレッションの箇所については、品質が保証されているので、  連携頂いた期間とリソースを基にどこまで対象とするかを調整しています。 テスト設計フェーズ テストを実施するための手順を確認しますが、 テストケースについては、テスト観点で認識あわせた箇所に基づいて作成するため、 開発チームとの認識合わせは、ここでは基本行わないです。 テスト実施フェーズ 不具合(仕様と異なる期待結果)、 質問(仕様として存在しない、もしくは仕様が不明瞭な箇所)、 改善要望(仕様と一致しているがユーザーに分かりづらい箇所)をJIRAで報告、 開発チームで対応(修正)後に、QAチームで再確認をしてます。 テスト実施は、テストケース+上記JIRA起票分の対応を含み完了 or 残っているJIRAの起票分が今回のQA確認対象外になった場合に終了となります。 実施が完了したら、全体の振り返り(KPT分析等)に参加して、 改善点を相談させて頂き、今後の案件に活かすようにしてます。 今後の課題 プロジェクトやプロダクトによって、「資料の纏め方」が異なる事があるため、 JIRA or Confluenceで仕様の認識を合わせた上で、QAでも、 ユーザーに関わるシステム全体の仕様やシステムの流れを資料に整理して進めています。 ただ、システムの規模によっては、時間がかかる箇所となりますので、 QAチームでの纏め方や進め方を整理した上で、開発チームと円滑なコミュニケーションを取り、 効率良く「QAチームで仕様を正しく理解するためのまとめ作業」をできるようにしたいです。 さいごに QAチームが独立した組織になってるので、 開発チームからみるとQAチームに作業を依頼してる形になり、 テストをやってもらっているという認識になる事がありますが、 QAとしては、同じKINTOテクノロジーズ株式会社の一員として、 品質の良いシステムを一緒に作り上げたいと思っております。 そのため、今後も協力的な関係を築き上げていきたいです。
アバター
自己紹介 KINTOテクノロジーズのグローバル開発Gで業務エンハンスチームに所属している森です。我々が普段行っている業務については チーム紹介記事 をご参照ください。 我々チームのミッションの1つに「グループ全体のポテンシャル底上げ」があります。今回はこのミッションの一環として取り組んでいる「KUDOS」の活動を紹介いたします。 KUDOSとは? 「Kudo(s)」とは、直訳で「称賛」「賛辞」を表す言葉です。もともとギリシャ語で名声や栄光を表す言葉が語源になっているようです。近年、Kudosは、名前こそさまざまですが、社内の人に対して感謝や称賛の気持ちを表す「称賛文化」導入の取り組みとして多くの企業で取り入れられています。 称賛は従業員のモチベーション向上に有効です。自分の功績を認められた人は、仕事に対して満足度を向上させ、パフォーマンスを上げることにより、今までよりもさらに会社の生産性に貢献するようです。 参考: Where Does Kudos Come From? The Origin of Kudos と、堅いことを書いてみましたが、社内だけでなく日常生活でも多く用いられています。 ワークアウト用SNS「Strava」の例: Kudos👍をあげよう! Slack app「Colla」の例: キャンディ | Colla 「褒められること」がモチベーションを向上させるというのがわかりやすいですよね 🥰 実は、私自身も前職で「Thanks card」という同じような活動がありました。管理職が感謝を表したいときにカードを渡します。もらうのはただの紙ですが、めちゃくちゃ忙しくて心がつぶれそうになったときでも上司からThanks cardをもらうだけで、「この仕事をやっててよかったんだ」と救われた気がしました。 チーム内での運用 人との関係の中で感謝・リスペクトはとても大事です。立場に関係なく、どのような人に対してもこの想いを持った上で接することで、信頼関係が築けます。 2022年春ごろ、業務エンハンスチームが設立した際もこの考えを大事にしたかったのですが、我々は個々に違うタスクに従事しているためなかなかその意を表明できませんでした。 そこで、チームのWeekly meetingで「Kudos」を取り入れることにしました。Kudosという名前はチームメンバーが起案してくれ、週次のチームミーティングで「今週の〇〇さん、XXXの提案ありがとう」のように感謝の意を伝えます。「ちゃんと見てくれているんだな」「私のこういうところを評価してくれているんだな」というのが目に見えて、単純にうれしかったです。 🔻業務エンハンスチームのWeekly meetingテンプレート。カジュアルに感謝を伝えています。 グローバル開発グループへの導入 グローバル開発Gは現在約60名が所属する社内最大の組織です。組織拡大によって陥る課題は様々ですが、我々も例外なくこの壁にぶち当たりました。 参考: 組織拡大で生じる「30人、50人の壁」とは? そこで、グループ内のモチベーション向上を目標として、まずは率直な意見を聞くために2022年5月より「Global KINTO: Monthly your voice」[^1]を始めました。 [^1]: KINTOおよびKINTOテクノロジーズでは社内の声を拾うため「Montly your voice」なる従業員アンケートを行っており、これをグローバル開発G版として始めたものです。 当初は自由筆記制にしていたのですが、グローバルの良い部分を伸ばし、悪い部分を改善できるようにするため2022年7月にリニューアルし、アンケート形式で運用開始しました。 Kudosについても、この一項目として設けました。今までチーム内で活用していて効果があることはわかっていましたが、グループ内に取り入れることで、感謝の気持ちを言い合うことによる信頼の形成、他チームやマネージャー層へのアピール等につながることが期待できました。 🔻 実際のGlobal KINTO: Monthly your voice質問項目例 運用の効果 運用は以下のサイクルで回しました。 1️⃣ 月初にMonthly your voiceのアナウンス 2️⃣ 2週間のアンケート期間 3️⃣ 3週目で集計 4️⃣ 最終週に行うグループの月次定例会でMonthly your voiceのサマリーと共に発表 サマリーの発表時、Kudosをもらった人全員発表しますが、中でも良く頑張っていたな、という人やチームに対しては今月のMVPという形でマネージャー陣から表彰いただいています。 約5ヵ月運用しましたが、実際にグループメンバーからも「嬉しい」「グループの雰囲気が良くなった」という声をいただいています。私自身としても、前よりグループ内のコミュニケーションが活発になったと実感しております。 運営側としても「このチームはうまくやっているな」「この人ってこういうタスクに取り組んでいるんだなぁ」というのが目に見えるのでメンバーのことがよくわかるようになりました。 🔻 直近のアンケート結果でも改善したという声を多くいただいています 😊 課題と改善 これまでアンケートの形式で行っていたKudos投票ですが、前述の通り投票期間が2週間だけ、かつKudosを投票するにはアンケートに答える必要があるので、投票の数が少ないのが現状です。 Kudosは他人へリスペクトを伝える場として用意したので、もっと気軽に、いつでも投票できるべきかと思っています。グループ内からも「いつでも投票できるようにしてほしい」との声をいただいたので、11月中旬からは「Paper Kudos」として紙に書いていつでも投票できるようにしてみました。 まだまだ運用したばかりですが、早速「紙のKudos嬉しい」という声もいただいており、以前よりも投票しやすくなったかな?と感じております。 🔻 アナウンス時の様子。Slackでの反応も上々でした。 🔻 こんな感じで置いてます。 今後取り組みたいこと Kudosの活動は今後も様子を見ながら改善予定です。まずは、物理的に本人にKudos cardを渡せるようになったので、手書きメッセージを渡すつもりでいます。書いた人の気持ちが入っているのがわかりやすいかと思います。 また、表彰の方式や運用の方法についても改善を考えています。今は月次定例で発表してMVPを表彰するのみですが、例えば紙をオフィスに掲示したり、Kudos cardが何枚たまったら景品(ノベルティ)がもらえる、など、Kudosを楽しめる活動を検討しています。 グローバル開発Gだけではなく、KINTOテクノロジーズ全体としてもSlack内に#thanksチャネルがあり、称賛の文化が広まっています。グループ内ではKudosの形で活動を行っていますが、これからも社内全体の称賛文化拡大に貢献できればいいな、と考えております 🎉✨ KUDOS for reading my article😊💗
アバター
We would like to introduce some teams that support the global expansion of KINTO. Self introduction My name is Mori and I am part of the Business Enhancement Team in the Global Development Group at KINTO Technologies. If you would like to know more about what we do on a daily basis, please visit the Team Introduction article. One of our team missions is to increase the potential existing in our department. As an activity related to that mission, I will introduce our KUDOS system today. What are KUDOS? Kudos are a way to praise and express admiration to someone or something for an achievement. It derives from ancient Greek, meaning glory or renown. In recent years, Kudos has been adopted by many companies as an initiative to introduce a "culture of praise" that conveys appreciation and admiration for people within an organization, although the name may vary. I believe praise is effective in motivating employees. Those who are recognized for their accomplishments may improve their satisfaction in the organization and contribute further to the company's productivity than before and increase their performance. Reference: Where Does Kudos Come From? The Origin of Kudos But enough about serious stuff. It can be used not only within a corporate context, but also in daily life. - Examples can be seen on the workout social media "Strava": Giving Kudos👍! - or on the Slack app "Colla": Candy | Colla It's easy to see how "praise" improves motivation 🥰 In fact, I had a similar activity called "Thanks card" at my previous company. Cards were given by managers to staff when they wanted to express their appreciation. It was just a piece of paper, but receiving a Thanks Card from my boss when being overwhelmingly busy, really helped me feel validated about all my efforts at work. How Kudos work in our team Gratitude and respect are very important in our relationships with others. Regardless of position, you can build a relationship of trust by treating any person with this thought in mind. We wanted to keep this idea when the Business Enhancement Team was established in the spring of 2022, but it was difficult to express this in any form as we were all working on different tasks. So we decided to incorporate "Kudos" in our team's weekly meetings. A team member came up with the activity, and from that point onwards, we started thanking each other at our weekly team meetings, such as “thank you A for suggesting this idea!” I felt happy hearing praise from others, made me feel seen and was also nice to see the points where people value my work. 🔻 Weekly meeting template of the Enhancement Team. We express our thanks in a casual manner. Implementation on the Global Group The Global Development Group is currently the largest organization in the company with approximately 60 members. There are a variety of challenges that one encounters when expanding an organization, and us as well are faced with this situation. Reference: What is the "30, 50 person barrier" that arises in organizational expansion? Therefore, with the goal to increase motivation within the group, we started "Global KINTO: Monthly your voice"[^1] in May 2022 to first listen to our colleagues’ candid opinions. [^1]: KINTO and KINTO Technologies have an employee survey called "Montly your voice" to gather feedback from within the company, and we started a Global Development Group version of it. Initially we were just collecting comments, but in July 2022, we renewed it and changed it to a questionnaire to make sure we could see development of the good parts and improve the bad parts. Kudos was also established as one of these improvement points. We had been using the system within the team and knew it was effective, but by incorporating it into a bigger scope, we hoped that it lead to more positive circumstances such as trust-building through mutual expressions of gratitude or enhanced visibility and presence among the different teams and management. 🔻 Actual content from the Global KINTO: Monthly your voice Benefits of Kudos The operation followed the below cycle. 1️⃣ Monthly voice announcement at the beginning of the month. 2️⃣ Two-week survey period. 3️⃣ Tallying in the third week. 4️⃣ Presentation of Monthly Your Voice summary during the group's monthly meeting in the last week. During the presentation of the summary, all Kudos recipients are announced, and managers award one "MVP of the Month" to individuals who have excelled and to the team that has achieved the highest performance. After running this process for approximately five months, we have received positive feedback from group members who expressed their satisfaction and noticed an improvement in the group atmosphere. As for myself, I feel that communication within the group has become more active than before. As the organizer, I have observed that the team is performing better, and that it helps provide visibility on assigned tasks. This visibility allowed me to gain a better understanding of my colleagues and their work. 🔻 Many of our most recent survey results also show improvement 😊. Challenges and improvements Kudos voting is inside a survey form, but as mentioned above, the voting period is only two weeks and the survey must be completed fully in order to write Kudos, so we have received just a few of them at this point. Since Kudos was created as a way to express appreciation to others, I think it should be easier to do and people should be able to give them any time. Some members of the group asked us to make it possible to vote any time, so from mid-November onwards, we started "Paper Kudos". Although we have only just started, we have immediately received comments from people saying they are happy with them, and we feel that it has become easier than before. 🔻 How we announce it: the response on Slack was also very positive. 🔻 We placed them like this in the office. What we would like to work on in the future We plan to continue and improve upon our Kudos-giving culture. Now that we can physically give Kudos cards, we intend to keep the format of handwritten messages. I think that the writer's feelings can been seen more clearly this way. We are also considering improvements in the method of awarding and organizing the awards. Currently, we limit the presentation of MVPs to the monthly meetings. However, we are exploring additional activities to enhance the activity to show appreciation to others, such as displaying the cards in the office or offering small prizes to individuals who accumulate a sufficient number of Kudos cards. Moreover, not only the Global Development Group, but KINTO Technologies as a whole, has a #thanks channel in Slack and the culture of praise is spreading. We have our Kudos system in our Group, but we hope we can continue to contribute expanding the culture of praise throughout the company 🎉✨ KUDOS to you for reading my article 😊💗
アバター
はじめまして、KINTOテクノロジーズでUIデザイナーをしている青嶋と申します。 普段は業務用アプリケーションのUI周りを担当をしております。 少し前になりますが、弊社サイト改修の参考にしてもらうべく、サイトでお客様がどの様に振る舞っているのかを調べるため、ユーザビリティテストを実施しました。 テストのテストといった意味合いもあったので被験者を社内で募り小規模に行ったところ、きちんと考察に値するデータを得ることができましたので今回はテストの概要と実施時の工夫について書きたいと思います。 ユーザビリティテストとは まずユーザビリティテストとはテストと言っても合格や不合格を判定するためのものではなく、ユーザビリティという概念に欠かせない3つのポイントを見定めるためのテストです。 ですのでまずユーザビリティという概念について説明します。 ユーザビリティの定義 ユーザビリティという言葉自体は使い勝手とか使いやすさなど漠然とした意味合いで使われることが多いと思いますが、実は国際規格 ISO 9241によって、次のように定義されています。 「ある製品が、特定のコンテキスト(利用状況)において、特定のユーザーによって、特定の目的を達成するために用いられる際の、効果、効率及びユーザーの満足度の度合い」 そして効果、効率及びユーザーの満足度という3つの項目は以下のように説明可能です。 効果(effectiveness) : ユーザーが目標を達成できるかどうか。(例:ECサイトならちゃんと買い物ができるかどうか) 効率(efficiency) : ユーザーが目標を達成できる場合に、無駄な手順を踏まずなるべく最短経路で目標を達成できるかどうか。 ユーザーの満足度(satisfaction) : 効果や効率に大きな問題がなかったとしても、ユーザーがどのくらい不愉快に思わずに操作できたかの度合い。 例えばECサイトならばそもそも買い物という目的が達成できなければ、ユーザビリティが低いもしくは無いことになります。そしてもし目的が達成できたとしても、なかなかお目当てのものにたどり着けないなど無駄な手順が多ければ、同じくユーザビリティが低いということになりますし、その他の原因でイライラしてしまうなど不快な思いをすればその分ユーザーの満足度は低くなり、同じくユーザビリティが低いということになります。 その様な状態のまま放置しておけば、いずれライバル企業やライバル製品に大切なお客様が流れてしまうという自体を招きかねません。 そうならないためにも製品の取り扱い時やサイト上でお客様がどう振る舞っているのかを知り、ユーザビリティを考えることはとても大切なことではないかと思います。 ユーザビリティテストにできること / 目的 お客様が不快な気持ちにならず、むしろ喜んで製品やサービスを利用していただくことが会社の営利活動の礎となるので、製品やサービスに問題点があったらそこを改善していくべきです。なのでまずは問題点を明らかにするべきところから始めていくわけですが、幸いにもすでに分析グループによるお客様アンケートが存在しており、サイトのどこが分かりづらかったのかというピンポイントの設問がありましたのでそれを参考にさせていただきました。 そしてその問題となっているポイントでお客様がどの様に振る舞っているのかを知ることができれば、なぜそこが問題点となっているのか?のヒントに繋がっていくと考えられます。そのヒント集めがユーザビリティテストにできることだと言えます。 例えれば、アンケートは学生時代の英語のテストと同じようなもので、リスニングがだめだった、文法がだめだったなどどこが悪かったのかを導き出すことを得意としているのに対して、ユーザビリティテストはではなぜそこが悪かったのか?という理由やどうすればよくなるのか?のヒントを導き出すことを得意としていると言い換えることが出来ます。 テストを行う前の準備 タスクや条件を設定 まず最初の準備としては、アンケートによると年齢層に関係なくサイト上で分かりづらいと感じる箇所があるようでしたので、そこを中心に「効果」、「効率」の2つのポイントをテストするためにタスクや条件を設定しました。 このタスクや条件の設定は2つの点で大事だと言えます。まず一つは、被験者に自由に操作してもらっても問題点にふれることなく終わってしまうかもしれないというので、それを防ぐという点。2つ目は様々なリテラシーの方々に同じ条件の下で考えて操作してもらうという点です。 台本・質問・アンケートを用意 次なる準備として、テスト内容を被験者に説明するための台本と彼ら/彼女らのバックグラウンドやリテラシーを知るための質問表、さらにテストが終わった時に行ってもらうアンケートを2種類用意しました。 被験者の方達に安心して参加していただくためにも、テストの前に内容や流れをきちんと説明してあげる必要があります。さらに被験者のバックグラウンドやリテラシーに迫るための質問も行いますので、漏れなく速やかに説明・進行するためにも台本は必要です。アイスブレイクやらなんやかんやで割と時間がかかってしまう場合もありますので、できれば進行の時間割もしておくほうが良いと思います。 テスト終了後に行うアンケートというのは先述の3つのポイントの最後の項目である「ユーザーの満足度の度合い」を図るためのもので、CSAT(CUSTOMER SATISFACTION SCORE)とSUS(SYSTEM USABILITY SCALE)という指標を用いました。CSATは顧客満足度と呼ばれる調査で使われることが多く、満足の度合いを5段階で評価するものです。一方のSUSはわかりやすさや難しさなどの受け止められ方を指標化したもので、いわゆるUXの評価指標としてひろく使われているものです。ちなみにSUSでは導き出される点数が68点以下の場合ユーザビリティを見直す必要があるという基準があるところが分かりやすくて重宝されている理由ではないかと思います。 デバイスのセッティング 最後の準備として、テスト時に被験者の表情や操作の様子を録画するためのスマホとノートPCを用意します。スマホでは手元の操作を、PCでは顔の表情を録画させてもらいますのでそれぞれセッティングを行います。テストが始まったら両方のデバイスでウェブ会議ツール(Microsoft Teams)にログインし録画機能を利用して録画を開始します。(この録画機能は撮影終了後クラウドに自動的に保存されて、しかも自動的に2画面になっているので非常に便利です。) ちなみにスマホスタンドは100円ショップで購入したものを利用しました。 余談ですが一昔前は手元撮影用と表情撮影用でビデオカメラを2台使用し、撮影したデータをローカルに保存して、2画面同タイミングで見比べられるように編集して、、、など行っておりましたので、数年前に比べて遥かに簡単にテストが行えるようになったなぁと少々感動しました。 テスト実施 ここまで準備ができたらついにテスト実施となります。 アイスブレイクもそこそこに説明・質問とを行って、サイト操作によるタスクの実行に移っていきます。 テスト自体は思考発話法で行いました。この方法は被験者に操作を行っていただきながらその時思ったことを口に出してもらうという方法です。平面的な映像情報と、思ったことの発話という音声情報により、立体的に振る舞いを把握しようという方法です。 テスト時の注意点 この時に気をつけなければならないことが2つあります。 一つは、被験者は操作をしながら頭に浮かんだことを発話するということに慣れていないので、黙ってしまわないように常にどう思っているのかをインタビューアーが促し続けていく必要があります。 もう一つは被験者がインタビューアーに質問をすることがよくあるのですが、それはなるべくスルーしなければならないということです(無視ではないです)。 事前の説明では、「被験者が上手にサイトを使えるかどうかのテストではなく、サイトが分かりやすいか難しいかなどを判断するためのテスト」だということを必ず伝えるのですが、それでも被験者は自信のない場面では何気ない気持ちで質問してしまいたくなるものです。しかしそれに答えてしまうとバイアスがかかってしまうこともあるので、答えても差し支えのない質問なのかどうか判断して返答する必要があります。 そしてタスクを終えてアンケートも記入していただいたら、テスト終了となります。 考察に向けての準備 テストが終わったら、次に考察へ向けての準備が始まります。 テストが終わって一段落と行きたいところですが、ここからがむしろ時間がかかる工程となります。 まずやることとしては、文字の書き起こしです。 情報共有のために テストの音声データは一人につき20分〜30分くらいなのですが、聞き取りにくい部分は何度も巻き戻したりすることで結構な時間がかかります。ここが一番骨の折れる作業と言えかもしれません。しかし時系列的な音声情報を平面的な文字情報に変換することで、情報共有が一気にやりやすくなるので、ここは未来のために我慢して黙々とやり続ける必要があります。(音声を自動でテロップ化してくれる機能はまだまだ使い物にならない印象でした。) 次にその発話内容をカテゴリ分けしたりタグ付けしていくなどして分類可能な状態にします。 最初にスプレッドシートなどでまず時系列的にまとめておいて、その後にmiroなどのツールにコピペしていくことで、複数人数の行動データを俯瞰的に眺めたり、様々な軸でまとめたりすることが可能になります。 さらに情報共有をするならば映像データを短く編集しテロップを付けておくことで、テストの様子も簡単に共有することが出来ます。時間的に余裕がある場合はそこまでやってもいいかもしれません。 この時のテストは被験者が5人というごく限られた人数だったこともありそこまで行いましたが、これも非常に骨の折れる作業でした。 考察から改修へ 本来であれば得られたデータを元に複数人数で考察を行い改修へとつなげていくのですが、この時はテストのテストというレベルでしたので、自分の考察をまとめレポート化し一旦ここで終了となりました。 議論のできる人数でステークホルダーを集めて、意見を交わし考察する。そういった工程を経ることで同じ目線で改修へと繋げていくことが可能になるかと思います。ここに書いてきた全てはその為の準備です。 最後に 今回はサービス全体の一部であるウェブサイトの更にその一部分をフィーチャーしてテストした時のことを例に書かせていただきました。そんな一部分のテストにもこうした時間のかかる準備が必要になるわけですが、こうした小さな積み重ねの集積がお客様のサービス体験につながっていくと考えております。 世の中の変化やお客様の要求にすこしでも応えるため、ウェブサイトの進化を支えていけるよう尽力できればと考えております。そしてこの内容がこれからテストを行いたいと考えている方の何かの参考になれば幸いです。
アバター
はじめに KINTOテクノロジーズの開発・編成本部-プロジェクト推進グループの岡本です。グループ・マネージャーを務めています。よろしくお願いいたします。 私は2020年12月に株式会社KINTOに入社、プロジェクト・マネージャーとして活動しつつ、その後、KINTOテクノロジーズ株式会社の設立に伴い転籍し、現在はグループ運営を中心に活動しています。 経歴としては以下となります。 大手SIer24年 SE、PM Salesforce専業のSIer PM 外資系損保会社 会社合併に伴うシステム統合の推進、アーキテクト 若い時はAssemblerでのプログラミングを経験してたりするかなりのオジサン。 エンジニア、PMとして、いろんなことを経験していて、小さな引き出しをいっぱい持ってるのが強みだと自負しています。(要は広く浅くですが。。。。) KINTOテクノロジーズでも幅広く会社、システムを理解することで、組織、プロジェクトをリードできるよう心掛けています。 グループのミッション では、プロジェクト推進グループの紹介をさせていただきます。 主なミッションは以下の3つです。 KINTO国内事業に関する組織横断プロジェクトのマネージメント KINTOが立ち上げるサービスに関わるシステム開発プロジェクト 既存サービスへの商品追加などのエンハンス系のプロジェクトもあり プロダクトの運用・保守 本番稼働しているシステムの運用および保守(エンハンス)開発 上記プロジェクトに加わり開発することも多々 開発サポート 統合検証環境運用、DevOps環境構築支援、B to B領域のUI/UX支援 関連会社であるトヨタファイナンシャルサービス株式会社、トヨタファイナンス株式会社との決済関連サービスの開発に関する協業や支援活動 KINTOテクノロジーズは若い会社ですから、まだ組織構造は柔らかく、KINTOの成長に合わせて変容し続けています。プロジェクト推進グループはその変容真っ只中にいるグループ。プロジェクトを扱うグループ名ながら、プロダクトの運用・保守も担っているのはそういう背景からです。今の状態が完成形ではなく、今後も分割、新たなグループ統合が継続的に行われていくはずです。 プロジェクト 前記の通りいくつかミッションがあるのですが、メインとなるプロジェクトについてお話ししたいと思います。 担当するプロジェクトはKINTOが手掛ける新サービスのシステム開発、既存サービスへの商品追加対応などなど。 直近だとKINTO ONEへの bZ4X 専用商品追加、 KINTO ONE中古車 などを手掛けました。 他にも、進行中のプロジェクトの中には現在進行中のプロジェクトもありますし、企画部署から起案されるプロジェクトだけではなくだけでなく、開発側から起案して進めているアーキテクチャー更改のようなプロジェクトもあります。 プロジェクトは様々な形態、性質のものばかりで、プロジェクト・マネージャーはそのプロジェクトに応じた最適な計画を策定する必要があります。 基本的にはいくつものシステム・プロダクト・組織・業務が関わり合って、未知のサービスを生み出すことになるため、「わからないこと」「知らないこと」を多く抱えてのプロジェクト運営になることがほとんどです。 これは作り上げるものが世の中初のサービスだったり、業務を知らないところからのスタートだったり、社歴が浅いメンバーが多いチームだったり、故にいたることで初顔合わせの状態だったり、といった背景があります。 そのため、プロジェクト・マネージャーには以下のような活動をリードする力が求められます。 「わからない」を「わかる」にする 「知らないこと」を検知する 不確実な事象、曖昧な事象を明確な要件、仕様に落とし込む また、これらの活動を推進するにあたっては、会社、事業、システムを理解し、詳細な要件の提示・確定を待つのではなく、ゴールに適ったソリューションをくみ上げていく必要があります。 そのためには開発内に留まらず、関係者間で共通理解を得るためのコミュニケーション力も求められます。 前向きに捉えれば(且つ大袈裟に言えば)、形がないものを具現化していけることを実感できるし、それはシステムやサービスのみならず、人間関係も含めて作り上げていける。 こういう思いでやっていける方、世の中にサービスを打ち出すことをやりがいと思える方、是非プロジェクト・マネージャーの募集要件をご覧いただき、応募くださいませ。 プロダクト 次にプロダクトの運用・保守についてご紹介します。 プロジェクト推進グループでは、以下のプロダクトの運用・保守を担当しています。 業務システム KINTO ONEの申込審査、契約管理をサポートするシステム KINTO ONEの車両発注、登録、お客様への納車等の販売店業務をサポートするシステム お客様からの問合せに対応するカスタマー・センター業務をサポートするシステム KINTO ONE中古車 KINTO ONE中古車ECサイト KINTO ONE中古車の申込審査、契約管理をサポートするシステム リース料金を計算するシステム KINTO ONE契約終了車両の返却・査定・KINTO ONE中古車物件登録をサポートするシステム KINTO が所有する車両を管理するシステム 他社ECサイトからのKINTO ONE申込連携システム リース料金を計算するシステム KINTO ONE中古車の申込審査、契約管理をサポートするシステム 直売カーセンサーとのデータ連携システム みなさんがよく目にされる KINTO ONE 新車のサイトは別のグループが運用・保守を行ってるのですが、実は、そのサイトやサービスを支えるために、いくつものプロダクトが存在し、それらを私たちグループが担っています。。 これらのプロダクトは、プロジェクトを通じて生み出すところから関わり、リリース後の運用・保守を行うところも自分たちで行っています。 基本的にプロダクト・マネージャー、リード・エンジニアはKINTOテクノロジーズの社員が担っています。エンジニアについては、社員では絶対数が不足しているのでパートナー数社にご協力いただいてる体制で、社内エンジニアの採用も進めてます。 我々KINTOのシステム・プロダクトの多くは、まずは世の中に提供するサービスとしてミニマムな機能実装でリリースします。 そのため、本番運用開始後、徐々に機能追加を行っていくのが通常です。プロダクト・マネージャーは関係事業部の要求事項、システムの改善事項等をバックログとして管理し、関係者との定例Mtgなどで優先順位を決定します。開発チームをリードし、定期リリースを行いながらプロダクトを通じてサービス強化に貢献していきます。 また、既存システムへの商品追加プロジェクトが立ち上がった際には、機能改修対象プロダクトとしてプロジェクトに参画し、事業部、他システム・プロダクトとの調整を行いながら新たなサービス、商品のローンチに貢献していきます。 我々は基本的に内製体制を目指しています。故に要求があった部署と密接にやりとりしますし、社内のリード・エンジニアがアジリティを発揮して開発をリードしてくれるので、会社がサービスとして何をやりたいか、また、リリースした機能のフィードバックを近い位置で感じれるのはプロダクト担当メンバーがやりがいを感じるところです。 進行中のプロジェクトもあり、今後も運用・保守対応が必要となるシステム・プロダクトは増えていきますので、プロジェクト推進グループではプロダクト・マネージャー、エンジニアを募集しております。 最後に プロジェクト推進グループは2022年12月時点で37名が在籍しています。 上記プロジェクト、プロダクトの担当以外に、開発サポートやトヨタグループ会社のサポートを行っているメンバーも数名おり、いろいろな仕事の機会があります。 いずれのポジションにおいても、KINTOのサービスの継続的発展に寄与するのが我々の最大のミッション。トヨタ固有のノウハウや文化、安定感がありながらも、ベンチャー・マインドをもって実践できるのは非常に強みだと思っています。 加えて、全員が中途採用者で組織の文化、風土みたいなものはまだ育ってきてません。 そのため、これらを作り上げていくことに参加できるのも創業期である今ならではの魅力の一つかな、と思います。 グループ紹介ながらお仕事紹介のような記事になってしまいましたが、興味をお持ちいただいた方は採用ページも覗いていただければと思います。 https://www.kinto-technologies.com/recruit/projectpromotion/
アバター
Introduction My name is Okamoto and I work in the Project Promotion Group on the IT&Creative Development Headquarters at KINTO Technologies. I am the Group manager. Thank you for your time reading this article. I joined KINTO Corporation in December 2020 as a project manager. Following the establishment of KINTO Technologies Corporation, I transferred there and have since been mainly in charge of group management. Here is a summary of my career: 24 years at a major system integrator as a systems engineer and project manager Project management at a Salesforce-focused system integrator Architect responsible for system integration following a corporate merger at a foreign-owned non-life insurance company I'm an old-timer and I've been around since the days of Assembler programming. With broad experience as both an engineer and a project manager, I take pride in having a wide range of "small tools" at my disposal. (Though in other words, I'm a generalist with breadth more than depth...) At KINTO Technologies, I aim to lead organizations and projects by building a broad understanding of the company and its systems. Group Mission Let me introduce my team, the Project Promotion Group. We focus on three main missions: Managing Cross-Organizational Projects for KINTO's Domestic Business This includes system development project for services launched by KINTO. Also enhancement projects like adding new products to existing services. Product operation and maintenance This involves operations and maintenance (enhancements) for systems already in production. I also often jump in the above projects and develop them. Development Support This covers managing integrated test environments, setting up support for DevOps environments, UI/UX support in the B2B domain. Also includes working with group companies (Toyota Financial Services Corporation and Toyota Finance Corporation) on payment-related service development and support. KINTO Technologies is a young company, so our organizational structure is pretty flexible and continues to evolve as the company grows. The Project Promotion Group is right in the middle of that ongoing transformation. That's why, even though the name suggests we only handle projects, we're also in charge of product operations and maintenance. What you see now isn’t our final form. We expect more group splits and integrations as we keep evolving. Projects We have several missions as mentioned above, but I would like to talk about our main projects too. It includes system development for KINTO's new services, as well as updates such as adding products to existing services. Most recently, we've worked on adding exclusive bZ4X products to KINTO ONE, and took on project management for the KINTO ONE Used Vehicles project. Other projects are ongoing too. Some are already in motion, others still in the early stages. And it's not just the planning department coming up with ideas; sometimes it’s the development team that kicks off projects, like large-scale architecture overhauls. Projects vary widely in type and nature, so project managers need to come up with plans that best fit each one. In most cases, projects bring together various systems, products, teams, and operations to create entirely new services. That means managing them often involves navigating a lot of "unknowns" and "things you’ve never dealt with before." That's often because we're building a brand-new kind of service or working in an unfamiliar business area. With many newer members on the team, it's also common for people to meet each other for the first time on the project. Therefore, project managers are expected to take the lead in things like: Turning unknowns into knowns Spotting what we don't know yet Translating uncertainty or ambiguity into clear requirements and specifications In addition, when carrying out these activities, it is necessary to understand the company, business, and systems, and to put together solutions that meet the goals, rather than waiting for detailed requirements to be presented and finalized. To achieve this, strong communication skills are key to building shared understanding across all the teams and people involved. If you look at it positively (and in an exaggerated way), you can realize that it is possible to materialize something that has no form, and this can include not only systems and services, but also human relationships. If that resonates with you, and you find purpose in launching services that make a real impact, we'd love for you to check out the Project Manager role and consider applying. Product Next up, here's a look at how we handle product operations and maintenance. The Project Promotion Group takes care of the operation and maintenance of the following products: Business Systems Application screening and contract management for KINTO ONE Dealer support operations for vehicle ordering, registration, and customer delivery for KINTO ONE Customer support system for handling inquiries via the customer center operations KINTO ONE Used Vehicles KINTO ONE Used Vehicle e-commerce site Application screening and contract management for KINTO ONE Used Vehicles Lease fee calculation system System for supporting vehicle returns, appraisals, and registration of used vehicles after KINTO ONE contract completion Asset management system for vehicles owned by KINTO Application Integration for KINTO ONE via External E-commerce Sites Lease fee calculation system Application screening and contract management for KINTO ONE used vehicles Data integration system with third-party sales platforms like Car Sensor While the KINTO ONE new vehicle website you often see is actually run and maintained by a different team, many of the behind-the-scenes systems that support it are owned and maintained by our group. We're involved with these products from the ground up, from the initial project phase all the way through to post-launch operations and maintenance. Generally, product managers and lead engineers are KINTO Technologies employees. As for engineers, we don't have enough in-house staff at the moment, so we're working with several partner companies while also actively hiring in-house engineers. Most of our KINTO systems and products are first released with a minimum features needed to go live as a public release. From there, we roll out additional features incrementally. The product manager keeps track of requests from related business divisions and system improvement items in a backlog, and works with stakeholders in regular meetings to set priorities. Leading the development team and delivering regular releases allows us to steadily improve and strengthen the services. When a new project is added to an existing system, we'll join the project as the team responsible for product updates. We coordinate with the business side, related systems, and products to ensure a smooth launch. We basically aim to keep things in-house. That's why we work closely with the teams making new requests, and our in-house lead engineers show agility in driving development. For the product team, it's rewarding to stay close to what the company really wants to deliver and to quickly hear feedback on features after release. As the number of products and systems we support continues to grow, so does the need for more hands on deck. That’s why we’re actively looking for product managers and engineers to join the Project Promotion Group. Conclusion As of December 2022, the Project Promotion Group has 37 members. Besides handling the projects and products mentioned above, some of us also support development tasks and help out other Toyota group companies. There's a wide range of opportunities, but our core mission is to keep KINTO services growing and improving. What sets us apart is the unique blend we bring: a startup mindset backed with the experience, culture, and stability of the Toyota group. Since everyone joined mid-career, our company culture is still a work in progress. We see shaping that culture together as one of the unique perks of working at our company now, in the early stages of its founding. This ended up being more of a job introduction than a team overview, but if any of this caught your interest, feel free to check out our careers page. https://www.kinto-technologies.com/recruit/projectpromotion/
アバター
はじめに KINTOテクノロジーズでグローバルグループのモバイルアプリ開発を担当している、謝堯(Yao Xie)、方茂碩(Mooseok Bahng)です。 現在、 Global KINTO App というアプリの開発を担当しています。Global KINTO App (GKA)は「世界中のKINTOサービスを1つのアプリでつなぐ」というコンセプトを持たせたモバイルアプリです。現時点ではタイとカタールのKINTOサービスが実装されています。 既存のアプリのかわりになるプロジェクトを進めている中で、Kotlin Multiplatform Mobile (以下 KMM)の導入を決めましたので、今回お話します。 KMMの導入を決めた背景 KMMの導入を決めた背景には次のような課題がありました。 どうしてもiOSとAndroidの間に Business Logicの実装の差が発生する。 開発チームが物理的に2ヶ所に別れていて、開発の効率が落ちる場合がある。-> チームを KMMとNativeに分けることで改善できると思った。 開発リソースが限られているため、効率的な開発体制を構築したい。 その結果、KMMを検討することになりました。 Kotlin Multiplatform Mobile (KMM)とは KMMは iOS, Androidアプリを開発するためのSDKで、基本言語は Kotlinで、Cross-Platformと Nativeアプリのいいところ取りをしています。 KMMで共通のビジネスロジックを開発して、プラットフォーム依存性がある UIはそれぞれ Nativeで開発できます。 個人的にはそれぞれのOSに最適なUIを提供することが一番いいUI/UXだと思っています。 KMMはUIは基本それぞれの Nativeで開発するため、KMMはUIは基本それぞれの Nativeで開発するため、UI/UXの最適化ができ、iOS, Androidとの依存性が少なく、バージョンアップの影響もほとんどないと思っています。 KMMはまだまだ新しい技術で、十分に成熟してないですが、近年いろいろな会社で使われている状況です。 Kotlin Multiplatform Mobile (source: https://kotlinlang.org/lp/mobile ) Architecture KMMについて説明する前に、現在開発チームで採用しているアーキテクチャーについて説明します。 基本的にMVVMを採用して開発しています。KMMを導入しても基本この方針には変更はありません。 ここで、どこまでKMMに含めるかが悩みでした。選択肢は三つぐらい考えられます。 KMM Native Option 1 Repository, Usecase, View Model UI Option 2 Repository, Usecase View Model, UI Option 3 Repository Usecase, View Model, UI 色々試してみましたが、今のところはView ModelまでKMMにする方向に進んでいます。View Modelは除外することも検討してみましたが、せっかくKMMを導入したのに View Modelを別々にする理由が見つかりませんでした。データをリストに表示するだけなどの簡単なフィーチャーについては特にそうです。 これから複雑な機能が追加されると、View Modelを別にする必要があるかもしれません。その時は一部だけView Modelを別々にしたりすることも考えられます。 iOSのCodebaseはかなりコンパクトになりました。Domain LayerとView ModelまでKMMを使っているので、UIとプラットフォーム依存のあるハードウェア関連の機能だけになり、ソースコードの量は半分以下になるのではと思っています。。 下記はFAQリストを表示する簡単な画面のiOS側の実装になります。共通のUI Utility Classを除くとこれで終わりです。 struct FaqView: View { private let viewModel = FaqViewModel() @State var state: FaqContractState init() { state = viewModel.createInitialState() } var body: some View { NavigationView { listView() } .onAppear { viewModel.uiState.collect(collector: Collector<FaqContractState> { self.state = $0 } ) { possibleError in print("finished with possible error") } } } private func listView() -> AnyView { manageResourceState( resourceState: state.uiState, successView: { data in guard let list = data as? [Faq] else { return AnyView(Text("error")) } return AnyView( List { ForEach(list, id: \.self) { item in Text(item.description) } } ) }, onTryAgain: { viewModel.setEvent(event: FaqContractEvent.Retry()) }, onCheckAgain: { viewModel.setEvent(event: FaqContractEvent.Retry()) } ) } } メリット Single Codebase iOS, Androidのネットワーキング、データストレージ、ビジネスロジックなどを Single Codebaseで管理することができます。 Consistency ビジネスロジックを共有するため、基本的に同じUXを提供することができます。 Efficiency KMMの導入によって効率的な開発ができるようになりました。半分に近いタイムコストをカットすることによって、その分、ソースコードの最適化やビジネスの展開に時間を使うことができるようになりました。 Expandable iOS, Androidだけではなく、必要によっては他のプラットフォームにも簡単に拡張することができます。 デメリット iOSのデバッグは別途のpluginのインストールが必要となります。 XCframeworkを適用する場合、Apple Siliconの Macで Simulatorを使うとarm64を参照するため、エラーになります。これは KMM SDK側の修正が必要だと思いますが、暫定的には excluded architectureに arm64を追加するか、x-codeを rosettaモードで実行すると simulatorも使えるようになります。 iOSへの配布方法 Build & Sourcesets Build XCFrameworks KMMの今までのiOSへの配布は Universal (FAT) frameworkが基本でした。最近、やっと公式にXCFrameworkをサポートすることになりましたので、XCFrameworkを採用する予定です。 https://kotlinlang.org/docs/multiplatform-build-native-binaries.html#build-xcframeworks その他 KMMと直接関係はないですが、下記の新しい技術も導入を検討しています。 Ktor 両方のClientに対して同じConfigurationをセットすることができます。 API Requestコードは共通です。 iOS, Androidのエンジンは別々ですが、追加のコードはいらないです。 Apollo Client 既存のプロジェクトではGraphQL APIも一部採用しています。GraphQLのために Apollo Clientの導入を検討しています。 Backendの schema.graphqlsを使い、Queries.graphqlを作成するだけで、Models, Adapters, Queriesが自動生成されます。 https://github.com/apollographql/apollo-kotlin MMKV MMKVはモバイル key-value storage frameworkです。もちろん、Android, iOSを含めて、マルチプラットフォームに対応しています。 https://github.com/Tencent/MMKV https://github.com/ctripcorp/mmkv-kotlin MMKV-Kotlinで MMKVを簡単に私たちのプルジェクトにインテグレートすることができ、shared moduleで key-value storageを管理することができるようになります。 Performance comparison on Android Performance comparison on iOS 今後の展開 Fast growing KMM ecosystems KMMは JetBrainsによって開発されています。Android Studioでシームレスに開発でき、Xcodeも一部対応しています。 開発者の中で広がってきており、KMMのためのオープンソースライブラリがたくさん存在します。 https://github.com/terrakok/kmm-awesome Cross-platform UI Touchlabはすでに Compose UIを iOS、Android両方に使う実験を開始しています。 https://touchlab.co/compose-ui-for-ios/ @Composable internal actual fun PlatformSpecificSettingsView(viewModel: SettingsViewModel) { IconTextSwitchRow( text = "Use compose for iOS", image = Icons.Default.Aod, checked = viewModel.observeUseCompose, ) Divider() } 近いうちにKMMは公式に cross-platform UIをサポートするようになるかもしれません。 まとめ ここまでKMMの導入について説明しました。 KMMの導入によって下記の改善が期待できるようになりました。 iOSとAndroidの間のビジネスロジックの実装の差を最小限に抑制することができる。 必要によっては、開発チームの構成の最適化ができる。 ある程度開発工数を減らすことができる。 まだまだKMM導入の初期段階なので、課題にたくさん直面し、どんどんノウハウが蓄積するので、進捗があり次第また共有します。 ありがとうございました。
アバター
はじめに CIO室 CIOサポートチームの春田です。普段は文字通りCIO景山のサポートとともに主に KINTOテクノロジーズ 全体の財務・法務管理を担当しています。 私たちのチームはKINTOテクノロジーズ全社のバックオフィス業務を担うポジションとして、社内の決裁手続きや取引先様との受発注の調整、社内外の経費精算、請求および支払手続きなど幅広いバックオフィス業務を担っております。 同じくCIO室 CIOサポートチームの北川です。私の担当はパートナーエンジニアの採用窓口で、開発エンジニアをサポートするパートナーエンジニアを日々探しています。私たちのチームは、組織開発、コミュニケーション活性化を担当するメンバーや外国籍スタッフのサポートに注力するメンバーなどもいるという、混成チームと言えます。 今回の記事は当社バックオフィス業務と本チームが実践している開発グループへのサポート内容のご紹介です。 背景 KINTOテクノロジーズが開発したシステムは、親会社である トヨタファイナンシャルサービス株式会社 のアセットとなり、トヨタファイナンシャルサービスから 株式会社KINTO へ利用提供しています。 KINTO:KINTOサービスのビジネスオーナー兼システム利用ユーザー KINTOテクノロジーズ:KINTOサービスにかかるシステム開発運用担当 トヨタファイナンシャルサービス:KINTOサービスにかかるシステム全般のオーナー 上記の通り三社がそれぞれの立場・役割で関わるため、商流および契約面などで複雑化する中、CIOサポートチームはKINTOテクノロジーズの所属としてKINTOテクノロジーズのバックオフィス業務の対応に加えて、一部のメンバーはその他二社を兼務することで、三社間の調整・手続きをよりスピーディかつ正確に処理できるように立ち回っています。 その結果、事務手続きによる開発着手の停滞・遅れを防ぎ、事務手続きの高速化ならびに現場のシステム開発の早期化につながっています。 CIOサポートチームの取組み 1. エンジニアの「めんどくさい」を無くしたい! 通常の会社では、新たなプロジェクトが立ち上がった際に、担当する開発グループで稟議・決裁を起票し、開発エンジニアが社内で事前説明のスタンプラリーや承認会議などを経て社内承認となり、やっと開発着手となるケースが多いと思います。 当社においても、決裁権限規程に沿って、承認会議を介する決裁はありますが、全決裁の約95%が1~2回の承認ステップで決裁完了します。 しかも、その決裁の作成から起票~回付~承認後の保管まで一環の作業のほとんどを、CIOサポートチームにて一括して対応する体制を整えており、開発エンジニアには開発に専念できる環境を提供しています。 ちなみに、稟議決裁を例にあげましたが契約や知財管理も同様で、例えば外部委託の新規契約の場合「新規に〇〇社と契約したい」とエンジニアサイドから連絡を受ければ代行して相手方との調整を行い、契約締結までCIOサポートで対応するなどエンジニアファーストな組織作りを目指しています。 2. トヨタ生産方式を意識した業務設計 トヨタグループであるKINTOテクノロジーズでは、生産フローの中で徹底してムダを省くトヨタ生産方式を意識し、まだまだ道半ばですが社内の業務フローを組み立るようにしています。例えば、ヒューマンエラーの発生時には問題の真因が判明するまで一旦作業をストップし、「品質は工程内に作り込む」の精神から、再発防止策を組み入れた業務フローにて再開させます。 また、トヨタ生産方式では仕事を、①正味作業=付加価値を高めるもの、②付加価値の無い作業=いまは付加価値は無いがやらなければならないもの、③ムダ=作業する上で必要の無いもの、として区分する考え方があり、私たちの職場では定例会議を待ってタイムリーな情報共有や意思決定ができないようなことになっていないか、資料はレビュアーの求める情報量になっていて有益に利活用できるものになっているか、など事務系業務における仕事のムダを意識しながら日々仕事をしています。 3. パートナーエンジニアの採用 KINTOテクノロジーズでは、中途正社員採用に注力して300人規模まで急成長してきました。 正社員エンジニアをサポートする存在として、多くのパートナーエンジニアに参画頂いています。 各開発グループでしっかりコミュニケーションとって体制を構築しているベンダーさんなどについては開発グループ側にお任せしていますが、プロジェクトの状況やチームビルディングの一環で必要になるピンポイントで高度な人材、ニッチな人材は我々に依頼が来るので、多くの外部委託先を積極的にサーチして採用につなげています。 ​ ※担当領域について マス人材  ← 開発マネージャーが担当 ニッチ人材 ← ココを担当してます 上記のような領域・・・プロジェクトの状況やチームビルディングの一環で必要になるピンポイントで高度な人材、ニッチな人材は我々に依頼が来て、多くの外部委託先をサーチして採用につなげています。 特徴的な点としては、こういったニッチな人材はフリーランスエンジニアも積極的に活用しており、活躍いただいています。 ​ ​ 4. その他の取り組みについて CIOサポートチームには多様なメンバーが在籍しており、様々な課題解決に取り組んでいます。 社内コミュニケーション活性化に取り組んでいるメンバーは、全社的な定例会議や勉強会の運営などを通して、全社の情報共有を促進し、研修を企画して各階層でのコミュニケーションを図っています。 ​ 社内での様々なドキュメントの翻訳を担当するメンバーもいます。KINTOテクノロジーズでは3割弱が外国籍社員であり、英語のほうが得意なメンバーも多いため、言語面で取り残されることが無いように社内の重要な会議の議事録や資料の翻訳を内製で迅速に対応しています。 ​ 現在、KINTOテクノロジーズは東京・日本橋と神保町の2拠点と名古屋、大阪の4拠点でオフィスを構えていますが、各拠点にはアシスタントが常駐しており、社員のあらゆる依頼・要望をキャッチできる体制を取っています。何かあればすぐにエスカレーションされて迅速な課題解決を実施しています。 ​ 基本スタンスとして・・・「Noと言わないチーム」でありたいと思っています。決してYesマンという訳ではなく、どうすれば依頼に応えられるか、要望を実現してエンジニアに貢献することが出来るかを第一に考えています。CIO室マネージャーがよく言っている「サーバントリーダーシップ」を実践し、経験したことのない業務でも必要であれば率先して飛び込むことでエンジニアの活動をサポートし、KINTOテクノロジーズの価値を高められるような行動を意識しています。 今後の課題 上記1~4の取組みを継続し、KINTOテクノロジーズの名サポーターとして"当たり前を当たり前にやり続ける"ことで、急拡大するKINTOテクノロジーズのシステム開発チームの高度化に寄与していきます。また、開発エンジニアに寄り添って、エンジニアが求める期待と要望に応じることが出来るサポート体制を維持・向上していくとともに、限られた人的リソースの中でムダな業務の削減を加速していきます。 さいごに このCIOサポートチームには前職でその道のプロフェッショナルだったメンバーが多数所属し、開発エンジニアのリクエストにプロアクティブに対応しています。まだまだ過不足のある発展途上の組織ではありますが、日々業務を通じてエンジニアファースト、エンジニアのストレスフリーを願い仕事をしています。もし、こちらの私たちの活動から同じような組織・役割をされている方で、何か少なからず共感いただければ嬉しいです。 また、このようなサポート体制を有するKINTOテクノロジーズでエンジニアをしてみたいという方、是非ご一緒にお仕事できることを楽しみにしています。
アバター
初めに こんにちは、グローバル開発グループでID Platformを開発しているリョウです。KINTOサービスは既に複数の国で展開しており、今後もさらに多くの国へ展開される予定です。その中で、ID Platform開発チームのミッションは「世界中のお客さまが国を跨いで一つのIDで、全てのKINTOサービスをスムーズに利用出来るIDシステムを構築する」ことです。その中で、現在FIDO Proof of Concept (PoC)の内容を皆さまにご紹介したいと思います。 アイデンティティ・プロバイダ、IDプロバイダ IDP アイデンティティ・プロバイダ、IDプロバイダ(英: Identity provider、略してIdPまたはIDP )は、プリンシパルのID情報を作成、維持、および管理し、フェデレーションまたは分散ネットワーク内の依存アプリケーションに認証サービスを提供するシステムエンティティである。 上記の「アイデンティティ・プロバイダ、IDプロバイダ(以下、IDP)」の説明は、IDPを聞いたことのない方は分かりにくいかと思いますが、簡単に言うと、IDPはユーザの管理、認証、認可を一連担当するシステムです。 FIDOの概念 既にFIDOの概念をご存知の方はいらっしゃると思いますが、FIDO(Fast IDentity Online)とは、一般的なID・パスワードでの認証方法と違い、パスワードレスでオンラインサービスのID認証を実行する新たな認証規格です。FIDOは「秘密鍵」と「公開鍵」の鍵ペアを利用しており、一般的な共通鍵手段より安全性が高い方法です。 FIDO認証の流れ 新規登録の流れは以下になります 登録済みユーザのログインの流れ 一般的な形との比較 一般的な形は: ユーザがアカウント作成する時点でIDとパスワードのペアを設定 サーバーにてIDと暗号化パスワードをデータベースに記入 IDとパスワードをサーバーへ送って判断させる FIDO認証メリット FIDO認証は、パスワードレスで安全的に認証ができる新しい認証方法であり 、FIDOを活用する事によって、パスワードを利用せずに公開鍵暗号で認証できます。ユーザにとって以下のメリットがあります。 サーバーが公開鍵を保存するので、ユーザの秘密情報を保存しない 公開鍵暗号化採用してるので、共通鍵より安全性が高い ユーザはパスワードを覚えなくてもログイン出来る 指紋認証、顔認認証はパスワードを手入力するより操作利便性がある 実現したこと FIDO PoCの目的としては、大きくわけると以下の2つとなります: 現行IDシステムとにおける必要な調整、対応を実現すること 社内、社外のIDシステムをFIDO利用する場合、両方とも簡単に導入出来る案を実現すること 上記の目的を合わせて、以下の4点を実現できました: ECCやRSAの公開鍵を解析すること(目的1) 生体認証によって作られた公開鍵をRDSに保存すること(目的1) 認証が発生時点、正しく認証出来ること(目的1) WebとAPI形両方対応出来ること(目的2) 工夫したこと 基本設計階段でWebとAPI形式兼用 我々は、単にIDPを作る訳ではなく、KINTOのIDPとして世界中に展開しつつ、他のサービスにも導入してもらいたいと考えています。 KINTOの各サービスはAPI式で、簡単にFIDO機能を導入できるようにしており、また、他社の場合でもWeb形式でワンクリックで導入出来るように想定しております。 両方とも対応できる形を工夫してサービスを展開すると、さらに利便性が向上します。 プログラミング言語の変更 公式サイトで手に入れたサンプルコードは、フロントエンド・バックエンド両方ともJavaScriptで書かれています。Spring Bootを利用してサービスを展開中なので、新たな機能としてIDPに追加するとJavaScriptからJava上の変更が必要となります。 JavaScriptで利用されている外部ライブラリと同じ機能のJavaライブラリがない場合には、それを実現するためのコーディングが発生します。 PoC中に遭った問題 ユーザの認証を行う際に、時々RDSに保存された公開鍵に当たらないBugが発生しました。 Debugしてみたところ、RDSに保存されている公開鍵のIDはbase64エンコード済みの文字列は、JavaとJavaScriptのbase64エンコードする関数のエンコード結果が違いました。 JavaScript上では自動補足オフで実行しましたが、バックエンドのロジックをJavaへ移動する際、自動補足の設定に気付かず、Java自動補足を使用してしまいました。 自動補足をオフの状態に切替えることで、無事にBugを解決できました。 Base64.getUrlEncoder().encodeToString(ID文字列) 自動補足を使用したパターンでは、エンコーディング結果が4の倍数に足り無い部分は「=」イコールマークで補足する Base64.getUrlEncoder().withoutPadding().encodeToString(ID文字列) 自動補足オフモードの場合、エンコーディング結果はそのまま。     課題 FIDOによって、ユーザーは以前より便利で安全な方法でオンラインサービスを利用できるようになりましたが、その他にもまた幾つかの対応すべきことが残っています。 公開鍵管理に関する問題点: 同じデバイスで複数の公開鍵を追加できる サーバーからは同じデバイスであることを認識できないので、同デバイス内で公開鍵の登録が何回でもできてしまいます。それによってゴミデータがRDSに保存されてしまいます。 デバイスの切り替えなどによる公開鍵の再登録 デバイスの紛失や機種変更などによって、FIDOの再登録が必要です。再登録の際はその人であることを別の手段で確認する必要があるため、ID&パスワード式より不便だと感じられます。 不要な公開鍵の管理 上記により、不要な公開鍵が生じます。ユーザーが公開鍵のID管理をできないので、公開鍵が無用になると、バックエンド上では公開鍵の有効性がわかりません。公開鍵が無効になっても、長い時間でRDS上に保存しないといけません。 まとめ パスワードレスの形でより良い認証認可の体験をユーザに届きたいので、FIDOのPoCを実施しました。 PoCを実施した結果、有力なソリューションであると感じていると同時に、まだ公開鍵管理などの課題があると感じていますので、これからもしっかり検証をした上で開発を進めていきたいと考えています。 レファレンス FIDO認証とは? OpenID Connectとは?
アバター
はじめに KINTOテクノロジーズ CIO室で人事採用チームのリーダーをしています、岩本です。 キャリアとしては、ホテルのフロントスタッフ → 外資系派遣会社にてCA・人事 → メガベンチャーの事業部人事 → スタートアップの人事立ち上げ といった経験をし、現在も人事に関して幅広く担当しております。 普段は、4匹の犬と2匹の猫に囲まれて、ムツゴロウさんのように過ごしています。 この記事では、人事採用チームの紹介をさせていただきます。 何をしているチーム? 人事採用チームは以下のバリューを軸に、KINTOテクノロジーズの採用・組織構築に携わっています。 具体的には以下の通りです。 採用 KINTOテクノロジーズの開発をリードする、エンジニア・クリエーターの中途採用です。 私が入社した2021年11月頃は160名弱の組織でしたが、2022年12月1日現在、約280名まで拡大し、およそ1年で社員数が約1.5倍になりました。 KINTOテクノロジーズを選んで、入社をしてくださった社員の皆さん、改めてありがとうございます! 今後は、採用体験の向上や社内情報発信などに取り組み、他社から採用の参考にしてもらえる企業を目指していきます。 社員面談 会社の課題を集め、より良い組織にするための施策として、入社後面談 / 全社員面談・休職者面談・退職者面談を2022年2月から取り組んでいます。 会社が設立されてまだ3年目。急速に組織が拡大したこともあり、抱える課題はたくさんあります。社員の方とのコミュニケーション・ヒアリングを通して実態を把握し、組織開発施策の企画・運用を行うなど、会社にとっても、社員にとっても、強くて魅力的な組織つくりのための活動をしています。 もちろん面談以外でも、困ったことがあればいつでも何度でもご相談ください!^ ^ マネジメント研修 エンジニアリング教育研修プロジェクトメンバーと連携し、グループマネージャー向けの研修を企画・運営しています。 働く環境のアップデート 社員の方がモチベーション高く働けるような環境づくりにも関わっています。 小腹がすいたときにすぐ食べ物が購入できるサービスの導入や、TOYOTAミニカーの設置、自販機を設置した際はKINTOテクノロジーズ仕様にラッピングするなど、KINTOテクノロジーズで働くことが楽しくなるような体験を意識しています! その他いろいろ 入社時オリエンテーション対応、入社後のフォローアップ カルチャー醸成、ミッションビジョンバリューの言語化 エンジニアイベントのサポート などなど。とにかく、もらったボールや落ちているボールを拾いまくり、KINTOテクノロジーズで働くみなさんを人事面からサポート、時にはリードしながら、日々活動しています! どんなメンバーがいるの? 実はこれまで、ひとりで採用や組織調整などを担当しておりましたが、今年の4月にメンバーが加わったことでチームが発足し、今では私を含め7名のメンバーで構成されています。 各々の得意領域は以下の通りですが、何においても線を引かないメンバーが集まっているので(だから落ちているボールに気づいて拾える)、横断的に複数のプロジェクトを担当していることが多いです。 「できないではなく、どうやったらできるかを考える」 「誰かが困ったときは、一緒にできる方法を考える」 そんな考え方が浸透していると感じています。心強いメンバー達です! チームのこれから 冒頭に紹介した、「人事採用チームが大切にしたいこと」を変わらず大切に、社員の皆さんに頼ってもらえる、期待を超えていけるようなチームを目指していきたいです。 会社と組織を良くするための戦略的なことも仕掛けていきたいと考えており、人事目線にはなりますが、KINTOテクノロジーズはこれからもっとユニークで面白くなる組織だと思いますので、注目いただけると嬉しいです。
アバター
Introduction I am JL, an application engineer at KINTO Technologies (KTC) and currently a member of the frontend team under the Global Development Group. Before coming to Japan, I worked in the Philippines for 3-4 years, first in the Fishing Industry as technical support and later in the Finance sector as an Associate Software Engineer. By working on both the front end and business side of projects, I acquired experience in developing web pages, batch processes, and business processses using mainly Java, JSP, JavaScript, and CSS. I also learned professional skills that a software engineer must have to be a productive employee of my company. The company I worked for had its headquarters in Japan, and it piqued my interest in going to Japan. I saw that the engineering team in Japan had strong technical skills, and paired with the fact that Japan has a good reputation in the field of Science and Technology field, I wanted to learn from them firsthand. Joining KINTO Technologies After moving to Japan, I was a contract employee at a dispatching company in Tokyo. Being a dispatched employee, I had limited scopes and responsibilities depending on what project I was working on. When a recruiter introduced KTC to me, I found it interesting for various reasons. As people travel around the world on vacations or business trips, I thought there is growth potential for KTC's worldwide expansion of mobility services. It is also atractive for me that although KTC is still new, it is part of Toyota Group that has been providing better cars and services to the world for many years. I felt that I could learn not only technical skills but also communication and business analysis skills. Also, as an application engineer for the Global Group, I will encounter many opportunities to work on projects from different countries perspectives. KTC is a growing company with a clear vision, with the potential to grow even further soon, and it may develop future products that will be of good use, and I hope to be involved with it. My working life and experiences in KINTO Technologies Global Group is a multicultural group with people from different countries like Japan, China, Vietnam, India, and the Philippines. In my team, we communicate using English, which helps foster good communication and avoid language barriers. Despite being in Japan, the Global Group helps and collaborates with overseas KINTO services like Thailand and Qatar. Global Group is also conducting a monthly survey where we can submit our feedback and suggestions for the improvement of the group. There is also a monthly 1-on-1 with our managers to help us plan our careers and have a vision of what we want to do in the company. When I joined, I was assigned to the frontend engineering team which is responsible for developing the frontend of Global Group's product and enhancing the web layout for it to be eye-pleasing to the site visitors. In that team, I was assigned to develop the Technology Portal. The portal was developed from scratch, and it is used by KINTO partners around the world to see what kind of solutions are available for them to use. It was designed to use Gatsby.js, CSS, and AWS S3. It was challenging but rewarding as I was exposed to a programming language and architecture that I was unfamiliar with. It helped me grow a lot in a short period which I highly appreciate. Currently, I am working on Global KINTO App Landing Page . This page is where one can see the information about Global KINTO App and KINTO Services in different countries. In this project, we are improving an existing website and converting the design elements with the KINTO Design System to unify the design of all KINTO system and products; you can learn more about that here . We are using mainly Vue.js and Vuetify for the project. This time I am learning more about design theory and design best practices. It improves my analysis and creative skills, particularly on how to design a page responsively and use SASS and CSS efficiently. Conclusion To wrap it up. My experience in KTC is what I expected in how my career will go when I decided to go to Japan. At first, I thought I will work only with application development and mobility applications because that is the role I applied to. But I am not limited to such positions as I do design system and website development as well which enhances my skill and gives me the impression that my career growth can be flexible in this company. The short span of how I acquired skills, the challenges I’ve encountered, and the great feeling after successfully clearing those obstacles make you feel grateful to work in this company. I can see that my skills have greatly improved. I am looking forward to more exciting challenges I will encounter shortly. There are plenty of possibilities that KTC offers because they are not limiting their employee to only certain positions; it means I may be involved in application service development or being a technical lead in the future. If you are looking to work in a competitive company for good career growth with many possible opportunities for skill up and role responsibilities why don't you try to work in KTC? Particularly in Global Group, it has a good diversity of skillful people that always update their skills with the current trend in the industry; KTC has a solid foundation and assuredly, you will encounter exciting projects when you work with us. https://www.kinto-technologies.com/recruit/globalkinto
アバター
KINTOテクノロジーズにてグローバル開発グループのアシスタントをしている伊東です。メンバーからの問い合わせ対応、資料の翻訳など、こまごまとしたサポート業務をしています。 好きなものは猫と小説です。猫と一緒に寝転がって小説を読むのは天国ですが、ずいぶん前に猫がもう一つの天国に行ってしまったため、ひとりで寝転がって読書する日々が続いています。今年は英語の小説も5, 6冊読みました。以前は、英語で小説を読むのは苦痛以外の何ものでもありませんでしたが、最近、原書で読む楽しさがわかってきました。ですが、外国語を話す一番の楽しみは会話だと思います。英語に限らず外国語が話せるようになると、楽しいことや選択肢が確実に増えます。もちろん、その過程で大変なこともありますが。 外国語を話せるようになるには、どうしたらいいのでしょう?何でもすぐに吸収できる子供と違って、普通の大人はたくさん努力をしなければなりません。語学を習得するために必要なことは、基礎的な文法や単語をわかったうえで、その言語を話す機会をたくさん持つ努力をすること。これに尽きると思います。 本記事では、普通の大人たちの語学力向上のために、グローバル開発グループの業務エンハンスチームが主催しているLanguage Skill Up Projectについて、ご紹介します。 はじまり 現在、グローバル開発グループには60名近いメンバーがいますが、国籍・文化・言語・経歴などさまざまです。その中には日本語があまり得意でない人、英語を今まで仕事ではあまり使わなかったため、話すことに慣れていない人などがいます。メンバーには「開発スキル」という共通点がありますが、言葉の壁のせいで、コミュニケーションがうまくとれなければ、会社にとっても損失になります。この問題を少しでも解消すべく、「メンバーのポテンシャル底上げ」をミッションとする業務エンハンスチームを主体に、Language skill-up projectを始動しました。 総務省が定義するグローバル人材の要素の中に、語学力・コミュニケーション能力、異文化理解の精神というのがありますが、グローバル開発グループにはそれらを培うことのできる環境があります。これを生かしてグローバル人材を育てるのもこのプロジェクトの目的の一つです。グループ内だけでなく、他のグループからも参加できるよう環境を整えています。 言語学習で大切なことは「できないと思わない」ことです。英語で話すこと・日本語で話すことにまずは慣れ、自信をつけていくことを目標に、このあと記載するようなイベントを企画・運営しています。 何をするか 語学力向上の手伝いをすると言っても、一体何をすればいいのでしょう?レベルも様々ですし、何が必要かも人によって違います。 語学学習には何が必要か考えてみました。 基本的な単語、文法(英語であれば中学生レベル)をマスターする 読む(音読含む) 書く 聞く 発音やイントネーションをよくするためにシャドーイングする 会話して話す力をつける 1から5は基本、独学で家にいてもできそうです。6は、お金を払って学校に行くか、オンライン英・日会話をする以外、自分で外に出て行って機会を作るしかありません。そして、おそらく、メンバーに不足しているのは会話する機会でしょう。1から5は、必要であれば、後で付け足すこともできるので、まずは会話する場を提供することから始めました。 日本語カフェ 隔週の昼1時間、楽しく会話するカジュアルな会です。別名ピザ・パーティー。今年(2022年)の4月に始めたので9か月ほど続いています。基本、日本語だけで行われているため、中級から上級レベルの人が多く参加しています。「楽しく」がポイントで、日本語での、より円滑なコミュニケーションができるようになるのが目標です。 日本語カフェ 日本語勉強会 話す機会を持つことが一番とは言っても、日本語カフェだけではさまざまなニーズに応えられないため今年(2022年)8月から始まりました。毎週1回、午後30分。少人数で行っています。 入門クラス あいさつ、ひらがな、カタカナ、生活で役に立つフレーズなどを学びます。 会話クラス(初級~中級) 買い物、電話などのロールプレイをし、そこで学んだ言い回しを使って会話の練習をしたり、関連した言葉を学んだりします。 漢字クラス(初級~中級) 新しい漢字を学びつつ、言い回しも練習します。 ビジネスクラス(中級~上級) Slackなどにある業務連絡を教材にして、ビジネスで使われる単語や言い回しを勉強します。 英語カフェ 2022年7月から始まりました。毎週1回、夕方30分~1時間。神保町オフィスで行っていますが、グローバル開発チーム以外から参加する人、リモートで室町オフィスから参加する人もいます。(ピザは出ません。)これまで英語のゲーム、プレゼン、ディスカッションなどをしてきました。日本語カフェ同様、会話を練習したい中級レベル以上の人の参加が多いですが、少人数で行われることが多いため、その時々によりレベルを合わせることは可能です。初級の人や、英語に関する悩み事を話してすっきりしたいという人の参加もお待ちしています。 英語カフェ(密ですね。写真撮影用に特別に集まってもらいました) 英語個人セッション 週1回30分、英語が苦手な方を対象に2022年4月に始まりました。最初の半年は週2回でしたが、英語を話すことに慣れてきたため、現在は週1回行っています。 最初の頃に比べると、参加者の方々は自分から積極的に話すようになりました。「英語を話すことに抵抗がなくなった」「自信がついた」などのコメントをいただいています。話したい内容があるのは、外国語学習の上で大切です。是非、継続してがんばっていただきたいです。 やってみた感想、今後のこと もともと、コミュニケーション活性化が目的の一つでしたが、日本語・英語ともに、どの時間も和気あいあいとした雰囲気で行っていて、チームビルディングにも非常に役立っています。同じグループに所属していても、仕事で直接かかわりがある人以外と話す機会はあまりありません。日本語カフェ・英語カフェに参加することで、普段、なかなか話す機会がない人とも交流できます。参加者の中には日本語も英語も母国語でない人もいますし、バックグランドも多様なため、会話することで、いろいろな事やさまざまな文化について知る機会にもなっています。 Language Skill Up Projectはまだ始まったばかりで、より効果的な方法がないか試行錯誤中です。まだ参加したことがないという人にもぜひ参加していただきたいです。もっとこういうふうにやってほしいというリクエストも受け付けています。モチベーションを持ち続けるための場であったり、各自が外でも話す機会を作るきっかけになればいいなと思っています。 魔法のように外国語がうまくなることは決してなく、日々、自分で努力する以外に方法はありません。言い換えれば、あきらめず努力を続けさえすれば、必ず話せるようになります。話せるようになった後も、意識的に話す機会を持たなければ、残念ながら、簡単に話せなくなってしまいます。知らないことも永遠になくならないので、勉強し続けなくてはなりませんが、それが習慣づく頃には、勉強というよりは生活の一部に変わっているはずです。
アバター
Self Introduction "It's not that I'm so smart, it's just that I stay with problems longer." — Albert Einstein, physicist Problems can be very discouraging at some point. However, I think my nature of being merry also helped me overcome different challenges. No wonder why I think my name suits me very well. Hi, I'm Mary, and I am part of Global Development Group at KINTO Technologies. I joined the company in January 2022 without so much experience about frontend, yet I chose to accept the challenge. From knowing how to use different tools to knowing how to work on different programming languages, I treated all of these as an opportunity for me to start working on the things I have been longing to try. As time went by, I was amazed that I could already develop a website. Being in a global team allowed me to gain different skills and understand other people’s cultures, histories, and beliefs. I started on a project wherein the language used is English, and since this language is not new to me, it was easy for me to understand how such websites are normally written. However, after that project, I was assigned to work on a project for Qatar, and Arabic is something I am not familiar with. Their way of writing is done from left to right. Nevertheless, I treated this as a chance for me to learn about their reading and writing system, as well as how to address this issue on the web pages that I create. KINTO Technologies was just established last year, and there still is lots of room for improvements, learning, and challenges that we have to overcome. Since I am the type of person who treats challenges as opportunities, I will always choose to go out of my comfort zone, where I believe growth takes place. Overview Languages can be written in different directions - horizontally, vertically, from right to left, or from left to right. As one theory suggests, this is due to the history of how people used to write using a specific medium. In the ancient days, Middle Eastern languages like Arabic and Hebrew, which are written from right to left, were chiseled into stones. Most people were right-handed, and right to left writing seemed to be more natural with a chisel. As for East Asian Languages, which are suggested to have been written using scrolls, they are easier if they were written from left to right. On top of this, using ink and writing from left to right will prevent smudging. Although these are only theories, and even though some means used in ancient times are no longer common, we can still see that the writing direction has been adapted to various mediums - including newspapers, books, and even websites. The ability to support the language direction will help the readers easily understand the language since it is written in its original form. Challenges From the perspective of an end-user when browsing a site, I normally use the language I am comfortable in, which is English. However, after coming to Japan, I realized that not all websites have the option to choose a language. Hence, I started searching the internet and found out that I can set up a website to automatically translate languages I am not familiar with. I thought that this automatic translation would suffice to meet the need of an end user. But as machine translation is still not perfect, there will still be cases of incorrect translation or, worse, some words cannot be translated. With this in mind, I found myself interested in finding ways how to solve such issues. Luckily, I was assigned to work on a project for Qatar, where I encountered the following challenges to overcome: Detection of Browser Language Changing Browser Language Setting Language on a Specific Page Displaying with $vuetify.rtl and document.dir Bonus: Since I am only assigned to do frontend, my main focus is to develop the website itself given the resources I have. The translation from English to Arabic is a different story. Here’s a link to how it was done: Language Localization at KINTO Technologies Solution/s When a company is becoming global, I think one of the issues to solve is how we will be able to make it really global. In order for us to showcase a service or a product, one of the possible ways is to have the information available on the Web. But, I believe this is not as simple as it sounds. We have to make sure that the reader, anywhere across the world, is able to understand the message we are trying to convey. In order for me to be able to display the website in its expected language, I have to understand what browser language is being used by the end user first. With this, we are sure that they will be reading the site in the language of their preference. Detection of Browser Language Using @nuxtjs/i18n Options For reference on how to setup @nuxtjs/i18n, please follow the steps written here . Under nuxt.config.js, input i18n locale, and set detectBrowserLanguage: true i18n: { locales: [ { code: 'en', iso: 'en', file: 'en.json' }, { code: 'ar', iso: 'ar', file: 'ar.json', dir: 'rtl' }, ], detectBrowserLanguage: true, }, code (required) - unique identifier of the locale iso (required when using SEO features) - The ISO code used for SEO features and for matching browser locales when using detectBrowserLanguage functionality. Should be in one of those formats: ISO 639-1 code (e.g. 'en' ) ISO 639-1 and ISO 3166-1 alpha-2 codes, separated by hyphen (e.g. 'en-US' ) file - the name of the file. Will be resolved relative to langDir path when loading locale messages from file dir (from v6.19.0 ) The dir property specifies the direction of the elements and content, value could be 'rtl' , 'ltr' or 'auto' . To set the direction attribute, use $nuxtI18nHead method in the layout <script> export default { head() { return this.$nuxtI18nHead() } } </script> Using window.navigator.language const lang = window.navigator.language console.log('language:' + lang) // language: ar Changing Browser Language In order to test if the above language detection is working, we may explicitly change the browser language settings. Listed below are the steps for how to change the language of some of the widely used browsers. (Note that the following steps are specifically for Windows.) Chrome On your computer, open Chrome. At the top right, click More ⋮ > Settings. At the bottom, click Advanced. Click Languages > Language. Next to the language you'd like to use, click More ⋮. If the language isn't listed, add it by clicking Add languages. Click Display Google Chrome in this language. (This option is only available on Windows computers.) Restart Chrome to apply the changes. Firefox Click the menu button ☰ and select Settings. In the Language section of the General panel, choose a language in the drop-down menu. Restart Firefox. Edge Go to Settings and more (...) > Settings . Select Languages from the Settings list. To add a language to the list of Preferred languages, select Add languages. Once the language is added, select (...) next to the language, and then choose Display Microsoft Edge in this language. Setting Language on a Specific Page Although KINTO is still a new company, we still try our best to deliver services based on customer’s needs and demands. I believe the idea of getting international requires an ample amount of time to cover each country. This is where I realized that KINTO might have been focusing on what is needed at a specific time first, then doing the rest afterwards - a matter of priority. In a project I contributed development to, we first set one page to be able to load both English and Arabic. During that time, the page Get the KINTO App - Mobility for all serves as the landing page for Qatar. Thus, it will need to be translated first before the service is released. Setting the language only on a specific page is not very common. Usually, when translations are done, all pages on a website are translated. But in case this scenario is encountered, the following solution can be applied. Situation : Page must be converted to Arabic, and the direction must be Right-to-Left (RTL) if and only if we are navigating to page /sample with Arabic browser language // Check whether the user is navigating to /sample with Arabic browser language const toArabic = this.$route.name === 'sample' && window.navigator.language === 'ar' // Set the direction of document document.dir = toArabic ? 'rtl' : 'ltr' // Set the rtl direction of Vuetify (true or false) this.$vuetify.rtl = toArabic // Set locale using @nuxtjs/i18n // Under nuxt.config.js, select the code to use this.$i18n.setLocale(toArabic ? 'ar' : 'en') Looking at the above code, we can say that it will only work if the browser language particularly uses ar . What if the browser has ar-XX format? We can use several methods to determine the language, and one of them is by using split() . Through this method, setting the locale will also be easy. const x = "ar-XX" console.log(x.split("-")[0]) //ar this.$i18n.setLocale(x) Displaying RTL with $vuetify.rtl and document.dir During the development, I took time investigating why my RTL layout didn't work properly for all components. I tried setting document.dir = ‘rtl' then setting this.$vuetify.rtl = true , but it doesn’t work unless I set them both. Although I only did trial and error, and confirmed that the components were displayed properly when I used both, there was still an urge for me to know the reason behind the issue. Below are the reasons I found why the problems occurred. Using only $vuetify.rtl <template> <v-icon class="left-arrow" size="100px">mdi-chevron-double-left</v-icon> </template> ... <script> export default { mounted() { this.$vuetify.rtl = true } } </script> ... <style lang="scss" scoped> [dir='rtl'] .left-arrow { transform: rotateY(180deg); } </style> Situation Set this.$vuetify.rtl = true and use [dir='rtl'] at the same time Result Icon is still facing to the left and not rotated Cause If the document is inspected, it shows that the html direction is not indicated. Thus [dir='rtl'] will not work Solution Set document.dir = 'rtl' in order to set the html direction to RTL Using only document.dir <template> <v-expansion-panels> <v-expansion-panel v-for="(item,i) in 5" :key="i" > <v-expansion-panel-header> Item </v-expansion-panel-header> <v-expansion-panel-content> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </v-expansion-panel-content> </v-expansion-panel> </v-expansion-panels> </template> ... <script> export default { mounted() { document.dir = 'rtl' } } </script> Situation Set document.dir = 'rtl' and use vuetify components Result Some components are not properly displayed Cause RTL not working properly during bootstraping Solution Set this.$vuetify.rtl = true . As seen from the snip, the arrow has moved to the left side. <script> export default { mounted() { this.$vuetify.rtl = true document.dir = 'rtl' } } </script> Summing it up Even if most programming frameworks offer support for multiple languages, there are still some tweaks needed for it to work properly. But I am happy that I was still able to finish the task on time, even with the above challenges. Please have a look! https://www.kinto-mobility.com/app/ As more and more countries introduce KINTO services, other projects in KINTO Technologies will need translation and I am happy that I've done the groundwork for such a feature. Thoughts Being in frontend isn't just about creating a website with breathtaking designs and layouts, we also have to consider the user experience. Imagine having an outstanding design, yet it doesn't give satisfaction to our target customers. Are we really meeting their needs and wants? ![Desire Path](/assets/blog/authors/hundanmz/desirePath.png =750x) Photo reference: https://images.squarespace-cdn.com/content/v1/5c6afc627eb88c46e4f41468/1563183013744-RWOU1N19RO77MT0EAH3M/IMG_0873.jpeg References Overview of Language Directions Why Do We Read English From Left To Right? Right to Left Languages | Why are they written this way | Pangeanic Omniglot index by writing direction @nuxtjs/i18n Introduction window.navigator.language Navigator.language - Web APIs | MDN Updating Browser Language Settings Change Chrome languages & translate webpages - Computer - Google Chrome Help Use Microsoft Edge in another language - Microsoft Support Use Firefox in another language | Firefox Help Vuetify Vuetify — A Material Design Framework for Vue.js
アバター