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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
suzakutakumi
March 12, 2022
Technology
60
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
66
マークダウンパーサーの自作
suzakutakumi
0
130
絵文字ジェネレータボットの作成
suzakutakumi
0
170
send_discord
suzakutakumi
0
74
独自ドメインについて
suzakutakumi
0
67
ESP32とAlexaを用いたエアコン制御
suzakutakumi
0
1.4k
スターリンマージソート
suzakutakumi
3
650
Other Decks in Technology
See All in Technology
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.2k
ハードウェアコンペでもAI駆動開発が進んでいる話
iotengineer22
0
260
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
150
[2026 Oracle Technical Deep Dive] Apache Iceberg × Oracle AI Database -Oracle Autonomous AI Lakehouseが実現するAI時代のデータ基盤- (2026年9月17日開催)
oracle4engineer
PRO
0
120
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
390
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
310
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
310
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
150
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
280
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
340
Futexes the good, the bad, the ugly
ennael
PRO
0
130
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
2
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Utilizing Notion as your number one productivity tool
mfonobong
4
610
The Curious Case for Waylosing
cassininazir
1
550
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
Embracing the Ebb and Flow
colly
88
5.2k
Building AI with AI
inesmontani
PRO
1
1.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
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/
今後 - 領域を減らせるようにする - 枠線の大きさを変えられるようにする - 色に透明度を追加する