Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大学生向けアプリの開発において、レガシーと思っていた技術を採用した理由:学生開発者の挑戦

 大学生向けアプリの開発において、レガシーと思っていた技術を採用した理由:学生開発者の挑戦

slideshareから移行
https://www.slideshare.net/slideshow/pptx-259338451/259338451

現在、趣味として徳島大学生向けの学修サポートアプリを個人で開発・運用を行っている大学生です!
このアプリは、講義情報やレポート提出、そして学内情報などの一元化を目的としており、それにはJavaScriptインジェクション、Webスクレイピング、そしてRSSフィードを活用し、学生生活のほとんどが一つのアプリで完結するという形で実現しました。
現在、AppStoreで公開しており、徳島大学生の1/3が利用しています。
このLTではAPIが全盛の今、なぜこのアプリではJavaScriptインジェクション、Webスクレイピングといった技術を採用するに至ったのか、その背景や技術・運用について紹介しますので、エンターテイメントとしてお楽しみいただければ幸いです。
また、学生の皆さんに対して「不便だと感じたら、自分で変えてみよう」と少しでも思っていただければ嬉しいなと思います。

akidon0000

April 14, 2024
Tweet

More Decks by akidon0000

Other Decks in Programming

Transcript

  1. DreamCampus for TokushimaUniv NBOBCB ߨٛͰຖ౓࢖༻͢Δ ʮNBOBCBʯΛ ݟΕΔ༷ʹͤ͐ NBOBCB ߨٛͷ࿈བྷɺߨٛࢿྉɺখςετɺϨϙʔτఏग़ Λߦ͏8FCαΠτ

    ϩάΠϯ͕ඞཁ https://corobuzz.com/wp-content/uploads/2020/04/tdoo1.jpg ΞϓϦΛॳΊͯݟͨಙౡେֶੜୡ
  2. SSOサーバー サイトA サイトB サイトC 認証 連携 େֶ͸ͲͷΑ͏ͳϩάΠϯͷ࢓૊ΈΛͱ͍ͬͯͨͷ͔ γϯάϧαΠϯΦϯ 440 ログインが必要なサイトA,B,C

    ౓ͷೝূͰରԠ͢Δ ෳ਺ͷαΠτʹϩάΠϯՄೳ https://localidp.ait230.tokushima-u.ac.jp/idp/profile/SAML2/Redirect/SSO?execution=e1s1
  3. func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { let url

    = self.webView.url! if url.contains({ログイン⼊⼒が必要な画⾯のURL}) { webView.evaluateJavaScript("document.getElementById(‘username’).value= ‘あいうえお'",completionHandler:nil) webView.evaluateJavaScript("document.getElementById(‘password').value= ‘ABC123'", completionHandler:nil) webView.evaluateJavaScript("document.getElementsByClassName('form-element form-button')[0].click();", completionHandler: } } ABC123 ࣮ߦ あいうえお
  4. do { let data = try NSData(contentsOf: url) as Data

    let doc = try HTML(html: data, encoding: String.Encoding.utf8) for node in doc.xpath("//a") { if let str = node["href"] { // タグaのhref属性に設定された⽂字列を取得 // str = pub/pdf/calender/calender_main_2023_syuusei.pdf } } } catch { } )5.-ύʔαʔͷϥΠϒϥϦ,BOOBΛ࢖༻ <a href="pub/pdf/calender/calender_main_2023_syuusei.pdf" title="開館時間カレンダー"> 8FCεΫϨΠϐϯά λάBͷISFGଐੑ Kanna: https://github.com/tid-kijyun/Kanna