未踏 最終成果発表

6.8K Views

March 08, 21

スライド概要

未踏の最終成果発表会で使用したスライドです。
動画が結構あるので、興味のある方は

https://drive.google.com/file/d/1y_oNDpwOPDyJ4V3GYZHu8GJTGECfHHxs/view?usp=sharing

からご覧ください

profile-image

プログラム・デザインに関する事を呟きます。/未踏2020/アプリ甲子園優勝/U22プロコン経済産業省商務局長賞 /セキュキャンアワード /seccamp19/香港→開成白→mast19(B2)

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

" ! 筑波大学 2年 大渕 雄生

2.

開発したアプリ グループ グループ 1 ! 3メンバー なめたけ 3メンバー ! Title ! obuchi yuki らっぷびと ! 3メンバー ! Suzuki masaru グループ 1 ! 3メンバー ! Kakapo ! obuchi yuki ! ! ! ! マイクを押して投稿 • ボイスメッセージを交換できるSNS • 部屋を作ってボイスメッセージでチャット

3.

開発したアプリ !

4.

デザインからコードを自動生成するソフトウェア 大渕 雄生

5.

20分でアプリを開発 デザイン10分+ロジック10分 = 20分!

6.

アプリ開発の難しさ

7.

なぜAxStudioを作ったか 大量のアプリ開発の依頼

8.

なぜAxStudioを作ったか アプリ開発の流れ アイディア デザイン プロトタイプ コード

9.

なぜAxStudioを作ったか アプリ開発の流れ 重労働 + 単調作業 アイディア デザイン プロトタイプ コード

10.
[beta]
なぜAxStudioを作ったか テキストのリストを表示するだけでこれだけのコード + StoryBoardが必要 import UIKit class Cell: UITableViewCell { var title: String = "" { didSet { self.textLabel?.text = title } } } class ViewController: UIViewController { @IBOutlet let tableView = UITableView() let content = ["Hello", "World", "Swift"] override func viewDidLoad() { self.tableView.delegate = self self.tableView.dataSource = self } } extension ViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("indexPath", indexPath) } } extension ViewController: UITableViewDataSource { func numberOfSections(in tableView: UITableView) -> Int { 1 } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { content.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "__cell", for: indexPath) as! Cell let title = content[indexPath.row] cell.text
11.

なぜAxStudioを作ったか Storyboardやコードでレイアウト処理をやろうとすると 大量の制約と戦う必要がある

12.

なぜAxStudioを作ったか プロトタイプに変更があるたびにコードの書き換えが必要

13.

なぜAxStudioを作ったか デザインとコードは強く関連している

14.

AxStudioのアプローチ 全部自動化しよう! _人人人人人人_ > 自動化 🌟 <  ̄Y^Y^Y^Y^Y^ ̄ アイディア デザイン プロトタイプ コード

15.

AxStudioの目標 アイディアを思いついた時に 誰にでもそれを高速に形にできる

16.

最初の構想 デザインからデザインのコードを出力するだけ

17.

最初の構想 仕組みのあるアプリを作れない

18.

データベースとの同期という構想 テーブルとの紐付けでデータを作成

19.

データベースとの同期という構想 作れるアプリが限られすぎる

20.

スクリプト言語を用いる構想 専用の言語からトランスパイル

21.

スクリプト言語を用いる構想 誰でもアプリを作れるという目標を達成できない

22.

ノードによるロジック開発 ノードのグラフでロジックを作成

23.

ノードグラフの特徴 1. 一目でロジックがわかる 2. コードが理解できずとも作成可能 3. あらゆるロジックを作成可能

24.

ノードグラフの特徴 1. 一目でロジックがわかる 2. コードが理解できずとも作成可能 3. あらゆるロジックを作成可能 アイディアを思いついた時に 誰にでもそれを高速に形にできる

25.

TODOアプリを作ってみる

26.

タイトル

27.

書き出された大量のコード

28.

書き出された大量のコード

29.

Sketchからの取り込み

30.

もっといろんなアプリ

31.

カメラを撮影するアプリ

32.

カメラを撮影するアプリ

33.

天気アプリ

34.

複雑なアプリ 9:41 ホーム ! 何をお探しですか? ¥1,200 ¥990 ¥1998 ¥12,51 0 ¥998 ¥1,300 ¥998 ¥1,640 ¥1,640 ¥1,640 ¥1,640 ¥1,640 ¥1,640 ¥1,640 # ホーム " 出品 ¥1,640 ! マイページ

35.

サンプルアプリ サンプルアプリとして用意

36.

AxStudioの2つの強み

37.

AxStudioの強み 1 強いデザイン性能

39.

強いデザイン性能 このスライドもAxStudioでできている

40.

強いデザイン性能 Metal2を用いた独自のレンダリングエンジン 3次ベジェパスの論理演算

41.

AxStudioの強み 2 プログラマに読みやすいコード

42.

読みやすいコード 普通のノンコードツール func funcI2jHV2B8() { let v_23cV923 = AKHv1View() let v_2nb9csR = u_ashjkv12 asAJub1287GC() let v_127tmn9 = KJB83jView() } v_127tmn9.addSubview(v_23cV923) v_127tmn9.i8ymnas7 = v_2nb9csR v_127tmn9.v2bIgib1 = false 書き出されたコードは読むことを想定していない

43.
[beta]
読みやすいコード AxStudioによって書き出されたコード import UIKit // MARK: - TodoListViewController class TodoListViewController: UIViewController { // ================================================================== // // MARK: - IBOutlet @IBOutlet var todoTextField: UITextField! @IBOutlet var submitButton: UIButton! @IBOutlet var todoTableView: UITableView! // ================================================================== // // MARK: - Properties var state: [String] = [] { didSet { self.stateDidSet(self.state) } } var listElements = [String]() // ================================================================== // // MARK: - IBAction @IBAction func didTapSubmit() { if !(self.todoTextField.text ?? "").isEmpty { self.state.append(self.todoTextField.text ?? "") } } AxStudioのコードはプログラマのものと非常に近い
44.

コード生成の手法 IIR IIR 生の中間表現 正規中間表現 Nib Swift AST Swift

45.

コード生成の手法 IIR IIR 生の中間表現 正規中間表現 Nib 表現と構造の変換 デザインから構造の変換 グラフ構造からコード構造へ変換 リソースの書き出し Swift AST Swift

46.

コード生成の手法 IIR IIR 生の中間表現 正規中間表現 Nib プログラムとしての変換 識別子の唯一化 型のチェック 不必要な情報の削除 Swift AST Swift

47.

コード生成の手法 IIR IIR 生の中間表現 正規中間表現 Nib Swift AST 各フォーマットへの適応 Swift

48.

コード生成の手法 ASTから適切に フォマットされた コードの書き出し IIR IIR 生の中間表現 正規中間表現 Nib Swift AST Swift ASTからコードの生成

49.

ユーザーの反応と改良

50.

プレビュー版のリリース 700人ほどに使っていただき反応を計測

51.

体験者 AxStudioへの感想

52.

体験者 プレビュー版からのフィードバック 「Xcodeのインストールが必要なのが面倒くさい」 「チュートリアル的なものが欲しい」 「UIが日本語だと嬉しい」

53.

プレビュー版からのフィードバック 「Xcodeのインストールが必要なのが面倒くさい」 シミュレーターを実装→ワンクリックで実行可能

54.

プレビュー版からのフィードバック 開発後にアプリの実行まで行った率 シミュレータなし シミュレータあり 100% 82% 75% 50% 25% 0% 36%

55.

プレビュー版からのフィードバック 「チュートリアルが欲しい」 https://axstudio.dev 上にチュートリアルを作成 チュートリアルに従えばAxStudioの機能を理解できるように

56.

プレビュー版からのフィードバック 「UIが日本語だと嬉しい」

57.

今後の展望

58.

「アイディアを思いついた時に誰にでもそれを高速に形にできる」

59.

「アイディアを思いついた時に誰にでもそれを高速に形にできる」

60.

ご静聴ありがとうございました https://axstudio.dev からダウンロード可能!

62.

プロジェクト生成の手法 Nib Nib Xcode Project Swift Swift

63.

プロジェクト生成の手法 Nib Nib Xcode Project Swift Swift 差分のみを適応

64.

プロジェクト生成の手法 Nib Nib Xcode Project Swift Swift プロジェクトファイルの書き出し

65.

ゲーミング財団 CC3. scp-jp.wikidot.com

66.

今後の予定 Preview版 2021/1月 2021/3月 β版 マスター版 2021/10月 CC3. scp-jp.wikidot.com

67.

今後の予定 Preview版 2021/1月 2021/3月 β版 マスター版 2021/10月 CC3. scp-jp.wikidot.com

68.

今後の予定 ここまで無料|ここから有料 Preview版 2021/1月 2021/3月 β版 マスター版 2021/10月 CC3. scp-jp.wikidot.com

69.

画面遷移

70.

UIコンポーネントを置く

71.

関数とか フィボナッチ数列のn番目を計算する関数

72.

コンポーネント

73.

コンポーネントの上書き

74.

自動じゃないレイアウト

75.

なんでも自動レイアウト

76.

デザイン

77.

シミュレーター