Survey of Cutting-edge Computer Vision Papers - Human Recognition

Introduction

Hi, I am Hiroto Honda, an AI R&D engineer at DeNA Co., Ltd. Japan. The research engineers in my computer vision (CV) team survey and discuss the latest CV papers every day. This time, we would like to share a part of our survey results on cutting-edge computer vision papers. Authors: Plot Hong, Toshihiro Hayashi and Hiroto Honda.

Contents

Quick Summary

  • Five arXiv papers regarding human and hand pose estimation, markerless motion capture, and body part segmentation are surveyed
  • Using a multi-person pose estimation method on a region of interest is effective for crowded scenes.
  • Keypoint localization accuracy can be improved by taking advantage of high resolution features.
  • 3D human pose and mesh are estimated from a monocular RGB image. In addition to 3D pose estimation methods, deformable 3D mesh model, graph CNN, and synthetic data are utilized.

Scope of the survey

The survey covers CV papers that were submitted to arXiv in November 2018 or later. We have picked the papers which we thought important and researched the details. In this report we introduce cutting-edge papers on human recognition, such as pose estimation.

What is Human Recognition?

In this report we introduce human recognition methods which aim at estimating human pose, human parts area or motion capture information using RGB images as input. The human recognition methods are grouped into two categories: top-down and bottom-up approaches. The top-down methods first detect the human instance regions and investigate each instance afterwards. The bottom-up ones first detect the body parts or joints in the whole image and group them afterwards. The methods we introduce this time are categorized as top-down approaches and single-person recognition. The following tasks are included in human recognition:

  • Pose Estimation: a task to find and localize the human body parts such as eyes, shoulders and knees.
  • Dense Human Pose Estimation: a task to localize dense body part points corresponding to the 3D model of human bodies.
  • Markerless Motion Capture: a task to obtain motion capture output without using markers.
  • Human Parsing: a segmentation task for body parts such as hair, face and arms.

The popular datasets used for human recognition are:

  • MS-COCO is the de-facto dataset which includes annotations for object detection, segmentation, and keypoint detection.
  • MPII, PoseTrack are the datasets for 2D keypoint detection.
  • DensePose is the dataset for dense human pose estimation and includes body point annotation corresponding to the human 3D model.
  • Human3.6M is the 3D human pose dataset.
  • MHP is the dataset for human body part parsing.
  • STB is the dataset for 3D hand pose estimation.

Papers

CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark (CVPR2019 Oral)

Summary

An occlusion-robust pose estimation method, and the new dataset to better evaluate in crowded scenes

Proposed Method

Pose estimation pipeline

    • YOLOv3 (*1) is adopted for human bounding box detector and AlphaPose (*2) used with modification as a single-person pose estimator (SPPE) within each box.
    • AlphaPose originally calculates training loss on the single person's keypoints as ground truth even if another person's keypoints are within the target image. The proposed method calculates joint-candidate loss which takes all the keypoints within the image into account.
    • The joints detected in all the regions are mapped on the input image. The keypoints which are detected more than twice in different ROIs and close to each other are grouped into joint nodes.
    • All the joint nodes are grouped and integrated by persons at the Global Association step.

CrowdPose dataset

A new dataset called CrowdPose is introduced. The dataset contains 20k images and 80k human instances and the crowdedness of the images is controlled so that the newly introduced Crowd Index satisfies uniform distribution.

human_A1.png Figure A1: Pipeline of our proposed method. Single-person pose estimator (SPPE) estimates all the keypoints existing within the ROI. At the global association step all the keypoints detected in ROIs are grouped together by person.

Results

The relationship between the mean average precision (mAPs) of the de-facto methods and the Crowd Index on the COCO dataset is shown in Fig A2 (left). The mAP drops by 20 points from Crowd Index < 0.1 to > 0.9. When we look at the dataset, in the MSCOCO dataset (persons subset), 67.01% of the images have no overlapped person. On the other hand newly proposed CrowdPose dataset has uniform distribution of Crowd Index (Fig. A2 right).

human_A2.png Figure A2: Relationship between Crowd Index and landmark average precision on COCO dataset (left), Crowd index distribution on MSCOCO (center) and CrowdPose (right).

The benchmark is carried out on the CrowdPose dataset (Fig. A3). The proposed method surpasses the popular methods such as OpenPose, Mask R-CNN, AlphaPose, and Xiao et al.'s method (*3).

human_A3.png Figure A3: Benchmark results on the CrowdPose dataset.

The proposed method surpasses Mask R-CNN, AlphaPose and Xiao et al.'s method.

human_A4.png Figure A4: Benchmark results on MS-COCO test-dev.

Links

Paper: https://arxiv.org/abs/1812.00324

*1 a popular real-time object detection model proposed in 2018.
*2 AlphaPose: single-person pose estimation model and is also referred to as multi-person pose estimation (RMPE). https://arxiv.org/abs/1612.00137
*3 the method of Xiao et al. was state-of-the-art when 'Crowdpose' was developed but had not been open-sourced yet. The authors seem to have re-implemented Xiao et al.'s method. Crowdpose uses YOLOv3 as a human region detector to compare with the method. PyTorch repo open-sourced in Aug. 2018: https://github.com/Microsoft/human-pose-estimation.pytorch

Deep High-Resolution Representation Learning for Human Pose Estimation

Summary

A strong and accurate single-person pose estimation network which maintains high-resolution representations through the whole process.

Proposed Method

Existing single-person pose estimation (SPPE) methods rely on the high-to-low (downsampling) and low-to-high (upsampling) framework, such as theHourglass network or U-Net. The proposed High-Resolution Net (HRNet) is composed of Parallel multi-resolution subnetworks, where high-resolution representations are maintained through the whole process. As shown in Fig. B1, the feature maps at scale 1x are maintained and interact with the other scales. This network design enables spatially precise keypoint heatmap estimation. The input image goes through two convolution layers with stride=2 before entering HRNet, which means the input feature map is at 4x scale compared with the input image. Therefore the 1x, 2x, 4x, and 8x scales in HRNet shown in Fig. B1 correspond to 4x, 8x, 16x, and 32x scales respectively. The channel widths of the feature maps at the four scales are 32, 64, 128, and 256 respectively (HRNet-W32 setting). The feature maps of different scales are integrated (summed up) after being upsampled by strided 3x3 convolution or downsampled by 1x1 convolution and nearest neighbor operation. The final layer of the network still consists of feature maps at four scales, and only 1x-scale feature map which empirically has highest accuracy is used as output. The loss function is the mean square error with ground-truth keypoint heatmaps.

human_B1.png Figure B1: Proposed HRNet. 1x, 2x, and 4x scales in the figure correspond to 4x, 8x and 16x scale compared with the input image.

Results

Multi-person pose estimation results using HRNet outperforms the Simple Baseline method (ECCV Posetrack challenge 2018 winner) and significantly improved precision-speed tradeoff as shown in Fig. B2. The computation complexity comparison between network components of HRNet and Simple Baseline with ResNet50 + deconvolution upsampling is shown in Figure B3. The total computation complexity of HRNet is 7GFLOPs, smaller than 9GFLOPs (Simple Baseline), which is because upsampling layers that have the dominant (~60%) computation cost are integrated in HRNet. Fig. B4 shows the visualization results of HRNet on MPII and COCO dataset. Benchmark results on COCO test-dev dataset is shown in Fig. B5. The HRNet achieves 75.5% AP, which is significantly higher than existing popular methods: OpenPose 61.8%, Mask R-CNN 63.1%, Cascaded Pyramid Network (CPN) 73.0%, Simple Baseline 73.7%, and also higher than CrowdPose (70.9%). HRNet achieves the best accuracy on PoseTrack dataset as well.

human_B2.png Figure B2: Comparison between SimpleBaseline on tradeoffs between average precision and computation cost.

human_B3.png Figure B3: Computation complexity comparison between network components of HRNet and Simple Baseline (ResNet50).

human_B4.png Figure B4: visualization results on MPII (top) and COCO (bottom) datasets.

human_B5.png Figure B5: benchmark results on COCO test-dev.

Links

Paper: https://arxiv.org/abs/1902.09212
PyTorch implementation: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

Monocular Total Capture: Posing Face, Body, and Hands in the Wild (CVPR2019 Oral)

Summary

A markerless motion capture method to extract the motion of body, face, and fingers from a monocular image or video using a 3D deformable mesh model.

human_C1.png Figure C1: 3D total body motion capture results from monocular images.

Proposed Method

human_C2.png Figure C2: Total capture pipeline of the proposed Method which consists of CNN part, mesh fitting part, and mesh tracking part.

Proposed pipeline consists of three stages as shown in Fig. C2.

  • CNN part: an input image at the ith frame is fed to CNN to obtain joint confidence maps and part orientation fields which represents 3D orientation information of body parts.
  • Mesh fitting part: estimates human motion by adjusting the parameters of the deformable 3D mesh model frame by frame. The 3D mesh model proposed in Total Capture is used.
  • Mesh tracking part: improves temporal consistency across frames by using the image and the parameters of the mesh model at (i - 1)th frame.

Part Orientation Fields L represents the 3D vectors between keypoints as shown in Fig. C3, which is similar to Part Affinity Field used in OpenPose.

human_C3.png Figure C3: Part orientation field. The 3D vectors between keypoints are inferred as a heatmap.

The new dataset is collected using CMU Panoptic Studio . 834K body images and 111K hand images with corresponding 3D pose data are obtained (not available so far).

Results

The proposed single framework achieves comparable results to existing state-of-the-art 3D body pose estimation or hand pose estimation methods as shown in Fig. C4 and C5.

human_C4.png Figure C4: Benchmark results of 3D pose estimation on Human3.6M dataset.

human_C5.png Figure C5: Benchmark results of 3D hand pose estimation on STB dataset.

Links

Paper:https://arxiv.org/abs/1812.01598
Video:https://www.youtube.com/watch?v=rZn15BRf77E

Parsing R-CNN for Instance-Level Human Analysis

Summary

A high-accuracy R-CNN method for human instance recognition tasks such as human body parts parsing and Dense Pose estimation.

human_D1.png Figure D1: The Parsing R-CNN pipeline. Feature Pyramid Network is used as backbone and Bbox branch and Parsing branch are applied to cropped ROIs.

Proposed Method

  1. Feature extraction part: a similar structure as Feature Pyramid Network (FPN) is employed, except that proposals separation sampling (PSS) is used for cropping. PSS selects the ROI proposed by the Region Proposal Network (RPN) only from the P2 scale that has the highest spatial resolution.
  2. Bbox Branch: bounding box regression is carried out for cropped ROIs.
  3. Parsing branch: newly proposed Geometric and Context Encoding (GCE) module is adopted to perform human body parts parsing or dense pose estimation on the ROIs. GCE is composed of Atrous spatial pyramid pooling (ASPP) (*1) to capture features with an enlarged receptive field, and a Non-local Neural Network(*2) to integrate non-local features. Both ASPP and the Non-local part contribute to improving accuracy. Four convolution layers are inserted after GCE, which is empirically better than before GCE. (Figure D1).

human_D2.png Figure D2: Geometric and Context Encoding module that is the part of Parsing branch shown in Fig. D1.

Results

The proposed method outperforms all state-of-the-art methods on CIHP (Crowd Instance-level Human Parsing), MHP v2.0 (Multi-Human Parsing) and DensePose-COCO benchmarks (Figure D3 and D4).

human_D3.png Figure D3: (a) input image (b) Inference result on DensePose task (c) input image (d) Human Parsing Results

human_D4.png Figure D4: 2018 COCO Dense Pose challenge results (left), human parsing benchmark results on CIHP and MHP datasets (right)

Links

Paper: https://arxiv.org/abs/1811.12596

*1 Atrous spatial pyramid pooling is the module that can improve semantic segmentation performance. By operating dilated convolutions with different dilation rates in parallel, the receptive field of the network is enlarged. paper: https://arxiv.org/abs/1802.02611
*2 Non-local Neural Network is the method to integrate similar but non-local features. paper: https://arxiv.org/abs/1711.07971

3D Hand Shape and Pose Estimation from a Single RGB Image (CVPR2019 Oral)

Summary

3D hand pose and 3D mesh estimation from an RGB image, which can run in real-time on GPU at over 50fps (Fig. E1).

Proposed Method

This paper proposes a 3D hand mesh and pose estimation method from a single RGB image utilizing Graph CNN and synthetic data. The 3D mesh data have the graph structure by nature, which is why Graph CNN is effective. Synthetic data are used for training because 3D mesh annotation is extremely laborious and costly. More specifically, the network is trained under supervision of synthetic data with 3D mesh annotations and fine-tuned with weak supervision by the RGBD real-world data. 3D hand joint locations are regressed from the reconstructed 3D hand mesh by using a simplified linear Graph CNN (Fig. E2).

Pipeline(Fig. E2, E3)

  1. 2D heatmap estimation using stacked hourglass network
  2. ResNet encodes the heatmap and the image features into latent feature vectors
  3. 3D mesh inference from the latent feature vectors by Graph CNN
  4. 3D keypoints estimation from the 3D mesh by Linear Graph CNN

At test time, the absolute depth of the root joint and the hand scale are assumed to be provided.

Loss functions for training on synthetic data:

  • heat-map loss: keypoint estimation loss on the 2D images
  • 3D pose loss: L2 loss of 3D keypoint estimation
  • mesh loss: composed of four losses - vertex loss, normal loss, edge loss and Laplacian loss.

Loss functions for fine-tuning on real data:

  • heat-map loss: the same as the one on the synthetic data.
  • depth map loss: smooth L1 loss between ground truth and the depth maps rendered by differentiable renderer from the mesh.
  • pseudo-ground truth loss: pseudo-ground truth mesh is generated using the pretrained models and the ground truth heat-maps. Edge loss and the Laplacian loss are applied as the pseudo-ground truth mesh loss to guarantee the mesh quality.

Results

Although there are no existing methods where 3D mesh is reconstructed from RGB images, the method can produce accurate and reasonable 3D hand mesh compared with baseline methods. As for 3D hand pose estimation, the method outperforms state-of-the-art methods (Fig E4). On STB dataset, higher AUC than Monocular Total Capture is achieved. The pipeline can run at 50FPS on GTX 1080.

human_E1.png Figure E1: Inference results by the proposed methods. Not only 2D / 3D keypoints but also 3D mesh are generated. Results on the synthetic dataset (top), on the real-world dataset (center) and on the STB dataset (bottom).

human_E2.png Figure E2: Training pipeline of the proposed method. (a) fully supervised training on the synthetic dataset and (b) fine-tuning on the real image dataset without 3D mesh or 3D pose ground truth in a weakly-supervised manner.

human_E3.png Figure E3: Graph CNN architecture which generated 3D hand mesh from a latent feature vector.

human_E4.png Figure E4: Benchmark results. Results on the RHD dataset (left), on the STB dataset (center), and on the STB dataset without 3D hand pose supervision (right).

Links

Paper: https://arxiv.org/abs/1903.00812

Conclusion

In this report, we have introduced the latest papers regarding human recognition, specifically pose estimation, hand pose estimation, markerless motion capture, and body part segmentation.
Human pose estimation is getting more and more accurate and able to detect the keypoints that are occluded by other instances. Using a multi-person pose estimation method on a region of interest is effective for crowded scenes. Keypoint localization accuracy can be improved by taking advantage of high resolution features.
3D human (hand) pose and mesh are estimated from a monocular RGB image. In addition to 3D pose estimation, deformable 3D mesh model, graph CNN, and synthetic data are utilized.

Further progress will be made on human recognition techniques and novel attempts and applications will appear every year. We will keep updated on the cutting-edge research to innovate our products and services.

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

コンピュータビジョンの最新論文調査 Human Recognition編

はじめに

こんにちは、AIシステム部でコンピュータビジョンの研究開発をしております本多です。
我々のチームでは、常に最新のコンピュータビジョンに関する論文調査を行い、部内で共有・議論しています。今回我々が読んだ最新の論文をこのブログで紹介したいと思います。
今回論文調査を行なったメンバーは、洪 嘉源、林 俊宏、本多 浩大です。

論文調査のスコープ

2018年11月以降にarXivに投稿されたコンピュータビジョンに関する論文を範囲としており、その中から重要と思われるものをピックアップして複数名で調査を行っております。今回はHuman Recognition編として、ポーズ推定をはじめとする人物の認識に関する最新論文を取り上げます。

前提知識

今回紹介するHuman Recognitionとは、RGB画像を入力として、人物の姿勢推定やセグメンテーション、モーションキャプチャ情報を推定するタスクです。複数人物の映った画像に対して上記のタスクを行う場合、各人物の領域を検出してから、各人物の器官点などの認識を行うTop-down手法と、画像中の全領域から器官点などを検出してから人物ごとにグループ分けするBottom-up手法に分類されます。今回紹介する論文の手法はTop-down手法または単一の対象に対する手法となります。
Human Recognitionには以下のようなタスクがあります。

  • Pose Estimation(姿勢推定):人物の器官点(目・肩・ひざなど)の位置を推定するタスク。
  • Dense Human Pose Estimation :人体3Dモデルとの対応点を密に推定するタスク。
  • Markerless Motion Capture:マーカーを使わず、画像のみからモーションキャプチャ情報を推定するタスク。
  • Human Parsing:人物の髪・顔・腕など、身体パーツでセグメンテーションするタスク。

関連する主なデータセットは以下です。

  • MS-COCO 物体検出・セグメンテーション・人物姿勢等のラベルを含むデータセットで、recognition系のタスクではデファクトスタンダード。
  • MPII, PoseTrack 人物2D姿勢データセット。
  • DensePose 人物3Dモデル対応点データセット。
  • Human3.6M 人物3D姿勢データセット。
  • MHP Human Parsingデータセット。
  • STB 手の3D姿勢推定データセット。

論文紹介

CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark (CVPR2019 Oral)

要約

人物が重なりあった混雑シーンに対応できるポーズ推定手法と、混雑度をコントロールしたCrowdPoseデータセットの提案

提案手法

ポーズ推定手法

  1. 人領域 (bounding box) の検出器としてYOLOv3 (*1) を用い、それぞれのbox内のポーズ推定はsingle-person pose estimator(SPPE, 単一人物姿勢推定)で行い、高性能な従来手法であるAlphaPose (*2) を修正して使用。
  2. AlphaPoseでは、人検出器で画像の中に各人物の領域 (ROI) を検出した後、その人に属する関節点のみを正解関節点としてロスを計算する。本論文では、各人物の領域 (ROI) に対して、その人物に属するかどうかを問わず、ROI内に存在する全ての関節点を正解関節点として、Joint-candidate Lossを計算する。全ROIの関節点を入力画像にマッピング、距離が近い同種類の関節点をクルーピングし関節点ノードとする。これによって、2で重複して検出された関節点を一つのノードとしてまとめる。
  3. 全ての関節点ノードをGlobal Associationステップで各人物のノードに割り当て、統合する。これにより、画像全体の視点から各人の関節点をより正確に割り当てることができる。

CrowdPoseデータセット

CrowdPoseという混雑シーンのポーズ推定用データセットを作成した。20000枚の画像からなり、80000の人物を含み、混雑度を示すCrowdIndexという指標に基づいて各画像の混雑度を測ることで、様々な混雑度の画像がバランスよく含まれるように構成した。

human_A1.png 図A1:提案手法。それぞれのbox内に存在する全器官点を単一人物姿勢推定ネットワークで推定、Global Associationにて全boxの器官点を各人物に割り当てて最終出力とする。

結果

Crowd Indexに対する各デファクト手法の精度を見ると (図A2左)、Crowd Indexの大小でmAPが20ポイントも変化することがわかる。一方、各データセットにおけるCrowdIndexの分布 (図A2 中央・右)によると、新たに作成したCrowdPoseは様々な混雑度の画像をまんべんなく含んでいる。

human_A2.png 図A2:Crowd Indexとランドマーク精度の関係(左)、MSCOCOとCrowdPoseデータセットにおけるCrowd Indexの分布 (中央、右)

CrowdPoseデータセットを用いた、提案モデルのベンチマーク結果は図A3のようになった。OpenPose、Mask R-CNN、AlphaPose、Xiaoらの手法 (*3) を上回っている。

human_A3.png 図A3: CrowdPoseデータセットによるベンチマーク

MSCOCOデータセットを用いたベンチマークにおいても高い精度となった。やはりMask R-CNN、AlphaPose、Xiaoらの手法を上回っている。

human_A4.png 図A4:MSCOCOデータセットによるベンチマーク

リンク

論文:https://arxiv.org/abs/1812.00324

*1 YOLOv3: 2018年に発表された、リアルタイム動作可能な物体検出モデル。
*2 AlphaPose: regional multi-person pose estimation (RMPE) という手法の別称。https://arxiv.org/abs/1612.00137
*3 Xiao et al., の手法は当時SOTAであったが、オープンソース化されていなかったため著者らが再現実装したと思われる。フェアに比較するため人物領域検出はYOLOv3を用いた。ちなみに2018年8月にPyTorch実装がオープンソース化されている。https://github.com/Microsoft/human-pose-estimation.pytorch

Deep High-Resolution Representation Learning for Human Pose Estimation

要約

ポーズ推定ネットワークを強化、複数スケールのinteractionを密にしてフュージョンすることで精度を向上した

提案手法

single-person pose estimator (SPPE) としては、ダウンサンプリングネットワークとアップサンプリングネットワークからなるHourglass network(U-Netもその一種である)が主流であるが、 本論文で採用するHigh-Resolution Net (HRNet) では、図B1のように、1xの解像度 (HR) を持ったfeature mapが常に伝播し他のスケールと相互作用する設計となっている。これにより器官点のlocalization精度が向上する。
入力画像はstride=2の2層のconv層を経てHRNetに入力される。すなわちHRNet入力時のfeature mapは入力画像の1/4スケールとなっている。HRNetの1x, 2x, 4x, 8xの4スケールは入力画像に対してはそれぞれ4x, 8x, 16x, 32xのスケールに相当し、チャンネル幅はそれぞれ32, 64, 128, 256である(HRNet-W32ネットワーク)。異なるスケールのfeature mapはアップサンプリング (strided 3x3 convolution) またはダウンサンプリング (1x1 convolution + nearest neighbor) されて加算される。ネットワークの最終段は1x, 2x, 4x, 8xの4スケールが出力されるが、このうち最も精度の高い1xの出力のみが用いられる。損失関数はground truthのキーポイントヒートマップに対するmean square errorである。

human_B1.png 図B1:提案手法HRNetのネットワーク図。縦軸が入力スケールを基準にしたfeature mapのスケール、横軸がCNNのdepthを表す。入力スケールは入力画像の1/4である。

結果

著者らの前作であるSimple Baselines for Human Pose Estimation and Tracking (ECCV Posetrack challenge 2018で優勝)を大きく上回り、Average Precision vs 演算量のトレードオフを改善した(図B2)。

図B3に、HRNet及び著者らの前作Simple Baseline(ResNet50 + upsampling)の演算量内訳を示す。トータルの演算量は7GFLOPs (HRNet) 、9GFLOPs(Simple Baseline) と低減されている。その主な原因はSimple Baselineにて演算量の6割を占めていたupsamplingレイヤがなくなり、HRNetに統合されたことによる。図B4はMPII及びCOCOデータセットによるテスト結果である。
図B5に、ポーズ検出手法のCOCO test-devにおける比較結果を示す。
OpenPose 61.8%、Mask R-CNN 63.1%、Cascaded Pyramid Network (CPN) 73.0%、Simple Baseline 73.7%、また上述CrowdPose 70.9%に対して、HRNetは75.5%とさらに高精度となっている。PoseTrackデータセットにおいても、精度面でSOTA手法となっている。

human_B2.png 図B2:HRNetと、著者らの前作であるSimpleBaseline (ResNet50) のAP(ランドマーク精度) vs GFLOPs(演算量)トレードオフ比較。

human_B3.png 図B3: HRNetと、著者らの前作であるSimpleBaseline (ResNet50) のネットワーク部位別計算量

human_B4.png 図B4:MPII (上段)およびCOCO (下段)でのテスト結果

human_B5.png 図B5: COCO test-devでの性能比較結果

リンク

論文:https://arxiv.org/abs/1902.09212
PyTorch実装: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

Monocular Total Capture: Posing Face, Body, and Hands in the Wild (CVPR2019 Oral)

要約

単眼2D画像のみから顔、体、手を含む全身の3Dモーションを推定するMarkerless Motion Capture手法。

human_C1.png 図C1:Monocular Total Captureの実行結果。単眼カメラ画像から3Dのモーションキャプチャ情報を推定する。

提案手法

human_C2.png 図C2:提案手法の処理の流れ。CNN部、メッシュフィッティング部、メッシュ追跡部からなる 2次元画像シーケンスを入力して、各フレームの3D人体モデルのモーションキャプチャー情報を出力する。 身体モデルは著者らによる前作であるTotal Capture で提案された3D Deformation Modelを用いる。

提案手法は図C2に示すように、3ステージに分けられる。

  • CNN部:i フレーム目の画像をCNNに入力し、 器官点の位置 (Joint Confidence Maps) と、各器官点間の3Dベクトル (Part Orientation Fields) が得られる。
  • メッシュフィッティング部:可変人体モデルを上記出力S、Lで調整することで人体のモーション推定をする。このステージで一フレームの人物3Dメッシュ推定が可能となる。
  • メッシュ追跡部:i - 1フレーム目の画像とパラメータを入力することで、モデルのパラメータを調整、複数フレームでのtime consistencyを向上する。

Part Orientation Fields Lは図C3のように、器官点間の3Dベクトルをヒートマップとして推定する。OpenPoseに用いられるPart Affinity Fieldと類似している。

human_C3.png 図C3:Part Orientation Fieldの説明図。器官点間の3Dベクトルがヒートマップとして推定される。 CMU Panoptic Studio を用いて 834K の身体画像と 111K の手画像を3D姿勢アノテーション付きで取得し、新データセットを構成した(未公開)。

結果

身体部位のモーション推定データセットHuman3.6M (in-the-wild) 、及び手姿勢データセットSTB datasetでSOTAとなった。

human_C4.png 図C4:Human3.6Mでのベンチマーク結果。

human_C5.png 図C5:STBデータセットでの手姿勢推定ベンチマーク結果。

リンク

論文:https://arxiv.org/abs/1812.01598
動画:https://www.youtube.com/watch?v=rZn15BRf77E

Parsing R-CNN for Instance-Level Human Analysis

要約

人物インスタンス認識に関するタスクであるHuman Parsing及びDensePose Estimation において高精度なR-CNN手法を提案する。

human_D1.png 図D1:Parsing R-CNNのパイプライン全体図。Feature Pyramid Netwokをバックボーンとし、ROIAlignでクロップしたROIごとにBbox branchとParsing branchを適用する。

提案手法

  1. 特徴抽出部: proposals separation sampling (PSS) という手法を提案する。Feature Pyramid Network (FPN) とほぼ同じ構造だが、Region Proposal Network (RPN) によって得られた注目領域に対し、最も解像度の高いP2スケールのfeature mapをクロップすることが特徴である。
  2. Bbox Branch : クロップした領域に対し、bounding boxの回帰を行う。
  3. Parsing branch:新提案のGeometric and Context Encoding (GCE) モジュールを適用、セグメンテーション(Human parsing)やdense pose推定を行う。GCEの前半はAtrous spatial pyramid pooling (ASPP) (*1) でマルチスケールの情報を獲得し、後半はNon-local Neural Network(*2) を適用、それぞれ精度向上に寄与している。GCEの前後にconv層を挿入する実験を行なったが、前に入れたときの効果が薄かったため、GCEの後に4層のconvを入れるアーキテクチャとした (図D1)。

human_D2.png 図D2: Parsing branch(図D1右下部)を構成するGeometric and Context Encodingモジュール。

結果

CIHP (Crowd Instance-level Human Parsing) 、MHP v2.0 (MultiHuman Parsing) と DensePose-COCO データセットでSOTAとなった(図D3、D4)。

human_D3.png 図D3:(a) 入力画像 (b) DensePoseタスクの推定結果 (c) 入力画像 (d) Human Parsing結果

human_D4.png 図D4: (左)DensePose タスクの評価結果、(右)CIHPデータセット, MHPデータセットにおけるHuman Parsingタスクの評価結果

リンク

論文:https://arxiv.org/abs/1811.12596

*1 Atrous spatial pyramid poolingはsemantic segmentationタスクにおいて有効なモジュールで、dilation rateの異なるdilated convolutionを並列に用いることでreceptive fieldを広げる効果がある。論文は https://arxiv.org/abs/1802.02611
*2 Non-local Neural Networkはfeature map上で空間的に離れた位置にある、類似したfeature を統合することでfeature mapの質を向上する手法である。論文はhttps://arxiv.org/abs/1711.07971

3D Hand Shape and Pose Estimation from a Single RGB Image (CVPR2019 Oral)

要約

RGB 画像から手の 3D 姿勢と 3D メッシュを同時推定する手法を提案、GPU で 50 FPS で動作する(図E1)。

提案手法

この論文では,Graph CNNと合成画像を活用し、RGB 画像から手の 3Dメッシュと3D姿勢を推定する手法を提案している。3Dメッシュデータは自然にグラフ構造を持つため, Graph CNNが有効である。 実画像に対し 3D メッシュのアノテーションをつけることは容易でないため合成画像を活用し学習する。具体的には、3D メッシュありの合成画像で教師あり学習をした後、RGBDの実画像データを用いて、弱教師ありのfine-tuningを行う。3D姿勢は3Dメッシュから線形なGraph CNNで回帰する(図E2)。

推定パイプライン(図E2, E3)

  1. stacked hourglass networkで2D heat map推定
  2. heat map と画像特徴を合わせたものをResNetで特徴ベクトルに変換
  3. 変換した特徴ベクトルからGraph CNNでメッシュ推定
  4. メッシュからLinear Graph CNNで3Dキーポイント推定

テスト時はroot joint(手首) までのdepthと手のスケールは分かっている前提である。

合成画像での学習時のloss

  • heat-map loss: 2D 画像でのキーポイント推定のloss
  • 3D pose loss: 3D キーポイント推定のL2 loss
  • mesh loss: これは更に分解されて、頂点、辺、法線、滑らかさに関する 4 つの loss からなる

実画像に対する fine-tune時のloss

  • heat-map loss: 合成画像の場合と同じ
  • depth map loss: メッシュを differentiable rendererで深度画像にレンダリングしたものと GT との smooth L1 loss
  • pseudo-ground truth loss: GT 画像、GT heat mapからpseudo-GTメッシュを作り、そこからエッジの長さ、滑らかさが離れ過ぎないように loss をかける。Depth map lossのみだと見えている部分以外がおかしくなるため

結果

RGB からの 3D メッシュの推定は既存手法には無いが素朴なベースラインを上回る性能。3D 姿勢の推定では既存データセットで SOTA (図E4)。STBデータセット(図中央)では、上述のMonocular Total Captureよりも高いAUCとなっている。GTX 1080 で 50 FPS動作する。

human_E1.png 図E1: 提案手法による推論結果。2D/3Dのキーポイントだけでなく、3Dメッシュも生成している。(上) 合成画像データセットでの結果、(中) 実画像データセットでの結果、(下) STBデータセットでの結果。

human_E2.png 図E2: 提案手法の学習方法の概要。(a) 合成画像データセットによる学習、(b) 実画像データセットによるfine-tuning。

human_E3.png 図E3: 手の3Dメッシュを生成するGraph CNNのアーキテクチャ。

human_E4.png 図E4: 既存手法との比較。(左)RHDデータセットでの結果、(中)STBデータセットでの結果、(右)STBデータセットで3D姿勢なしで深度画像を使って弱教師あり学習した場合の結果。

リンク

論文:https://arxiv.org/abs/1903.00812

おわりに

今回はHuman Recognitionと題して、RGB画像からの人物・手の姿勢推定やモーションキャプチャ情報の推定、セグメンテーションに関する論文を紹介しました。 人物のポーズ認識はさらに高精度化を遂げ、人物が重なり合っている画像でもそれぞれのキーポイントを検出することが可能となってきています。身体や手の3Dポーズ推定やメッシュ推定も、単眼のRGB画像からできるようになってきました。
人の認識技術は今後も重要分野として進展し、さまざまな新しい応用が生まれてくると考えられます。DeNA CVチームでは引き続き調査を継続し、最新のコンピュータビジョン技術を価値あるサービスに繋げていきます。

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA QA Night #2 開催レポート(パネルディスカッションパート)

こんにちは。品質管理部QC2Gの柏倉直樹です。Eコマース、ライブ配信サービス、インキュベーションプロジェクトなどのQAリーダーを勤めつつ、DeNA品質管理部の知名度アップとQA業界への貢献を目指し、DeNA QA Nightと言うイベントのプロジェクトオーナーを担っています。今回はそのDeNA QA Nightの第2回目開催レポートをお届けします。

はじめに

DeNA QA Nightとは、ソフトウェアテスト・品質に関しての技術や事例を共有・議論する事を目的とした定期開催イベントです。ソフトウェアテスト・品質に関して広く議論する機会を提供することでテスト・品質コミュニティへの貢献を目指し企画・開催しております。

今回はその第2回目の開催レポートです。 第1回目の開催レポートもありますので、ご興味のある方はご覧ください。
第1回 DeNA QA Nightレポート(前半)
第1回 DeNA QA Nightレポート(後半)

第2回 DeNA QA Nightは2部構成となっています。

【前半】
DeNA品質管理部QC1Gの山本幸寛よりゲームQAにおける品質改善の取り組みについて発表しました。 上流工程でレビューを実施すると下流工程でみんなハッピーになるよ、と言う話ですが、上流でレビューを実施するまでに持っていくのがなかなか大変だったりしますよね。インクリメンタルなレビューであれば、比較的導入がしやすく、効果も出るよ、と言った内容ですので、興味のある方は是非こちらのブログもご覧ください。

【後半】
本ブログはこの後半をターゲットに書いています。
後半では、社外から2名の講師をお呼びしてパネルディスカッションを開催しました。

■テーマ
QAの過去から現在・現在から未来

■パネラー(社外講師)
奈良 隆正 氏
 NARAコンサルティング代表
 『ソフトウェア品質保証入門―高品質を実現する考え方とマネジメントの要点』著者

西 康晴 氏
 電気通信大学
 ソフトウェアテスト技術振興協会 理事長
 JSTQB 運営委員長

また、モデレーターとしてDeNA品質管理部QC2Gの河野哲也が登壇しました。

■パネルディスカッションの流れ
・イントロダクションで本日のテーマについて会場と認識を合わせる(5min)
・オープニングスピーチでまずは西氏のご意見について伺う(20min)
・会場を交えてパネルディスカッション(50min)

イントロダクション

イントロダクションではモデレーターの河野より、本日のテーマ、パネル企画の意図を会場と共有しました。ここではその概要について簡単に触れておきます。

開発手法の変化やビジネスモデルの変化、そして品質保証に求められることの変化にともない、かつて有効とされてきた仕組みや仕掛けが通用しなくなってきているのではないか。しかし、その全てが現在でも通用しないわけではなく、現在でも引き続き有効なものとそうでないものがありそう。

そこで、
・基礎知識として覚えておく必要があるもの
・今でも使い物になるもの
・忘れても良さそうなもの
と言う観点から過去の技術、仕掛け、仕組みについてパネルディスカッション形式で意見を交換したい。さらにそこから、未来の技術的展望を交えながら考え方・技術・プラクティスを整理していきたい。

過去と現在のコンテキストの違いを表にまとめるとこんな感じ。(イントロダクション資料から抜粋)
qa_night_2_pic01new.png

イントロダクション資料全編はこちら

Qa night#2 intro from Tetsuya Kouno

イントロダクションではこのような感じの大枠を会場と共有しました。
いよいよオープニングスピーチに入っていきます。

オープニングスピーチ

オープニングスピーチでは、パネルディスカッションに先立ち西さんご自身のお考えについてお話しいただきました。

洞窟の奥には隆盛を誇った古代都市の遺跡がある...と言うなんとも聴衆の興味をそそりそうな一言からスピーチが始まりました。さすが喋り慣れてる人は違いますね。と言う個人的な感想を述べてみたところでオープニングスピーチの概要はこちらです。

まずは時代を次の3つに分け、それぞれの時代の特徴と、どんな開発・QAだったかを紹介。

【かなり昔('70年代〜'80年代)】
 ■特徴
  内製や関係の強い企業に発注していた(汎用機)
  あまり複雑でなく、規模はそこそこだった
 ■どんな開発・QAか
  中身をちゃんと理解して納得して作っていた
  全体としてどんな品質で何が問題なのかが分かっていた

【ちょっと昔('90年代〜'00年代)】
 ■特徴
  多重下請構造に基づいたプロジェクト制だった(エンプラ・組込み)
  かなり複雑でかなり大規模だった
 ■どんな開発・QAか
  よく分からないけど指示に従って業務をこなす意識で作っていた
  全体としてどんな品質で何が問題なのかが分かっていなかった

【現在から未来('10年代以降)】
 ■特徴
  内製化が進んできている(クラウド)
  かなり複雑で徐々に大規模になっていく(が経験はない)
 ■どんな開発・QAか
  中身をちゃんと理解して納得して作れている?
  全体としてどんな品質で何が問題なのかが分かっている?

このように、時代とともに特徴や開発・QAの内容も変化している。コンテキストが変化しているので、かつて成功していたQAのやり方をそのまま現代でも適用すると概ね失敗する。リソースにかかる値段も昔と現代とではまるで違うし、オープンソースやクラウドが当たり前になり、全て自社開発で中身を把握できていた時代は過ぎ去った。

これからのQAは、昔からの良い考え方をさらに変化させながら現代に合わせて進化させることが必要。
例えば
・優れた組織イニシアティブの創出や醸成
・品質保証戦略のデザインと着実な積み重ね
・みんなが嬉しくなる品質マネジメントシステムの構築
などが進化のカギである。

逆に、よく陥りがちなワナとしては、
・おかしな組織イニシアティブの創出や醸成
・役に立たない品質保証戦略のコピペとやりっぱなし
・誰も嬉しくならない品質マネジメントシステムの構築
などが挙げられる。

詳細は西さんの資料に書いてあるので、興味がある方はぜひご参照ください!

DeNA QA night #2 presentation from Yasuharu Nishi

さて、オープニングスピーチでの西さんのお話を踏まえ、いよいよ奈良さんにご登場いただき、会場全体を巻き込んでディスカッションしていきます。

パネルディスカッション

パネルディスカッションでは今でも使い物になりそうなもの、基礎知識として必要なもの、忘れても良さそうなもの、の3種類に事前に分類していただきました。 qa_night_2_pic02new.png

この表をもとに、奈良さん、西さん、河野がそれぞれどのような意図で分類したのかを議論していきました。議論のエッセンスをテーマごとに紹介していきますね。なお、時間の関係で全てのテーマについてディスカッションできなかったため、議論できたテーマのみ紹介します。

【品質管理手法】
・考え方は知っておいた方が良いが、実際に使用する機会は少ない
・コンサルがよく品質管理手法を提案するが、騙されないためにも知っておくべき

【品質管理図】
・テストがどこまで進んでいるかを答えられるようにするためのツール
・テスト期間が3日間など短い場合はあまり有効ではなさそう
・スプリントの性質によるが、ある程度のテスト期間がある場合はリリースごとでの利用価値はありそう
・テストがいつ終わりそうか、を答えられる状況にあるのならどんなツールを使ったって構わない

【V&V(Verification:検証とValidation:妥当性確認)】
・検証と妥当性確認はどちらか一方ではダメ。全体を考えることがとても大切
・レビューを実施する上でもV&Vの考え方を理解していないとうまくレビューできない
・自動化すべきところと人間が考えるべきところをきちんと整理するためにも有効

【探針・信頼度成長モデル】
・テストがいつ終わるのか予想するための手法として活用していた
・組織やプロダクトなど各種特性によって曲線は使い分ける必要がある
・テスト期間が3ヶ月とか長期間にわたる場合は有効
・現在では全く使い物にならないと言う意見もあり
・ただしコンサルに騙されないためには知っておくべき

【規模(LOC・FP)ベースの品質マネジメント】
・オープンソースを活用する現在の開発において、自分が書いたソースの行数だけを見て何が測定できるのか疑問
・しかし、ソフトウェアの目方を測るためにはなんらかの指針が必要
・LOCよりも現在の開発手法にあった測定指標があるのではないか、と言う意見もある
・ソフトウェアの目方に関係なく、「自分たちはきちんとテストできてるよね」とみんなで納得できる方法を模索する方が大切では?

【メトリクス(GQM)、品質特性】
・何も考えずに、上司が取れと言ったからメトリクスを取っているような場合は意味がない
・なんでもかんでもむやみにメトリクスを取れば良いと言うものではない
・根拠を示すためにデータを取ることは大切であり、データをもとに議論するべき
・メトリクスを検討するにあたってGQMは役に立つが、やってみると結構難しい

【ソフトウェア工学】
・上手にソフトウェアを開発するための知見を集めたのがソフトウェア工学
・ソフトウェアに関わって飯を食っている人は知っておくべき
・例えばソフトウェアを開発して飯を食っている人はコードだけ書ければお金がもらえるか?否、見積もりしたり管理したり様々なことをやっている
・自動車工学を知らない人が作った自動車に乗りたいか?航空工学を知らない人が作った飛行機に乗りたいか?ソフトウェア工学も一緒

【会場からの質問1】
■Question
「基準に従え!人力でなんとかしろ!誰の責任だ!マニュアル化しろ!文書!文書!文書!ハンコー!」と言った類の管理が横行しモチベーションの低下や仕事の矮小化、視野狭窄が起こっている現場で働いているのですが、どうすればこの現状を打破できますか?
■Answer
・スキルを身につけて会社を辞めれば良いと思う
・会社に残ったまま状況を変えるのは相当な難問。もしその道を選ぶとしたら、小さなプロジェクトでこっそり結果を出して、少しずつ隣のプロジェクトにも波及させていくようなやり方が良い
・今日のような勉強会に仲間数人で参加するのも手。むしろ一人で参加してもあまり意味がない。複数人で参加して課題を共有すれば、会社に持ち帰りやすい。一人で持ち帰ろうとしても、勉強会で感じた課題感を仲間と共有するのは難しい。

【会場からの質問2】
■Question
次の時代のQAが身につけるべきスキルとはなんですか?
■Answer
・テスト技術の話に閉じず、サービスの品質とは?を考える必要がある
・自分が携わっているサービスは社会の課題を本当に解決できているか?ユーザーに価値を提供できているか?まで考える範囲を広げる必要がある
・身につけるべきものの範囲が広がって来ている
・自分の組織でだけ通用する技術を磨いてもダメ
・積極的に社外の勉強会に参加したり、自らが発表して周囲からフィードバックをもらう事も有効

以上、ここまでがパネルディスカッションのエッセンス紹介です。

まとめ

さて、いかがでしたでしょうか。冒頭でお伝えしたテーマについて振り返りましょう。テーマは、
・基礎知識として覚えておく必要があるもの
・今でも使い物になるもの
・忘れても良さそうなもの
と言う観点から過去の技術、仕掛け、仕組みについてパネルディスカッション形式で意見を交換したい。さらにそこから、未来の技術的展望を交えながら考え方・技術・プラクティスを整理していきたい。と言うものでした。

ディスカッションから見えてきた答えとしては、完全に忘れても良いと言えるものは無く、どれも知識として有しておく必要がありそう、と言う事ですね。また、V&Vやソフトウェア工学と言った分野はこれからも間違いなく必要なものと言えそうです。それから、未来において必要なスキルとしては、テスト技術に閉じずに自らが携わるサービスが世の中の課題を解決しているか、また、ユーザーに価値を提供できているか、と言ったところまで視野を広げて仕事ができるかがポイントになりそうですね。

ここまでレポートを書いてきましたが、本記事をお読みいただいた読者の皆様に少しでも刺激を与えることが出来たなら幸いです。そして、この記事を読んで「次回DeNA QA Nightに行ってみたい!」と思っていただけたらなお幸甚です。

最後に

DeNA QA Nightは半年に1回のペースで継続開催を予定しています。次回は8月末くらいを予定しています。案内はconnpassから発信しますので、ぜひグループ登録をお願いします。
connpassグループの登録はこちらから

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA QA Night #2 開催レポート(第一部)

はじめに

こんにちは、品質管理部の山本です。 ゲーム関連のQAを担当しております。

先日(2019/3/6)、DeNAが主催しております ソフトウェアテスト、品質関連のイベント「DeNA QA Night#2」にて、 DeNAのゲームQAで行った取り組みに関しての発表を行いましたので その内容についてご紹介できればと思います。

発表の背景

幅広いプレイヤー層にゲームを楽しんでもらうため、多い時で月に7~8本のイベント施策をリリースしている運用タイトルがありました。

1か月内に多くのイベント施策がリリースされるため、 開発の一人一人がリリースサイクルの短いイベント施策を並行で開発する事となり、 深刻なリソース不足に陥っていました。

開発側とゲームQA側双方がこの現状に問題意識を持ってはいたのですが リソース不足解消の目途はたたず、 またリソース不足の影響で開発成果物(仕様書やデータ)に対してセルフレビューを実施できず、検証時に検出される不具合が増加してしまう不幸な状況が続いていました。

そこで、不具合が増加している状況を解決するために、開発側で実施できなかったレビューをゲームQA側が開発に入り込んで実施しようと考えました。

開発成果物の欠陥を上流工程である開発期間にレビューし検出する事で、 下流工程である検証時の不具合数を減らしていけると考えたのですが 一つ一つのイベント施策のリリースサイクルが短く開発期間も短いため、 レビュー実施方法について工夫する必要があるだろうと考えました。

このような背景をもった運用タイトルに対して行った取り組みが、 今回発表させて頂いた内容となります。

今回の発表内容

DeNA QA Night#2 Game QA part from Yukihiro Yamamoto

上記が発表当日のスライドとなりますが、 インクリメンタルなレビューといたしまして、開発メンバーのすぐ近くに移動して、 直接開発成果物の作成状況を随時確認し、レビューが行えそうな物があれば、 どんどんレビューを実施していくという形を取りました。 (ご協力頂いている開発メンバーには本当に感謝です...!)

リリースサイクルが短く複数のイベント施策を並行で開発している為、 開発成果物が完成してからレビューを実施していると、レビューする期間が足りず、開発側もレビューに対する修正を実施する期間が十分に取れない状態となってしまいます。

また、影響範囲の大きい箇所から随時レビューを実施し問題点を早期指摘する事で、影響範囲内の別箇所に同様の問題が混入しないように対応を促すことが出来、少ない指摘で開発側、ゲームQA側双方が効率よく作業を進められると判断しました。

下流工程になればなるほど仕様変更が発生した際のリスクは大きくなると思いますが、 こちらもインクリメンタルレビューを実施して早期指摘する事により、仕様変更が入ってしまった場合の、開発側、ゲームQA側の負担も軽減出来ると考えました。

そしてインクリメンタルレビューを実施した結果、 検証時の不具合数削減やそれに伴うQAコストの削減について、一定の効果も確認できましたので、詳細が気になった方に関しては上記スライドをご覧頂けますと嬉しいです!

発表のポイント

この発表のポイントとしては下記となります。

・インクリメンタルレビューであれば、完成してからまとめてレビューを行うより、開発側QA側共に心理的ハードルが低く実施しやすい

・開発側のリソースが不足している状況でレビュー工程を追加する事は、一見酷に見えるのですが、インクリメンタルレビューであれば負荷が少なく導入が可能

・最終的に検証時に検出される不具合数が減少したので、下流工程に入ってからの満足度が、開発側もQA側も高い

これからについて

まだまだ発展途上で改善点もある状況ではありますが、 なるべく開発側とゲームQA側がwin-winの関係になれるように、 レビュー対応で不具合数を減らしてQAコストを削減するだけでなく、 開発メンバーへのレビュー対応満足度アンケートを実施したりしながら、 周りの意見を吸い上げて改善しながら進めています。

現在は運用タイトルの1タイトルのみの対応となっておりますが、 インクリメンタルレビューを、他タイトルや新規リリースタイトルにも実施できるように 更に改善していければと思っています。

おわりに

DeNA QA Night#2も前回に引き続き、皆様のお陰で大盛況だったかと思います! 私個人としましても、この発表に至るまでに周りの皆様に支えて頂き助けて頂き、 どうにか本番を迎えられたという状況だったので、 この場を借りて改めて感謝をお伝えしたいです。 本当に皆様ありがとうございました!

引き続きゲームの検証を行う上で有効だと判断出来るものには 積極的に取り組んで行きたいと考えておりますので、 また皆様と意見交流を行えると幸いです!

ありがとうございました!

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2019 ベストトークセッションをご紹介します

2019.02.06_133.jpg

こんにちは!技術広報の玉田です。2019年2月6日に開催し、社内外から約1500名の方にご参加いただいた DeNA TechCon 2019 について、社内社外で実施したアンケートの満足度が高かったセッション Top5 をご紹介します。

社外アンケート 満足度 Top5 セッション

約400名の社外の皆様にアンケートにご回答いただき、参加したセッションの満足度を「満足、やや満足、どちらでもない、やや不満、満足」の5段階で評価いただきました。ご協力いただいた皆様どうもありがとうございました!! 評価いただいた中から満足度Top2(満足、やや満足)の割合が高かったセッション Top5 をご紹介します。

1位. AI によるアニメ生成の挑戦

  • 満足度Top2:98%
  • 登壇者:濱田 晃一、李 天琦
AIによるアニメ生成の挑戦 from Koichi Hamada

2位. 『モビリティ・インテリジェンス』の社会実装

  • 満足度Top2:94.3%
  • 登壇者:織田 拓磨、益子 遼介
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019] from DeNA

3位. 10年目の『エブリスタ』を支える技術

  • 満足度Top2:91.7%
  • 登壇者:松尾 卓朗、井田 祐太
10年目の『エブリスタ』を支える技術 from DeNA

4位. 「マンガボックス」の価値を革新するエンジニアのチャレンジ

  • 満足度Top2:89.4%
  • 登壇者:神武 里奈

5位. スマホゲームのチート手法とその対策

  • 満足度Top2:88.6%
  • 登壇者:舟久保 貴彦
スマホゲームのチート手法とその対策 [DeNA TechCon 2019] from DeNA

DeNA社内アンケート ベストトークセッション5つ

実はDeNA社内メンバーにもアンケートに協力してもらい、「あなたが思うベストトークはどのセッションでしたか?」と聞き、回答してもらいました。その結果ベストトークとして推薦された推薦率が高かったセッション5つをご紹介します。

1位. AI によるアニメ生成の挑戦

スライドは上記となりますが、こちらでは「AI によるアニメ中割生成結果」についてもご紹介します。

 

2位. ゲーム開発者からMaaS開発者へ

  • 登壇者:惠良 和隆


3位. 「マンガボックス」の価値を革新するエンジニアのチャレンジ

  • 登壇者:神武 里奈

3位. スマホゲームのチート手法とその対策

  • 登壇者:舟久保 貴彦


5位. 車載カメラの画像を使用した3次元点群復元と物体認識技術における深層学習の活用

  • 登壇者:葛岡 宏祐


5位. DeNAのインフラ戦略 〜クラウドジャーニーの舞台裏〜

  • 登壇者:金子 俊一

おわりに

いかがでしたでしょうか。DeNA TechCon 2019 ではこの他にも様々なセッションを実施し、それらのセッションについても皆様に評価いただきました。ご来場の皆様、アンケートにご回答いただいた皆様、ご協力どうもありがとうございました。

その他のスライドや動画についても今後ご紹介していきますので、以下公式 Twitter アカウントをぜひフォローいただければと思います。それでは引き続きどうぞよろしくお願いします!

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DroidKaigi 2019 に参加しました!!

DroidKaigi 2019 お疲れ様でした!技術広報の玉田です。DroidKaigi 2019 では DeNA から7名のエンジニアの発表が採択され、それぞれ登壇を行いましたのでご報告します。

採択された7名6セッション

DroidKaigi2019.png

マルチモジュールなプロジェクトでテストはどう変わる?

初日の2/7の10:20から、Hall A にて DeNA SWET チームの田熊が登壇しました。詳しくはこちらのブログ記事でもコメントしていますのでぜひご覧ください。

Espresso のテストを Android の最新トレンドに対応させよう

2/7 の 12:50 から Room2 にて DeNA SWET チームの外山が登壇しました。詳しくはこちらのブログ記事でもコメントしていますのでぜひご覧ください。

外部デバイスと密に連携する Android アプリに最適なアーキテクチャとは?

2/8 の 10:30 から Room6 にて 次世代タクシー配車サービス「MOV」のエンジニアである三輪と本戸が登壇しました。

Wi-Fi RTT による屋内測位アプリを作ろう

2/8 の 11:20 から Room6 にて 次世代タクシー配車サービス「MOV」のエンジニアである @napplecomputerが登壇しました。

WiFi Direct + VpnService で SIM 無し Android を Web 世界に社会復帰させる話

次世代タクシー配車サービス「MOV」のエンジニアである空中が登壇予定でしたが、インフルエンザで当日は登壇できなかったため、 Android Reject Conference 2019/2 で登壇しました。

WiFi Direct + VpnServiceでsim無しAndroidをweb世界に社会復帰させる話 from Kiyotaka Soranaka

UI テスト (Espresso) の高速化をさらにすすめる

2/8 の 16:50 から Room3 にて DeNA SWET チームの平田が登壇しました。詳しくはこちらのブログ記事でもコメントしていますのでぜひご覧ください。

UIテスト(Espresso)の高速化をさらにすすめる from Toshiyuki Hirata

ブース展示も行いました

DroidKaigi 2019 のブース展示にて、 次世代タクシーアプリ「MOV」の車載機器、クラウドアーキテクチャ図の展示などを行いました。

その他、WebCamカバーのプレゼント企画、ライブ配信アプリ「Pococha」のチョコやステッカーなども展示しました。

おわりに

登壇いただいたみなさま、当日含め準備いただいた運営のみなさま、参加者のみなさまのお陰でとても濃い2日間を過ごすことができました!どうもありがとうございました!!

DeNA では引き続き CI/CD Test NightAndroid Test Night など Android アプリ開発者のコミュニティ活動をサポートさせていただきますので、今後共どうぞよろしくお願いいたします。 ベイスターズのビール2.jpg

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechCon 2019を開催いたしました

こんにちは。システム本部品質管理部SWETグループの加瀬です。

techcon_2019_1.jpg

2019年2月6日にDeNA TechCon 2019を開催いたしました。今年で早くも4回目の開催となりますが、今年もたくさんの方にお越しいただき、大盛況のうちに幕を閉じることができました。 ご来場の皆様、登壇された皆様、運営の携わったスタッフの皆様、ありがとうございました!

早速ですが、今年のTechConの様子を紹介したいと思います。

オープニング

オープニングはDeNAのエンジニアリングの統括を務める小林より、今回のテーマである「SHIFT UP」についてや、後の発表で詳しく語られるオートモーティブやクラウド移行の話の紹介がありました。 最後に時間の都合上紹介しきれない技術はたくさんあるものの、吟味したAI・ゲーム開発・エンタメ・ヘルスケア・オートモーティブ・開発基盤、この6つを主とした発表があることを紹介して今年のTechConが開幕となりました。

techcon_2019_2.jpg

会場

今年もステージを4つに分け、それぞれのステージでDeNAの様々な事業における技術的なチャレンジについての発表が行われました。 発表後には登壇者に質問できる場が設けられ、参加者とディスカッションしている様子が見られました。

techcon_2019_3_2.jpg techcon_2019_4.jpg techcon_2019_5_2.jpg techcon_2019_6.jpg

今年は開催前にgihyo.jp様よりTechConの見どころを紹介(前篇 後編)して頂いたり、Twitterにてそれぞれの発表の紹介をしてきました。
登壇で使用した資料や動画も、準備ができ次第公開する予定です。興味があったものの当日聞くことができなかった発表については、公開をお待ち頂ければと思います。

それでは、来年もまたDeNA TechConでお会いしましょう!

techcon_2019_7.jpg

当日のツイートの様子

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

DeNA TechFes 2019を開催します

denatechfes_cover.gif 明日2019年2月6日(水)は、DeNAの技術を活用した取り組みや新たなチャレンジについて紹介する技術カンファレンス「DeNA TechCon(テックコン) 2019」開催日です。

今年度は、「参加したかったけど参加できなかった方」や「参加したけど、詳細をもっと聞きたい方」などの方向けに、DeNA TechCon 2019 の After Party として DeNA TechFes 2019 を開催します!

DeNAの事業やサービスにフォーカスしたTechイベントやエンジニアのキャリアにフォーカスした採用イベントを小規模で週代わりに開催予定です。

皆さんと近い距離でお話しできることを楽しみにしております。

イベント詳細

※アップデートがあり次第更新いたします!
※各イベントで参加登録が必須となりますので、イベントページをご確認の上ご登録ください。

2/13(水)マンガボックスTech Night

DeNAが提供する週刊マンガ雑誌アプリ「マンガボックス」を対象とした、サーバーサイドエンジニア向けのキャリア採用イベントを少人数制で開催いたします。 2018年12月で5周年を迎えた、マンガボックス。さらなる進化を目指し言語の移行など大規模なリニューアルを予定しており、即戦力となるサーバーサイドエンジニアの募集を始めました。 本イベントではこれまでお話ししてこなかった、開発現場のリアルや今後サービス拡充に向けてテクノロジー観点で考えていることなど、プロダクトオーナーと担当エンジニアがお話しさせていただきます!

2/20(水)Meet the DeNA #Engineer career night

DeNAのエンジニアが経験してきたキャリアパスをエンジニアの方向けに赤裸々にお伝えするためのMeetupです。実際の働き方やキャリアの広がりの可能性を知りたい方は是非ともご参加ください。当日はDeNAでのキャリア形成、エンジニアカルチャーや制度、ものづくり組織の取り組みをメインにお話させていただきます。システム本部本部長の小林(nekokak)や、DeNA内外でキャリアチェンジを行なってきた多様なキャリア経験のあるエンジニアの登壇を予定しております。

3/6(水)オートモーティブ×ヘルスケア TechNight 〜テクノロジーのちからで社会課題を解決する〜

オートモーティブ・ヘルスケア事業に関わるエンジニアがTechConで伝えきれなかった開発の裏側に加え、働き方やキャリアについてパネルディスカッションを交えながら赤裸々にお話します。 新しい技術領域やキャリア形成にチャレンジしている部署なので、既存のDeNAのイメージにはない新しい気づきを感じてもらえればと思います! ※DeNA Engineers' Blogにて詳細発表予定。

3/15(金)DeNA GAME tech talk 〜モバイルゲームを支える基盤の技術チャレンジ〜

ソーシャルゲームにおいてネイティブゲームが主流になっている昨今、それを支えるバックエンドシステムに求められる要件の高さや技術的難易度は高くなっています。DeNAのゲームを支えるバックエンドシステムにフォーカスしたセッションを行います。mobage時代からネイティブシフトを経験したDeNAだからこそ語れるこれまでのゲーム開発と現在のネイティブゲーム開発の違いや、今後のバックエンドシステムに求められる要件を元に現在DeNAがチャレンジしている内容についてお伝えさせていただきます。

日程調整中:PocoDevMeetup

ライブ配信アプリ「Pococha」のエンジニアが開発にまつわる勉強会を開催します。ライブ配信サービスの領域は、今が旬で、皆で寄ってたかって領域を盛り上げていくタイミングだと思っています。ライブ配信アプリ・機能を作りたい方、エンタメサービス開発に携わっている方、Pocochaのことを知りたい方、サービスの新規立ち上げからグロースの苦労やノウハウ、開発の裏側を大公開しますので、是非、ご参加ください!

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

MOV タクシー配車アプリ RubyからGolangへ刷新 マイクロサービス化

RubyからGolangへの移行を進める過程で、システムアーキテクチャがマイクロサービス化していくという稀有な体験をしたので記事を書きました。

次世代タクシー配車アプリMOV(モブ)及び、タクシー車両内の乗務員向けアプリに係る WebAPI 50前後をRailsからGolang net/http に刷新しました。その過程でマイクロサービス化が進んだ事例を紹介します。MOV サーバエンジニア池田 周平です。サービスを継続しつつシステム刷新するために、なぜその判断を行ったかについてお伝えできれば幸いです。

MOV(旧タクベル)ご存知でしょうか?神奈川、東京でサービス提供中のタップ操作でタクシー配車ができる配車アプリです。 スクリーンショット 2018-12-28 11.03.58.png

実証実験を繰り返しサービスリリースしました。 立ち上げ初期段階から居たメンバーに話を聞くとRailsで高速にプロトタイピングを繰り返していたそうです。 リリース直前にGAE FEサーバのスケールとスピンアップ速度の観点でGAE SE Golangへ刷新を決め、新設WebAPIはGolangで実装しましたが大部分はRailsのままリリース当日を迎えました。

スクリーンショット 2019-01-08 19.19.41.png

APIバージョンをv1, v2, v3と上げ、アプリの強制バージョンアップでRubyからGolangに切り替える作戦を立てるも、後方互換性を維持し古いアプリでも配車可能であり続けるという運用方針があり、コード2重メンテ問題を回避するため断念しました。開発チームではGolang刷新を完遂したいとたまに話題にしつつも、日々の機能追加や運用に工数を割いていました。

GAE 1%カナリアリリース

リリース直後特有の繁忙期が過ぎたある日、マネージャからGolang移行チーム設立と担当を任されました。移行チームが出来て任されると自分ごとになりムクムクとやる気が出てくる点ワタシ自身が驚きました。

まず最初に考えたことは安全に移行するための仕組みです。

車両軌跡データやユーザアプリと乗務員アプリ間で配車ステート更新を行うため一部のデータ構造や通信シーケンスが複雑です。開発環境でバグ取りきれず本番環境で不具合に繋がる可能性がどうしてもありました。電車やタクシー内で考えた結論はカナリアリリースの仕組みを作り WebAPIごとに最初の24時間はRuby99%, Golang1%でトラフィックを分割して監視、その後割合を増やしていくという作戦でした。

GAEはservice versionごとの段階的なトラフィック切り替えをサポートしていますが、ルーティングを制御するdispatch.yamlの更新はゼロイチ切り替えのためproxyサーバを用意して切り替えることにしました。

GAE標準のトラフィック切り替え機能

スクリーンショット 2018-12-28 13.20.36.png

Golang移行対象WebAPIの1%カナリアリリース

Proxyのversion1と2の差は、刷新対象のWebAPIについてトラフィック流し先がRuby版かGolang版であるかの違いです。 スクリーンショット 2018-12-28 13.47.20.png

このようなアーキテクチャ設計にした狙いは、ゼロイチでルーティングを切り替えるGAE disptach.yamlの仕組みから最小工数でカナリアリリースできるように変更できる点、RubyとGolangサービスで共通formatのログを出力できる点です。1手で2つのメリットあるため採用しました。Cloud Functionsを利用するといった他の選択肢もありました。複数ある選択肢から早期に絞りこめたのはGoogleテックコンサルの皆様に定期的に相談できる恵まれた環境にあった点が大きかったです。サポートとても感謝しています。

Proxyサーバを実装する

GAE dispatch.yamlを代替するサービスを便宜上proxyサーバと呼んでいます。実態はHTTPサーバでHTTP CONNECT methodはログ出力するため利用していません。次のようなざっくり目標と設計で開発しました。

  • Proxyは通信の土管に徹するサービス
  • 処理のオーバーヘッドは50ms以下が目標
  • APIサービスへのHTTP通信はNon-blocking I/Oで必ず行う
  • JSONパースは処理時間が掛かるため行わない
  • BigQueryへログ出力を行う

Golangで素直に書いていけば実現する仕様です。本体は200行くらいでどのサービスに通信を振り分けるかはrouterをそのまま利用して実装します。仮想コードの方が伝わるので載せておきます。


func init() {
    router := router.New()
    setAction(router, "/", iamproxy)
    setAction(router, "/v1/drivers/*path", rubyService)
    setAction(router, "/v1/users/*path", golangService)
    http.Handle("/", router)
}

func main() {}

先ほど本番サーバをStackdriver traceで計測したらproxyの処理時間は15msでした。サービス間の通信はurlfetchを利用していて、GAEだとGCPの同一データセンター内にdeployされる特性があるためレイテンシは低めです。詳細は公式の Google App Engine 上でのマイクロサービス アーキテクチャ に記載があります。

routerはwild card routingといった標準的な機能が利用できるものを採用しました。特に高速化のために内部で Radix tree を生成し、サーバ起動時にURL routingの名前空間が重複しているとエラー吐いてどこが重複したか教えてくれるようならライブラリを利用するとよいです。複数のAPIを段階的に移行する際の助けになりました。

Proxy導入でログ出力を強化する

複雑な構造を持つJSONをRubyからGolangに移行したとき、RubyとGolangの細かな仕様差、たとえばゼロ値で苦しめられます。 元の構造では気軽nullを扱っておりJSON objectの各プロパティの型がnullableになっていました。ArrayやStringが空のとき [] or "" or null がAPIごとにバラバラだったため、正しく移植しきれず何箇所かで失敗することが予想できました。

現行WebAPIがどういった構造のJSONを送受信しているか蓄積し知るためProxyサーバで HTTP Request/Response/Headerを全てStackdriverにログ出力して、Stackdriver exportでBigQueryにsyncしました。この設定はボタンポチポチで設定できる割に効果が大きく移行をサポートする強力なツールになりました。(開発者用のログはオートモーティブ事業部内での厳しい個人情報取扱規程・個人情報保護指針があり、位置情報や選択内容及びアカウント情報は全てサーバ内部のメモリ上で削除し個人を特定出来ない形でログ送信しています)

億単位の通信ログからBigQueryで目当てのログを検索できたときは、1歩時代が進んだ感あって気に入っています。またStackdriverはStackdriverMonitoringで簡単に監視設定を作り込みSlackやPagerDutyと連携できるため頻度高く利用しています。

機能追加とGolang移行のバランス

サービスへの機能追加とシステム刷新のバランスは難しい問題です。開発の手を止めることが出来ればよいのですが、システム刷新を理由にリリース直後のアプリで機能追加速度を落としたくはありませんでした。50前後あったWebAPI次の5つに分類し段階ごとにリリースしました。特にHTTP GETなWebAPIはステートレスでテスト容易だったため早期に移行を行いました。5段に分けてリリースした理由は、1段目は単純なAPIを移行し実行可能性を調査するため、2段目移行は移行対象が大きすぎて全体把握と品質担保が難しいといった問題を回避するために、QAを行いやすい単位で分割していきました。

  • アカウントAPI
  • 配車API(method:GET)
  • 配車正常系API
  • 配車準正常系・異常系API
  • その他(お知らせ等)

移行中のGoとRubyどちらに実装すればいいといったコンフリクトが複数発生するなと予期していました。実際はごく少数しか発生せずスムースに移行完了でき、きっと私が気づかない所で開発チームメンバーが配慮・調整してくださっていたんだと思います。

振り返るとシステム刷新する上で開発チーム全体への影響を最小にするポイントはいかに早く刷新コードをmasterブランチへマージするかという点です。Proxyサーバでトラフィックを切り替えない限り蓋ができる構造だったため、完成次第masterブランチに投入して本番リリースを行いました。蓋を開けるタイミングはQA完了後です。早い段階で刷新したコードが他の開発者の目に触れる場所に設置できた点はとても良かったです。

マイクロサービス化と開発組織

現在アプリから見えるサーバは次のような構成になっていて9名の開発者で開発しています。(これ以外にもFleet Management System, タクシー事業者向け管理サービス, CS対応向け管理サービスとその開発チームありますが図からは省略しています)定めたというより自然とこのような形に落ち着きました。言語化すると次の基準です。現在のスナップショットでしかないため人員が増えるとルールは変化していきそうです。ポイントはサーバ間認証のサービスを増やしていっている点で部品としてふるまうためマイクロサービス化の副作用少なくメリットを享受できると考えています。

  • API Service本体は全員が開発
  • 各マイクロサービスは2名前後で開発
  • user/driverのaccess tokenを認証認可するサービスはAPIに集約する
  • MOV以外でも利用需要がありそうな機能はサーバ間認証でマイクロサービス化

スクリーンショット 2018-12-29 15.13.53.png

GEOはgeographyの略で一緒に開発していたエンジニアがすごい勢いで空間参照系について詳しくなり、いつの間にか作り終わっていた機能です。代表的な機能はユーザや車両がどの営業区域にいるか経度緯度情報からの地域判定です。PostGIS DBのCPUで判定計算している点が特徴です。

E2Eテストを書く

proxyを対象にE2Eテストを書きました。テストケースは本番の配車履歴から頻出パターンを抽出しました。検査項目はHTTP ResponseのJSON SchemaチェックとRDBのレコード状態の確認です。RSpecの生産性の高さと、使い捨て前提の割り切りでサクサク書け手動で再現するには2時間くらい掛かる分量になりました。捨てるにはもったいない出来だったのでbotに組み込みQA環境を自動試験しています。

スクリーンショット 2018-12-29 16.43.36.png

まとめ

振り返るとRubyからGolangへの移行を進める過程で、システムアーキテクチャがマイクロサービス化していくという稀有な体験ができしました。短期間で大きなトラブルなく安全に移行完了できたのはカナリアリリース、ログ基盤、E2Eテストと足回りを強化したあと移行を行った点にあると思います。

このアーキテクチャは現在のスナップショットであって、今後開発リストにあまたある新規開発を行っていく上で変化していくでしょう。チーム内では配車サービスを独立といった話をしています。

お話変わってDeNAでは年に1度TechConを開催しています。今回移行作業を強力にサポートしてくださった惠良 和隆さんの発表もあります。ぜひ。 https://techcon.dena.com/2019/

最後まで読んで頂きましてありがとうございます。

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る

QA Night #1 開催レポート(第二部)

はじめに

品質管理部の河野です。 開催レポートが遅くなってしまってしまったのですが、「おわりに」で遅くなった言い訳を書かせて頂きます。
すでに第一部の松尾谷さんの講演はこちらでレポートさせて頂きました。
こちらの第二部では、DeNAパートの中でも事例のところにフォーカスを当ててレポートいたします。 今回、DeNA QA の事例として、テストプロセス標準化の取り組みを発表させて頂きました。以降、発表の背景と概要をレポートいたします。

発表の背景

ちょうど1年前の12月くらいから部門横断の改善活動を開始したのですが、そのとき真っ先に着手したのがテストプロセスの標準化でした。各チームでバラバラだったテストの進め方をまずは全体的に共通化しようと言うのが本発表の取り組みです。
その後、標準テストプロセスが概ね出来上がった段階でその導入を進めつつ、TPI NEXTを使ったテストプロセスのアセスメントや標準テスト観点の整備などの取り組みを進めてきました。また、テストプロセスが標準化されたことで、今後はテスト活動のメトリクスの収集を行っていく予定です。
ということで、まずはテストプロセスを標準化していくことで、その後の活動がスムーズに進んだように思います。 それでは、当日の発表概要に移ります。その前に、当日のスライドはこちらになります。

DeNA QA Night #1 DeNA part from Tetsuya Kouno

発表の概要

当日の発表では、上記のような背景を初段に説明して、その後は、具体的にどのようにテストプロセスを標準化していったのかという事例を紹介しました。
テストプロセスの標準化というと難易度が高そうに見えますが、我々が取ったアプローチは以下になります。
1.各チームのテストプロセスの見える化する
2.上記テストプロセスの共通化する(積の共通とする)
3.成果物や処理の名称を決める
それで、当日は1.の見える化を「カレーライスを作る」演習を交えて、皆さんで少しワークをしてもらいました。思いの外、盛り上がってよかったです。
その後は、2.と3.を具体例を交えながら解説していき、最後の方で標準化のメリットなどを示しました。

後日談1:プロセスに関しての松尾谷さんの発表について

松尾谷さんの発表で、品質関連のアプローチとして「プロセスや技法」は負け犬の遠吠え、
のような解説がありました。 それに関して、後日というよりは発表後の話になるんですが、
松尾谷さんから以下のような意図のコメントを頂きました。

私が言ったのは河野さんの発表のようなプロセスではなくて
スタッフ部門や管理部門が押し付ける規範的なプロセスを指しているので
逆にこのようなプロセスを標準化するのは良いことだ

ということで、今回の取り組みはそれほどずれていなかったようで安心しました。
今回、気をつけたのは、ボトムアップのアプローチで進めたのでやはりそれが良かったと思いました。

後日談2:PFDってそんなに簡単なだっけ?

本イベントに参加した私の知り合いに、とあるイベントであったのですが、こんなことを言われました。

PFDでプロセスを書くのを簡単に発表してたけど、
そもそも目の前の業務をPFDに書くことは結構難易度高いんじゃない

はい、おっしゃる通りで、よく見かけるのはフローチャートになっていたり、
成果物と処理がごっちゃになったりして、PFDで表現するのは結構難しです。
それで、私は以下のような工夫をしております。

  • 最終成果物から戻るようにプロセスを書いていく
     最終成果物からその前の処理、その処理の入力成果物といった感じで考えるほうが
     経験的に知的ハードルが低くなるように感じます
  • 最初はメタに捉えて、作業の粒度を荒くする
     細かく考えるとキリがないです。まずはメタに捉えて、細かくしていきましょう。
     細かくしていくところは参考資料を見てみてください。
  • ホワイトボード / 紙と鉛筆で書く
     いきなりpptで清書すると挫折します。挫折というより、時間切れになると思います。
     なので、まずはラフにスケッチしましょう。
     スケッチできなければ、よくわかっていないことなので、次の工夫です。
  • 一人で考えすぎずに、他の人を巻き込む
     実態がわからなくて、PFDで表現できないところが出てきます。
     なので、そういうところは知っている人に聞くのが早いです。
  • 成果物と処理の名前付けに気をつける
     これは重要です。周りのメンバが共感できるような実態にあった名前をつけましょう。
     それと、成果物と処理にふさわしい名前、特に処理は動作を表す名前をつけましょう。

おわりに

今回の第一回、DeNA QA Night は参加者・講演者の皆さんのおかげで成功だったと思います。ただ、これは終わりではなくて始まりです。
次回もやります。日程は3月6日(水)で決まっております。次回も業界の一線級の識者にお声がけしてます。是非、期待して下さい。
ということで、次回日程が決まってから開催レポートを書きたいと思っておりましてこんな遅い開催レポートとなってしまいました。という、言い訳でした。
皆様、良いお年を!

ツイート
シェア
あとで読む
ブックマーク
送る
メールで送る