Submit Search
Upload
コーディング入門以前
•
19 likes
•
13,596 views
Yutaka Kinjyo
Follow
社内啓蒙用
Read less
Read more
Technology
Report
Share
Report
Share
1 of 88
Download now
Download to read offline
Recommended
DI(依存性注入)について
DI(依存性注入)について
Yui Ito
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
低レイヤー入門
低レイヤー入門
demuyan
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
Recommended
DI(依存性注入)について
DI(依存性注入)について
Yui Ito
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
低レイヤー入門
低レイヤー入門
demuyan
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
Masahiro Nishimi
DockerコンテナでGitを使う
DockerコンテナでGitを使う
Kazuhiro Suga
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
例外設計における大罪
例外設計における大罪
Takuto Wada
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
こわくない Git
こわくない Git
Kota Saito
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
DeNA
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
phpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
The evolution of c#
The evolution of c#
leverages_event
More Related Content
What's hot
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
Yoji Kanno
例外設計における大罪
例外設計における大罪
Takuto Wada
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Yuma Ohgami
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
こわくない Git
こわくない Git
Kota Saito
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
DeNA
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
What's hot
(20)
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
例外設計における大罪
例外設計における大罪
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
オブジェクト指向できていますか?
オブジェクト指向できていますか?
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
UEFIベアメタルプログラミング
UEFIベアメタルプログラミング
Glibc malloc internal
Glibc malloc internal
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
こわくない Git
こわくない Git
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Docker Tokyo
Docker Tokyo
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
世界へ向けたゲーム開発 〜ローカライズ支援ツール『LION』〜
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Similar to コーディング入門以前
phpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
The evolution of c#
The evolution of c#
leverages_event
Ldd13 present
Ldd13 present
Masashi Kayahara
OSSコンソーシアム 開発基盤部会 2021年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2021年度 活動方針・部会紹介
Daisuke Nishino
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク
Yuki Tanabe
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
Osamu Monoe
QA SUMMIT in GDC2013
QA SUMMIT in GDC2013
IGDA JAPAN
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
Tatsuya Ishikawa
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
光一 原田
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジ
Kouhei Sutou
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
Akira Inoue
Android studio で行ってみよう!!
Android studio で行ってみよう!!
Kazuaki Ueda
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
クラウドの破壊力
クラウドの破壊力
Osaka University
GKEに入門したい人生だった
GKEに入門したい人生だった
稔 川口
Similar to コーディング入門以前
(20)
phpspecで始めるBDD
phpspecで始めるBDD
The evolution of c#
The evolution of c#
Ldd13 present
Ldd13 present
OSSコンソーシアム 開発基盤部会 2021年度 活動方針・部会紹介
OSSコンソーシアム 開発基盤部会 2021年度 活動方針・部会紹介
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
Kiwi 入門 | iOS RDD テストフレームワーク
Kiwi 入門 | iOS RDD テストフレームワーク
Visual Studio 2015 を使用した Cordova アプリの開発
Visual Studio 2015 を使用した Cordova アプリの開発
QA SUMMIT in GDC2013
QA SUMMIT in GDC2013
Test automation strategy for .net core 3 transition
Test automation strategy for .net core 3 transition
Node.js で Web アプリ開発
Node.js で Web アプリ開発
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
SEゼミ2015 - コードチェンジ
SEゼミ2015 - コードチェンジ
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
Android studio で行ってみよう!!
Android studio で行ってみよう!!
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
クラウドの破壊力
クラウドの破壊力
GKEに入門したい人生だった
GKEに入門したい人生だった
More from Yutaka Kinjyo
Live
Live
Yutaka Kinjyo
一度死んだ話
一度死んだ話
Yutaka Kinjyo
Deepsmarts
Deepsmarts
Yutaka Kinjyo
会社に Github導入した話
会社に Github導入した話
Yutaka Kinjyo
The dankai
The dankai
Yutaka Kinjyo
IeLt2014
IeLt2014
Yutaka Kinjyo
Junit intro
Junit intro
Yutaka Kinjyo
ちょっと怖くなくったRails
ちょっと怖くなくったRails
Yutaka Kinjyo
怖いRails
怖いRails
Yutaka Kinjyo
Rest is 何
Rest is 何
Yutaka Kinjyo
コンテキストと文化
コンテキストと文化
Yutaka Kinjyo
開発チームのためのコミュニケーションとコンテキストの作り方
開発チームのためのコミュニケーションとコンテキストの作り方
Yutaka Kinjyo
Ie lt
Ie lt
Yutaka Kinjyo
More from Yutaka Kinjyo
(13)
Live
Live
一度死んだ話
一度死んだ話
Deepsmarts
Deepsmarts
会社に Github導入した話
会社に Github導入した話
The dankai
The dankai
IeLt2014
IeLt2014
Junit intro
Junit intro
ちょっと怖くなくったRails
ちょっと怖くなくったRails
怖いRails
怖いRails
Rest is 何
Rest is 何
コンテキストと文化
コンテキストと文化
開発チームのためのコミュニケーションとコンテキストの作り方
開発チームのためのコミュニケーションとコンテキストの作り方
Ie lt
Ie lt
Recently uploaded
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Recently uploaded
(9)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
コーディング入門以前
1.
Yutaka Kinjo コーディング 入門以前
2.
結論から言うと
3.
いい製品 を作るため できることが たーくさん
4.
でも僕一人が気をつけても いい製品 には近づけない ! (す、少しだけなら・・)
5.
結論 だから みんなでやりましょう
6.
そのための認識合わせの場 とさせて下さい
7.
さて
8.
いい製品 の作り方は 巷でいろいろ言われている
9.
\ぶわああ/ 継続的インテグレーション ソーシャルコーディング スクラム アジャイル開発 IRCbotJenkins git github mercurial バージョン管理 DB 自動テスト framework JWDS 分散管理 Hadoop HBase プログラミング言語 リーンスタートアップ KVS ruby Ruby on Rails JavaScript HTML5 selenium 関数型言語 Java8 ウォーターフォール ピープルウェア ビックデータ リーダブルコード 品質 リスク管理 pull
request branch commit ドキュメント管理テスト駆動開発 redmine チケット駆動開発 MySQL NoSQL Google Skype Android IOS sphinx php c 並列処理 デザインパターン Object指向
10.
でも難しいことは 語るまい!! 継続的インテグレーション ソーシャルコーディング スクラム アジャイル開発 IRCbotJenkins git github mercurial バージョン管理 DB 自動テスト framework JWDS 分散管理 Hadoop HBase プログラミング言語 リーンスタートアップ KVS ruby Ruby on Rails JavaScript HTML5 selenium 関数型言語 Java8 ウォーターフォール ピープルウェア ビックデータ リーダブルコード 品質 リスク管理 pull
request branch commit ドキュメント管理テスト駆動開発 redmine チケット駆動開発 MySQL NoSQL Google Skype Android IOS sphinx php c 並列処理 デザインパターン Object指向
11.
ようするに In short
12.
ぜーんぶこのため 早く 正確に
13.
そう たったのふたつ
14.
早く
15.
正確に
16.
作る
17.
= (イコール)
18.
いい製品
19.
簡単だね Simple is the
best
20.
さあ はじめよう! Let’s start !
21.
はじめの一歩はこれ
22.
Readable Code !
23.
読み:リーダブルコード 読み易いコード のこと Readable code
24.
読みやすいコード のいいところ 早く読める 早く変更できる 正確に読める 正確に変更できる
25.
読みやすいコード を書くことを 目指しましょう
26.
読みにくいと・・・
27.
もはやカオス 「こ、ここを変更 すればいいのか な?」 「えっーっと、 ここがあっちと 繋がってるか ら・・」 スパゲッティみたいなコード
28.
頭のなかでまさに紐解く とても 時間かかる 「う、うう やっとできた」 「ここを変更 するんだね!」 もはやカオス
29.
とても 時間がかかる! Point:
30.
しかも! More over !
31.
この時に コードを 直せないと
32.
「あ、あれ忘れちゃっ た ここだっけ?」 「えっーっと、 ここがあっちと つながってるか ら・・」 また同じことを繰り返す! もはやカオス
33.
「あー!前やっ たのに!」 何度でも繰り返す! もはやカオス 「えっーっと、 ここがあっちと つながってるか ら・・」
34.
ドンドンからま る!
35.
ドンドン 増えていく!
36.
ドンドン 時間がかかる!
37.
そうやってIT 屋さんは帰れ なくなる!
38.
帰れなくなる! Point:
39.
じゃあ!
40.
最初から 綺麗に 書こうよ!
41.
綺麗に 書き 続けようよ!
42.
そんな 綺麗なコードを
43.
リーダブル コード と呼ぶんだ!
44.
ふぅ・・・
45.
でもね
46.
残念ながら コーディングは シビアな作業
47.
油断すると すぐにコード は汚くなる
48.
リーダブルな コードを書き続 けるためには
49.
僕たちは 訓練しないとい けない
50.
僕「たち」は Point:
51.
だれかがコードを書く とても 時間かかる やりたい処理 きちんとした コード
52.
他の誰かがコードを変更 あっさり できる もはやカオス きちんとした コード
53.
もはやカオス あっさり できる
54.
そうやってIT 屋さんは帰れ なくなる!
55.
そして 全然楽しくな い!
56.
結論 だから みんなでやりましょう
57.
訓練といっても いったい何から 始めれば?
58.
いい参考書 があります
59.
その名も
60.
リーダブルコード
61.
この本の使い方
62.
これは コーディングのお供 にしてください
63.
夜寝る時は 枕に添えてください
64.
冗談です。 でもたまにやります
65.
コーディングと 本を読むことを サイクルにするとい い思います
66.
まずは買いましょう (会社で買ってくれないかな・・・)
67.
すごくわかりやすい 本ですが それでもわからない ところはあるはず
68.
! 今は耐えて下さい 少しずつしか できないんです
69.
今後 その部分を 少しずつ紐解いて 行きたい
70.
idea ルール: 参加型,飽きない,無理じゃない 重要
71.
Idea list 実務コードと本の照らし合わせ 実務コードのコードレビュー 輪講(びみょー)
72.
仲間大募集! 一人じゃむりだYO! 楽して効果あげたいYO!
73.
未来 Future
74.
Readable Code Social Coding Version
Control System future = good product = happiness❤ now Many many things Code Review
75.
願望 wish
76.
Readable = 当たり前
77.
/*end*/
78.
おまけ 裏に隠された思い
79.
実はこのモデルはすごい もはやカオス ! とても 時間かかる 「う、うう やっとできた」
80.
仕様策定 もはやカオス ! とても 時間かかる 「う、うう やっとできた」 なんかやりたいこと きちんとした仕様書
81.
設計書 もはやカオス ! とても 時間かかる 「う、うう やっとできた」 きちんとした設計書 仕様から形になる前
82.
コーディング もはやカオス ! とても 時間かかる 「う、うう やっとできた」 きちんとしたコード 設計書からコードになる前
83.
コーディング もはやカオス ! とても 時間かかる 「う、うう やっとできた」 きちんとしたコード 設計書からコードになる前 ここが 知的労働
84.
コーディング もはやカオス ! とても 時間かかる 「う、うう やっとできた」 きちんとしたコード 設計書からコードになる前 ここが 知的労働 ここが 価値あるもの
85.
コーディング もはやカオス ! とても 時間かかる 「う、うう やっとできた」 きちんとしたコード 設計書からコードになる前 ここを 早く正確に ここが 価値あるもの
86.
コーディングを通して、 「きちんとしたもの」を 作る知的労働 の熟練を目指す
87.
それが、全ての開発工程 の生産性向上にも通じる
88.
以上!
Download now