Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Pyramid Makerの作成
Search
suzakutakumi
March 12, 2022
Technology
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pyramid Makerの作成
説明時に使うピラミッドをダウンロードできるWebサイトをReactで作成した
suzakutakumi
March 12, 2022
More Decks by suzakutakumi
See All by suzakutakumi
ピクロス作成の中間発表
suzakutakumi
0
110
しゅみろん
suzakutakumi
0
200
trap-search
suzakutakumi
1
68
マークダウンパーサーの自作
suzakutakumi
0
140
絵文字ジェネレータボットの作成
suzakutakumi
0
170
send_discord
suzakutakumi
0
74
独自ドメインについて
suzakutakumi
0
67
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1.4k
スターリンマージソート
suzakutakumi
3
660
Other Decks in Technology
See All in Technology
AI秘書と毎日働くのはもう当たり前。開発以外の業務に足りない機能をどう埋める?
minorun365
PRO
4
1.9k
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
150
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
110
DevelopersIO 2026 Tokyo 現時点の衛星通信サービスの現状を整理してみる
maroon1st
0
320
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
130
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.6k
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
120
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
270
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
580
How we choose session proposals
kawaguti
PRO
1
180
PostgreSQL at Microsoft: Open Source, AI, & Cloud | Claire Giordano | PGConf.EU 2026
clairegiordano
0
110
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
820
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
330
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
エンジニアに許された特別な時間の終わり
watany
109
250k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Designing Powerful Visuals for Engaging Learning
tmiket
1
620
Balancing Empowerment & Direction
lara
6
1.3k
Visualization
eitanlees
153
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
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/
今後 - 領域を減らせるようにする - 枠線の大きさを変えられるようにする - 色に透明度を追加する