体重計を作る ~フロントエンド編~
この記事は大阪工業大学 Advent Calendar 2019の23日目の記事です.
こんにちは,Hibiki(@4afS_)です.
今回は初めてのWebページ作成に挑戦しました.期間が2週間弱ほどしか取れなかったので完成できるか不安でしたが,無事間に合ってよかったです.完成したものは実際にここから,ソースコードはここから見ることができます.
はじめに
このプロジェクトはモノ編・バックエンド編・フロントエンド編の3部構成です. 作成に至る経緯などは上の記事をを参照していただけると幸いです.
自己紹介
関西の情報系大学で2回生で,普段はHaskell書いたりウォーキング・デッドを見たりしてます. Web周りの経験としては,少しHTMLとCSS,Elmに触れたことがある程度でJavaScriptや他のフレームワークの経験は0です.
開発環境
Angular CLI : 8.3.20
npm : 6.13.2
chart.js : 2.9.3
開発過程
表示したいものを考える
今回は友人の体重を表示するためのものなので,それがひと目でわかるグラフを表示することにします.
デザインを考える
はじめからコードを書くのは流石にしんどいと思うので,まずAdobe XDを使ってプロトタイプを作ります.その際にアイコンが欲しくなったので体重計のようなものを簡単にillustratorで作りました. 実際のアイコンとXDで作成したプロトタイプが↓です.
構成を考える
Angularはcomponent単位で考えるので,プロトタイプから分割して,Header,大きく文字が書かれたTitle,グラフがあるWeightChart,最後にFooterの構成で作成することにします.また,Httpリクエスト部分はサービスへ分離することにしました.
実際にコーディング
コーディング環境は,NeoVim + coc.nvimにTypeScript,Angular,HTMLのLanguageServerを導入して書いていきます.coc.nvimは今すごく気に入ってるプラグインなので,またそれについての記事も書こうと思います.
今回のWebページはPC,スマホどちらからも崩れずに見れるように,知識がないので無理矢理ですがレスポンシブにしていきます.
Header・Footer
まずはHeaderとFooterです.ここでは,Angular Materialから提供されているmat-toolbarを使います.使うのはとても簡単で,
<mat-toolbar> <mat-toolbar-row> 要素を列挙する </mat-toolbar-row> </mat-toolbar>
とするだけでツールバーが作成されます.これを上下においてHeader,Footerとすることにします.
タイトル
ここでは文字が大きく表示されるのでフォントにこだわりました.正直どう選べばいいかよくわからなかったので雰囲気で.
グラフ
今回は体重がどのように変化しているかを見ることが目的なので,折れ線グラフを採用します.グラフの描画にはChart.jsを使い,X軸に日付,Y軸に体重を割り当て,量ってない日もわかるように値があるところには丸いポイントをつけます.
完成!
初めてのWebページ作成で,しかもあまり勉強時間が取れないなかで無事完成までたどり着けてよかったです.間違っているところもたくさんあると思うので,これからWeb系の勉強をしていこうと思います.
おまけ
右上にひっそりいる数字ですが,一応アクセスカウンターです.もともと「あなたは○○人目の訪問者です」をやりたかったんですけど,しっくりこなかったので小さめに表示しました.
論理式を読みたかった
この記事は,OIT Advent Calender 2018 22日目の記事です.
自己紹介
この記事の対象者 / 非対象者
この記事の対象者
- 論理学ってどんなのか見てみたいなぁって人
雰囲気こんな感じなんだなぁってだけでも知ってもらえると嬉しいです.
この記事の非対象者
- しっかり論理学を勉強したい人
こんなもあるってことを知ってもらう程度の内容なので,しっかり勉強したい方には向かないと思います.
導入
数学をしていると,見たこともない記号や文字を使ってよくわからないものを解説している文がよくあります.なので,最低限解説の部分は読めないと先に進めないなと思い勉強したので,そのことについて書いていきます.
今回は簡単な集合の話をしてから,命題論理,述語論理という流れで解説していきます.前提知識が無くても読めるよう,できるだけ詳しく書いていきます.それゆえ,知識がある人にとっては退屈な文章が多いと思うので,適当に流し読みしてもらえると嬉しいです.また,集合や命題論理の話は高校数学でも扱われているので,覚えてる方は述語論理まで飛んでもらってわからなかったら戻る,という形で読むといいかもしれません.
わからないなぁと思っても少し進んだら例題がある場合もあるので,ちょっと我慢して読み進めてみると良いかもしれません.
少し長くなりますが,最後まで見ていただけると嬉しいです.
また,間違っている点などありましたらTwitterのDM等で知らせていただけると幸いです.
集合
集合とは
Wikipediaから引用すると,
集合 - Wikipedia
数学における集合 (しゅうごう、英: set, 仏: ensemble, 独: Menge) とは、大雑把に言えばいくつかの「もの」からなる「集まり」である。
ものからなる集まり,という抽象的なもので少しわかりにくいかもしれませんが,こんなのがあるんだなぁ程度で大丈夫です.
例) 「数」の集まり,「文字」の集まり,「生徒」の集まりなど
また,集合の内,「自然数全体の集合」,「整数全体の集合」,「有理数全体の集合」,「実数全体の集合」を特別に
もの
ある集合を
元
と書きます.また,
と書きます.
一般に,無限に多くの要素を持つ集合を 無限集合,有限個の要素を持つ集合を 有限集合 といいます.
記法
次に,具体的に集合を示す方法について解説します.
一般に,元
と書き,これを外延的記法といいます.
例)
また,変数
と書き,これを内包的記法といいます.
例)
この条件
命題論理
次に,命題論理について解説します.
命題とは
まず命題とは,
命題 - Wikipedia
命題(めいだい、英語: proposition)とは、論理学において判断を言語で表したもので、真または偽という性質をもつもの。また数学で、真偽の判断の対象となる文章または式。定理または問題のこと。
簡単に言うと,「真」か「偽」のどちらかに必ず決まる記述 のことです.
例えば,「犬は動物である」や「
先程例に出した「犬は動物である」のような,それ以上分解できない最も簡単な命題を 原子命題 といい,これらを命題変数
真理関数
ここでは,命題論理において基本的な真理関数5つを命題
-
否定 (negation) :
¬P P ではない と読む. -
連言 (conjunction) :
P∧Q
「P かつQ 」と読む. -
選言 (disjunction) :
P∨Q
「Pまたは Q 」と読む. -
条件法 (conditional) :
P⇒Q
「P ならばQ 」と読む. -
同値 (equivalence) :
P⇔Q
「P とQ は同値である.」と読む.((P⇒Q)∧(Q⇒P) と同じ.)
4の条件法について,直感的にわからない人も多いと思うので少し解説します.
例として,「
この「
命題関数
命題関数は,命題の個体に当たる部分を
述語論理
最後に,述語論理について解説します.
述語論理とは
Wikipediaから引用すると,
述語論理 - Wikipedia
述語論理(じゅつごろんり、predicate logic)とは、数理論理学における記号的形式体系群を指す用語で、一階述語論理、二階述語論理、多ソート論理(英語版)、無限論理などが含まれる。これらの形式体系の特徴は、論理式に含まれる変数を量化できる点である。一般的な量化子として、存在量化子 ∃ と全称量化子 ∀ がある。
今回は,この中でも「一階述語論理」を扱っていきます.
ちなみに一階述語論理とは,
一階述語論理 - Wikipedia
一階述語論理 **(いっかいじゅつごろんり、first-order predicate logic)とは、個体の量化のみを許す述語論理 (predicate logic) である。
簡単に言うと,一階述語論理とは 命題論理の個体を量化可能にしたもの です.
量化とは
ということで,量化について解説していきます.
量化は,変項に「すべて」や「ある」といった量をもたせること です.例として,命題関数「
例を用いて解説します.ある命題関数 「
ちなみに.議題領域を定義してない場合,「
最後に
以上,集合,命題論理,述語論理の大雑把な解説でした.長い間,お付き合いいただきありがとうございました.
この記事は私の人生初の記事なのですが,すごく長い記事になってしまいました.まだまだ数学初心者ですが,これからも精進して高みを目指していきたいと思います.
この記事を読んで,少しでも興味を持った,雰囲気だけでもなんとなくわかった,と思っていただけると嬉しいです.
それでは.