Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pyramid Makerの作成
Search
suzakutakumi
March 12, 2022
Technology
34
0
Share
Pyramid Makerの作成
説明時に使うピラミッドをダウンロードできるWebサイトをReactで作成した
suzakutakumi
March 12, 2022
More Decks by suzakutakumi
See All by suzakutakumi
ピクロス作成の中間発表
suzakutakumi
0
100
しゅみろん
suzakutakumi
0
170
trap-search
suzakutakumi
1
53
マークダウンパーサーの自作
suzakutakumi
0
120
絵文字ジェネレータボットの作成
suzakutakumi
0
170
send_discord
suzakutakumi
0
58
独自ドメインについて
suzakutakumi
0
53
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1.4k
スターリンマージソート
suzakutakumi
3
580
Other Decks in Technology
See All in Technology
CyberAgent YJC Connect
shimaf4979
1
180
新卒エンジニア研修、ハンズオンの設計における課題と実践知/ #tachikawaany
nishiuma
2
140
ServiceによるKubernetes通信制御ーClusterIPを例に
miku01
1
160
AIと乗り切った1,500ページ超のヘルプサイト基盤刷新とさらにその先の話
mugi_uno
2
340
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.6k
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
160
世界の中心でApp Runnerを叫ぶ FINAL
tsukuboshi
0
260
サンプリングは「作る」のか「使う」のか? 分散トレースのコストと運用を両立する実践的戦略 / Why you need the tail sampling and why you don't want it
ymotongpoo
4
170
知ってた?JavaScriptの"正しさ"を検証するテストが5万以上もあること(Test262)
riyaamemiya
1
190
Agent の「自由」と「安全」〜未来に向けて今できること〜
katayan
0
350
そのSLO 99.9%、本当に必要ですか? 〜優先度付きSLOによる責任共有の設計思想〜 / Is that 99.9% SLO really necessary? Design philosophy of shared responsibility through prioritized SLOs
vtryo
0
590
みんなの考えた最強のデータ基盤アーキテクチャ'26前期〜前夜祭〜ルーキーズ_資料_遠藤な
endonanana
0
300
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
920
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
230
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
340
Thoughts on Productivity
jonyablonski
76
5.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
How to build a perfect <img>
jonoalderson
1
5.5k
Google's AI Overviews - The New Search
badams
0
1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Become a Pro
speakerdeck
PRO
31
5.9k
Code Review Best Practice
trishagee
74
20k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
690
Transcript
Pyramid Makerの作成 2022/03/12 NSEEM
自己紹介 HN: 朱雀 匠 ( 本名 : 鈴木 拓眞 )
学部 2 年 ( 新 3 年 ) Twitter: @suzakutakumi3 Portfolio: http://suzakutakumi.mydns.jp/
None
None
PyramidMakerとは 右図のようなピラミッド図を作成するツール 探しても無かったので作りました
作成手順 今回は React を用いて作成し、 GitHub Pages で公開した 1. canvas を用いてピラミッドを書く
2. 1 つの領域の高さを変えられるようにする 3. 領域を増やせるようにする 4. 領域の色を変えられるようにする 5. ダウンロードボタンをつける ※ CSS はわかりません
canvasを用いてピラミッドを書く 三角を領域の数だけ書いていく 高さから左下、右下の点を計算して三角を書いています context[i].beginPath(); context[i].moveTo(canvasWidth / 2, 0); //一番上 context[i].lineTo(canvasWidth /
2 - height * Math.sin(Math.PI / 6),height); //左下 context[i].lineTo(canvasWidth / 2 + height * Math.sin(Math.PI / 6),height); //右下 context[i].closePath(); context[i].stroke(); context[i].fillStyle = colors[i]; context[i].fill();
1つの領域の高さを変えられるようにする sizes( パーセンテージのリスト ) の数だけ、 map でスライダーを設置していきます 下のサイトを参考に、スライダーを複数設置しました https://qiita.com/taku_u9501/items/37c36cf9ad321b29302b {props.sizes.map((v,
i) => { return ( <input key={i} className="thmub" type="range" value={v} min="0" max="100" step="1" style={i === 0 ? {width: props.size, backgroundColor: "rgba(0, 0, 0, 0)" , border: "1px solid"}: { width: props.size, backgroundColor: "rgba(0, 0, 0, 0)" } } onChange={(e) => { props.onChange(e, i); }} /> ); })}
領域を増やせるようにする 色とサイズ ( 全部初期化 ) 、数をひとつ増やす <button onClick={() => {
setColors([...colors, "#eb7012"]); setSize([...Array(num)].map((_, i) => (100 / (num + 1)) * (i + 1))); setNum(num + 1); }} />
領域の色を変えられるようにする colors の数だけ map で input type=”color” を設置する {props.colors.map((c, i)
=> { return ( <> <input key={i} type="color" value={c} onChange={(e) => { props.onChange(e, i); }} /> <br /> </> ); })}
ダウンロードボタンをつける url に canvas の toDataURL 関数の返り値を設定する props.setURL(document.getElementById("canvas").toDataURL("image/png")); a タグに
href と download を設定する <a href={props.url} download="pyramid.png"> <button>ダウンロード</button> </a>
デモ https://suzakutakumi.github.io/PyramidMaker/
今後 - 領域を減らせるようにする - 枠線の大きさを変えられるようにする - 色に透明度を追加する