【 概要 】 Swiftを使いWebページのURLを受け取り非同期で与えられたWebページのHTMLから指定のロジックで情報を取得してcompletion closureを介して返却する機能を開発していただきます。
最終的に以下のライブラリに近い機能を実現するための画面以外の部分の開発になります。 https://github.com/marty-suzuki/URLEmbeddedView
【開発環境】 Xcode12.3、Swiftを使って開発をお願いします。 Swiftlintの利用をお願いします。Swiftlintの詳細なルールは合理的な範囲内で独自に変更可能。
【ライブラリの利用】 可能ですが事前に何を使うかご相談ください。ご相談いただいたのちこちらがOKをだしたもののみ利用できます(メジャーなものは基本的に許可します)。ライブラリはCarthageを使いインストールしていただきます。
【納品方法】 完成した機能のファイルとテストコードを含むXcodeのプロジェクトをお送りしていただく納品していただく想定です。Swiftlintを含めたものを納品してください。
【仕様詳細】 Title, Description, SiteName, Imageを以下に記載した優先順位でHTMLから取り出していただきます。 全ての方法でも取得できない場合はnilを差し込んでいただきます。
Title 1. og:title 2. htmle title tag 3. h1
Description 1. og:description 2. meta description
SiteName 1. og:site_name
Image 1. og:image
クラス、機能呼び出しインターフェースとなるメソッド、返却値の型は定義済みのですので、 以下の定義済みのコードへロジックを追加していだたく形となります。
“`
class WebPageAbstractInfoRetrieve {
static func get(from url: String, completion: (Result) -> Void) { } }
struct WebPageAbstractInfo { let title: String? let description: String? let siteName: String? let imageUrl: String? }
“`
【テストコード】 HTMLから”WebPageAbstractInfo”を取り出す部分(URLの非同期通信を含まない部分)のみXcode組み込みのXCTestを使いいくつかテストを書いていただきたいです。
ローカルへ何らかの方法で用意したHTMLを使い外部との通信を行わずに走るテストを書いていただきます。 こちらが用意させていただいているコードにインターフェースはURLを受け取るようになっているので、 それ以外のHTMLから情報を取り出す部分はinternalで分離して作成していただくことでその部分のみ テスト可能にしていただきます。
おおよそどのようにテストしていただくかご提案いただき、こちらがOKをだしたのちにその方針でテストコードを作成していただきます。
【その他のルール】 ・コメントアウトされたコードをのこなさい ・関係ないコードを入れない ・最低限のSwiftのコーディング規約を守る(snake_sakeを混ぜないなど)
【応募方法】 1. 以下の質問にお答えください。 ・SwiftによるHTMLパーサ作成の経験有無, Yes/No のみでお答えください。 ・最低限の日本語の読解力がありますか(文章から論理的に意図を正しく読み取れる等)?, Yes/No のみでお答えください。 ・HTMLに関する知識はどの程度あるか? ・あなたが考える綺麗なコードとは何か、それを実現するためにどのようなことを行っているか?
2. お見せいただけるご自身が作成されたコードがございましたらご提示ください。
|