SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Web技術勉強会第11回
    Web技術勉強会第11回
       技術勉強会第11
    ~自作ブログ「DIARYSYS4」開発報告~
     自作ブログ「DIARYSYS4」開発報告~
       ブログ



        Ryuichi TANAKA
 Study:http://devel.de.c.dendai.ac.jp/study/
Blog:http://blog.livedoor.jp/mapserver2007/

                                               1
前回の内容を実践してみる

• 前回の内容を具体的に盛り込んでシステム化


                                DIARYSYS ver4


DIARYSYS ver1

                                  DIARYSYS ver3
                DIARYSYS ver2



                                                  2
前回の内容を実践してみる

• 自作ブログシステム「DIARYSYS4」を前回紹介
  した観点で実装

 –   ブログはあらゆる技術やコンテンツを集約できる
 –   これまで培った技術を応用できる
 –   バージョンアップごとに機能を足す
 –   リファクタリングをする
 –   過去のプログラムの見直し
 –   必ず新しい要素を入れる



                              3
実装した2つの機能を紹介

• Widget管理機能
 – DIARYSYSのトップ画面のサイドバーに表示するウィジェットに
   関する管理機能
 – これまではウィジェットはサイドバー処理用の関数に直接制御ロ
   ジックを記述していたため、表示/非表示の設定が不可能
• 認証機能
 – 管理画面へログインするための認証機能
 – これまではログインIDの入力+SESSION。だが、ログインIDが
   知られてしまえば、誰でもHack可能で、しかも送信が完全に平文。
   ログイン周りのロジックがあまりに稚拙。


                                  4
Widget管理機能について


            5
Widget管理機能

• 従来方法
 – サイドバーに表示する項目が固定
   • 非表示にしたいときはソースから消去するしかない
 – サイドバーに表示する順番が固定
   • 順番を変えたいときはソースを修正するしかない

• 新方法
 – 管理画面でWidgetの設定ができるようにする
   • 表示/非表示、表示順などを設定
 – イメージとしては、LivedoorBlogで言うところの「プラグイン管理」
   • というか、かなり参考にした


                                       6
言語による役割分担

• PHP
   – 制御全般を担当。外部APIの場合は、Perlに処理を渡し、表示処
     理は、テンプレートやJavascriptへ処理を渡す。
• Perl
   – 外部WebAPIをWidget化するために利用。また、Widget設定を保
     存するときのDB関連の処理も担当。その他、Widgetテーブルの
     初期化スクリプトとしても利用。
• Javascript
   – 表示処理を担当。受け取ったWidget設定から実際に表示するた
     めの処理として利用。

                                        7
機能の実装

• ロジック自体は難しくない
    – ただし、エラー処理が面倒くさかった。バリデーションチェックが
      コードの半分を占めている
    – 難しくはないが、設計は工夫した(MVC)


                       Contoroller
                         (PHP)
Web Browser                                   DB
                                     Model
                                     (Perl)
                  View
              (Javascript)
                                                   8
実装画面




Widget設定画面   サイドバー
                     9
認証機能について


           10
これまでの認証方法
               IDが他人に知られたら
                 が他人に
• 従来方式           のっとられてしまう
 (DIARYSYS3)
                               $id = “administrator”;
                        平文
                ID                       照合
                     ID送信           ID
                                               一致

                             $_SESSION[“admin”] = true;
                管理者権限付与
      ログイン画面

                 ロジックが単純すぎる
                 ロジックが単純すぎる


                           サーバサイド
                ではこの認証方法
                ではこの認証方法を める必要
                            必要がある
       DIARYSYS4ではこの認証方法を改める必要がある                  11
認証処理の実装は難しい

• 認証のロジックを本格的に実装するのはあまり
  に困難
 – セキュリティの知識や技術が必須
 – セキュリティを勉強しなおすのは時間的に厳しい
 – 管理画面に入るだけの処理でそんなに時間は割けない



    優秀な認証機能を流用・応用


                              12
Livedoor Authの利用

• LivedoorAuth(http://auth.livedoor.com/)の認証を
  利用したログインを実装
  – 認証ロジック、セキュリティ管理系は全てLivedoorに依存する
  – 自前で認証ロジックを組み必要がない
  – 自前で実装するよりはるかに強固
• 開発者向けWebAPI
  – 開発者が自システムに組み込むことを前提としているので、利用
    しやすい
  – Livedoor IDがあれば誰でも使うことが出来る


                                            13
Livedoor Authの概要

• アプリケーションの登録
 – 認証させたいアプリケーション(Webシステム)を登録
   する
   • 登録内容は、アプリケーション名、アプリケーションの説明(任
     意)、認証処理させるURL、認証成功後に移動するURL
   • 最大5個までのアプリケーションを登録できる

                     「アプリケーションキー」「秘密鍵」
                     は認証をシステムに組み込む
                     際に必須。



                                   14
アプリケーションへの組み込み
• パラメータを設定する
  – app_key(アプリケーションキー),v(バージョン:1.0で固定),t(そのときの時間:PHP
    ならtime()),perms(userhashまたはid:ここではid)を昇順に連結させる
                                             昇順に
                                             昇順 連結させる
  – 秘密鍵と連結させた文字列をHMAC_SHA1でハッシュコードを生成し、
    それを「シグネチャ」と呼ぶ
  – パラメータを「=」と「&」を使って昇順に連結、最後にシグネチャを連結さ
    せてURLを生成する(詳しくは公式参照)
  生成したURLの例:
    http://auth.livedoor.com/login/?app_key=9f7c4a090ac30fad653cfa
    dc47444112&perms=id&t=1224510626&v=1.0&sig=aba5d97c5f9
    9d829be8526d5f44a0442522865b6



                                                               15
アプリケーションへの組み込み
• 生成したURLにアクセスすると、Livedoorの認証画面になる(ただし、
  ログイン済みの場合は省略される)
• 認証が成功すると、アプリケーションの登録で設定した「コールバッ
  ク」URLにジャンプする
  (ここで処理を終ることも出来るが、今回はここからさらに進む)
• コールバック先で$_GETパラメータにより、「token」を取得する
• 同様に、app_key,t,vおよび秘密鍵を利用してHMAC_SHA1でハッ
  シュコードを生成し、再度シグネチャ(sig)を生成する
• app_key,t,v,token,sigとformat(json or xml)をPOSTで
  http://auth.livedoor.com/rpc/auth に送信する
• 成功すればLivedoorIDが返ってくるので、これを認証に利用する

                                                16
LivedoorAuthを組み込んだ認証

• 新方式(DIARYSYS4)
                    認証成功!
                    認証成功!(管理者画面にジャンプ)

                              サーバサイド
                認証URL生成ロジック          IDチェック処理 Livedoor ID
      認証URL要求

                       コールバック処理
          認証URL       コールバック    Livedoor ID要求


                                         Livedoor ID
          認証URL      認証処理
ログイン画面    クリック
                                          返却処理

                         Livedoor Auth
                                                       17
今後の予定

• 次回までに実装予定の機能
 – ファイルアーカイブ機能
  • アップローダ+アップロードファイル一覧表示の機能
  • アップロードしたファイルの情報表示など
  • アップロードは非同期で行う予定
 – タグ管理機能
  • エントリに付与するタグ管理機能
  • 前バージョンで実装済みなので、ほぼ流用の予定(ただしリ
    ファクタリングはする)



                               18

Weitere ähnliche Inhalte

Was ist angesagt?

Perlで圧縮
Perlで圧縮Perlで圧縮
Perlで圧縮Naoya Ito
 
資工所考試密技說明會
資工所考試密技說明會資工所考試密技說明會
資工所考試密技說明會Mu Chun Wang
 
Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)zetamatta
 
2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能Preferred Networks
 
はてなブックマークのシステムについて
はてなブックマークのシステムについてはてなブックマークのシステムについて
はてなブックマークのシステムについてNaoya Ito
 
Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hiroshi Ono
 
2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニングPreferred Networks
 
程式之美-微軟技術面試心得
程式之美-微軟技術面試心得程式之美-微軟技術面試心得
程式之美-微軟技術面試心得Bob Wei
 
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&APreferred Networks
 
2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジンPreferred Networks
 
Persona design method / ペルソナ概論
Persona design method / ペルソナ概論Persona design method / ペルソナ概論
Persona design method / ペルソナ概論Katsumi TAZUKE
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューションnishimizu
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2nishimizu
 

Was ist angesagt? (18)

Perlで圧縮
Perlで圧縮Perlで圧縮
Perlで圧縮
 
資工所考試密技說明會
資工所考試密技說明會資工所考試密技說明會
資工所考試密技說明會
 
PFI会社案内
PFI会社案内PFI会社案内
PFI会社案内
 
Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)Programming言語Lua紹介(Internet版)
Programming言語Lua紹介(Internet版)
 
2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能2009年4月8日セミナー 2.Sedue新機能
2009年4月8日セミナー 2.Sedue新機能
 
はてなブックマークのシステムについて
はてなブックマークのシステムについてはてなブックマークのシステムについて
はてなブックマークのシステムについて
 
plan
planplan
plan
 
Hyper Estraierの設計と実装
Hyper Estraierの設計と実装Hyper Estraierの設計と実装
Hyper Estraierの設計と実装
 
2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング2009年4月8日セミナー 1.オープニング
2009年4月8日セミナー 1.オープニング
 
程式之美-微軟技術面試心得
程式之美-微軟技術面試心得程式之美-微軟技術面試心得
程式之美-微軟技術面試心得
 
2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A2009年4月8日セミナー 4.レコメンデーション Q&A
2009年4月8日セミナー 4.レコメンデーション Q&A
 
Money 29
Money 29Money 29
Money 29
 
090601-dotplot
090601-dotplot090601-dotplot
090601-dotplot
 
2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン2009年4月8日セミナー 3.SSD向け全文検索エンジン
2009年4月8日セミナー 3.SSD向け全文検索エンジン
 
Persona design method / ペルソナ概論
Persona design method / ペルソナ概論Persona design method / ペルソナ概論
Persona design method / ペルソナ概論
 
25000社以上採用計測ソリューション
25000社以上採用計測ソリューション25000社以上採用計測ソリューション
25000社以上採用計測ソリューション
 
PXI, LabVIEW事例集2
PXI, LabVIEW事例集2PXI, LabVIEW事例集2
PXI, LabVIEW事例集2
 
マニュアル
マニュアルマニュアル
マニュアル
 

Mehr von 龍一 田中

WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする龍一 田中
 
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門龍一 田中
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728龍一 田中
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609龍一 田中
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする龍一 田中
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112龍一 田中
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723龍一 田中
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611龍一 田中
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528龍一 田中
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514龍一 田中
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925龍一 田中
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424龍一 田中
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回龍一 田中
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回龍一 田中
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回龍一 田中
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回龍一 田中
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回龍一 田中
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回龍一 田中
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回龍一 田中
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回龍一 田中
 

Mehr von 龍一 田中 (20)

WebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をするWebSocketでリアルタイム処理をする
WebSocketでリアルタイム処理をする
 
Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門Web技術勉強会 20130525 - Google Cloud Messaging入門
Web技術勉強会 20130525 - Google Cloud Messaging入門
 
Web技術勉強会 20120728
Web技術勉強会 20120728Web技術勉強会 20120728
Web技術勉強会 20120728
 
Web技術勉強会 20120609
Web技術勉強会 20120609Web技術勉強会 20120609
Web技術勉強会 20120609
 
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドするWeb技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
Web技術勉強会 20120114 - JenkinsでJava/PHP/Ruby/JavaScriptをビルドする
 
Web技術勉強会 20111112
Web技術勉強会 20111112Web技術勉強会 20111112
Web技術勉強会 20111112
 
Web技術勉強会 20110723
Web技術勉強会 20110723Web技術勉強会 20110723
Web技術勉強会 20110723
 
Web技術勉強会 20110611
Web技術勉強会 20110611Web技術勉強会 20110611
Web技術勉強会 20110611
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528
 
Web技術勉強会 20110514
Web技術勉強会 20110514Web技術勉強会 20110514
Web技術勉強会 20110514
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
 
Web技術勉強会 第38回
Web技術勉強会 第38回Web技術勉強会 第38回
Web技術勉強会 第38回
 
Web技術勉強会 第37回
Web技術勉強会 第37回Web技術勉強会 第37回
Web技術勉強会 第37回
 
Web技術勉強会 第34回
Web技術勉強会 第34回Web技術勉強会 第34回
Web技術勉強会 第34回
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
Web技術勉強会 第31回
Web技術勉強会 第31回Web技術勉強会 第31回
Web技術勉強会 第31回
 
Web技術勉強会 第30回
Web技術勉強会 第30回Web技術勉強会 第30回
Web技術勉強会 第30回
 
Web技術勉強会 第29回
Web技術勉強会 第29回Web技術勉強会 第29回
Web技術勉強会 第29回
 
Web技術勉強会 第28回
Web技術勉強会 第28回Web技術勉強会 第28回
Web技術勉強会 第28回
 

Web技術勉強会11回目

  • 1. Web技術勉強会第11回 Web技術勉強会第11回 技術勉強会第11 ~自作ブログ「DIARYSYS4」開発報告~ 自作ブログ「DIARYSYS4」開発報告~ ブログ Ryuichi TANAKA Study:http://devel.de.c.dendai.ac.jp/study/ Blog:http://blog.livedoor.jp/mapserver2007/ 1
  • 3. 前回の内容を実践してみる • 自作ブログシステム「DIARYSYS4」を前回紹介 した観点で実装 – ブログはあらゆる技術やコンテンツを集約できる – これまで培った技術を応用できる – バージョンアップごとに機能を足す – リファクタリングをする – 過去のプログラムの見直し – 必ず新しい要素を入れる 3
  • 4. 実装した2つの機能を紹介 • Widget管理機能 – DIARYSYSのトップ画面のサイドバーに表示するウィジェットに 関する管理機能 – これまではウィジェットはサイドバー処理用の関数に直接制御ロ ジックを記述していたため、表示/非表示の設定が不可能 • 認証機能 – 管理画面へログインするための認証機能 – これまではログインIDの入力+SESSION。だが、ログインIDが 知られてしまえば、誰でもHack可能で、しかも送信が完全に平文。 ログイン周りのロジックがあまりに稚拙。 4
  • 6. Widget管理機能 • 従来方法 – サイドバーに表示する項目が固定 • 非表示にしたいときはソースから消去するしかない – サイドバーに表示する順番が固定 • 順番を変えたいときはソースを修正するしかない • 新方法 – 管理画面でWidgetの設定ができるようにする • 表示/非表示、表示順などを設定 – イメージとしては、LivedoorBlogで言うところの「プラグイン管理」 • というか、かなり参考にした 6
  • 7. 言語による役割分担 • PHP – 制御全般を担当。外部APIの場合は、Perlに処理を渡し、表示処 理は、テンプレートやJavascriptへ処理を渡す。 • Perl – 外部WebAPIをWidget化するために利用。また、Widget設定を保 存するときのDB関連の処理も担当。その他、Widgetテーブルの 初期化スクリプトとしても利用。 • Javascript – 表示処理を担当。受け取ったWidget設定から実際に表示するた めの処理として利用。 7
  • 8. 機能の実装 • ロジック自体は難しくない – ただし、エラー処理が面倒くさかった。バリデーションチェックが コードの半分を占めている – 難しくはないが、設計は工夫した(MVC) Contoroller (PHP) Web Browser DB Model (Perl) View (Javascript) 8
  • 11. これまでの認証方法 IDが他人に知られたら が他人に • 従来方式 のっとられてしまう (DIARYSYS3) $id = “administrator”; 平文 ID 照合 ID送信 ID 一致 $_SESSION[“admin”] = true; 管理者権限付与 ログイン画面 ロジックが単純すぎる ロジックが単純すぎる サーバサイド ではこの認証方法 ではこの認証方法を める必要 必要がある DIARYSYS4ではこの認証方法を改める必要がある 11
  • 12. 認証処理の実装は難しい • 認証のロジックを本格的に実装するのはあまり に困難 – セキュリティの知識や技術が必須 – セキュリティを勉強しなおすのは時間的に厳しい – 管理画面に入るだけの処理でそんなに時間は割けない 優秀な認証機能を流用・応用 12
  • 13. Livedoor Authの利用 • LivedoorAuth(http://auth.livedoor.com/)の認証を 利用したログインを実装 – 認証ロジック、セキュリティ管理系は全てLivedoorに依存する – 自前で認証ロジックを組み必要がない – 自前で実装するよりはるかに強固 • 開発者向けWebAPI – 開発者が自システムに組み込むことを前提としているので、利用 しやすい – Livedoor IDがあれば誰でも使うことが出来る 13
  • 14. Livedoor Authの概要 • アプリケーションの登録 – 認証させたいアプリケーション(Webシステム)を登録 する • 登録内容は、アプリケーション名、アプリケーションの説明(任 意)、認証処理させるURL、認証成功後に移動するURL • 最大5個までのアプリケーションを登録できる 「アプリケーションキー」「秘密鍵」 は認証をシステムに組み込む 際に必須。 14
  • 15. アプリケーションへの組み込み • パラメータを設定する – app_key(アプリケーションキー),v(バージョン:1.0で固定),t(そのときの時間:PHP ならtime()),perms(userhashまたはid:ここではid)を昇順に連結させる 昇順に 昇順 連結させる – 秘密鍵と連結させた文字列をHMAC_SHA1でハッシュコードを生成し、 それを「シグネチャ」と呼ぶ – パラメータを「=」と「&」を使って昇順に連結、最後にシグネチャを連結さ せてURLを生成する(詳しくは公式参照) 生成したURLの例: http://auth.livedoor.com/login/?app_key=9f7c4a090ac30fad653cfa dc47444112&perms=id&t=1224510626&v=1.0&sig=aba5d97c5f9 9d829be8526d5f44a0442522865b6 15
  • 16. アプリケーションへの組み込み • 生成したURLにアクセスすると、Livedoorの認証画面になる(ただし、 ログイン済みの場合は省略される) • 認証が成功すると、アプリケーションの登録で設定した「コールバッ ク」URLにジャンプする (ここで処理を終ることも出来るが、今回はここからさらに進む) • コールバック先で$_GETパラメータにより、「token」を取得する • 同様に、app_key,t,vおよび秘密鍵を利用してHMAC_SHA1でハッ シュコードを生成し、再度シグネチャ(sig)を生成する • app_key,t,v,token,sigとformat(json or xml)をPOSTで http://auth.livedoor.com/rpc/auth に送信する • 成功すればLivedoorIDが返ってくるので、これを認証に利用する 16
  • 17. LivedoorAuthを組み込んだ認証 • 新方式(DIARYSYS4) 認証成功! 認証成功!(管理者画面にジャンプ) サーバサイド 認証URL生成ロジック IDチェック処理 Livedoor ID 認証URL要求 コールバック処理 認証URL コールバック Livedoor ID要求 Livedoor ID 認証URL 認証処理 ログイン画面 クリック 返却処理 Livedoor Auth 17
  • 18. 今後の予定 • 次回までに実装予定の機能 – ファイルアーカイブ機能 • アップローダ+アップロードファイル一覧表示の機能 • アップロードしたファイルの情報表示など • アップロードは非同期で行う予定 – タグ管理機能 • エントリに付与するタグ管理機能 • 前バージョンで実装済みなので、ほぼ流用の予定(ただしリ ファクタリングはする) 18