Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CGIプログラムを書いてみた
Search
uutan1108
August 25, 2024
Programming
1
200
CGIプログラムを書いてみた
ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会
https://mild-web-sap.connpass.com/event/327040/
uutan1108
August 25, 2024
Tweet
Share
More Decks by uutan1108
See All by uutan1108
行き当たりばったりの二年
ohmori_yusuke
1
93
技書博に参加したら執筆できた
ohmori_yusuke
1
91
開発終了後こそ成長のチャンス!プロダクト運用を見送った先のアクションプラン
ohmori_yusuke
2
180
学生の時に開催したPerl入学式をきっかけにエンジニアが組織に馴染むために勉強会を主催や仲間と参加して職能間の境界を越えていく
ohmori_yusuke
2
500
やりっぱなしで終わらない勉強法
ohmori_yusuke
3
400
OpenAPIにも静的解析とフォーマッターを導入して快適にスキーマ定義する
ohmori_yusuke
2
290
スクラムフェスに参加した
ohmori_yusuke
1
430
新卒エンジニアが組織に馴染むために勉強会を主催してチームの壁を越える
ohmori_yusuke
1
450
”私だけ”の技術発信から”仲間と”技術発信に変化するために
ohmori_yusuke
4
400
Other Decks in Programming
See All in Programming
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
sangunkang
0
2.3k
初めてDefinitelyTypedにPRを出した話
syumai
0
480
layerx_20241129.pdf
kyoheig3
2
200
.NET Conf 2024の振り返り
tomokusaba
0
180
Contemporary Test Cases
maaretp
0
160
React への依存を最小にするフロントエンド設計
takonda
21
8.6k
Micro Frontends Unmasked Opportunities, Challenges, Alternatives
manfredsteyer
PRO
0
200
The rollercoaster of releasing an Android, iOS, and macOS app with Kotlin Multiplatform | droidcon Italy
prof18
0
120
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
430
Symfony Mapper Component
soyuka
2
240
今からはじめるAndroidアプリ開発 2024 / DevFest 2024
star_zero
0
520
事業成長を爆速で進めてきたプロダクトエンジニアたちの成功談・失敗談
nealle
3
1.1k
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Why Our Code Smells
bkeepers
PRO
334
57k
Embracing the Ebb and Flow
colly
84
4.5k
The Cost Of JavaScript in 2023
addyosmani
45
6.9k
Happy Clients
brianwarren
98
6.7k
Navigating Team Friction
lara
183
15k
Ruby is Unlike a Banana
tanoku
97
11k
4 Signs Your Business is Dying
shpigford
181
21k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Transcript
PerlでCGIスクリプトを書いてみた ゆるWeb勉強会@札幌 #27 / フロントエンドカンファレンス北海道2024 お疲れ様会 うーたん
自己紹介
自己紹介 • うーたん ◦ X:@uutan1108 • 株式会社ゆめみ ◦ 新卒2年目 ◦
サーバーサイドエンジニア • 趣味 ◦ アニメを観ること
私とゆるWeb勉強会@札幌
初めてのLT発表|うーたん https://note.com/uutan1108/n/nffce0e70facd
オンラインの時のゆるWebだったけど楽しかった • ワイワイする時間がいい • ハッシュタグでリアクションしてくださる方が多くて いい • 当時大学生の私でも発表しやすくてよかった • 司会、運営のtacckさんから感想がもらえるのがいい
以上、私とゆるWeb勉強会@札幌でした
本題 「PerlでCGIスクリプトを書いてみた」
CGIとは
CGIとは? CGI とは Common Gateway Interface の略です。通常の ページでは、あらかじめ用意された HTML ページを表示す
るだけですが、CGI を用いることにより、例えば、以下の ようなページを作成することができるようになります。 - カウンター - チャット - 掲示板 - アンケートフォーム CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述 されたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
CGIスクリプトとは 「CGIプログラム」のうち、Perl、awk、sh などコンパイ ル作業が不要なスクリプト言語で記述されたものを「CGI スクリプト」と呼びます。CGI プログラムは Perl で記述さ れたものが多いですが、環境変数と標準入力を参照でき て、結果を標準出力に書き出せるものであれば、C言語、
C++言語、VisualBasic でも何でも構いません。 CGIの概要 - とほほのWWW入門 https://www.tohoho-web.com/wwwcgi1.htm
まずはPerlでCGIを書いてみる
アイドルマスター(765プロ、346プロ) のアイドル 検索アプリ
None
None
機能 - キャラクターの情報で検索 - クエリパラメータで検索機能 - キャラクターの名前漢字または名前カナで検索機能
構成図
Perl(CGIスクリプト) +Apache+MySQL
None
Perlを書いた感想
書いてみてへぇと思ったところを紹介
サブルーチン🤔
ユーザーが定義する関数 Perl では様々な組み込み関数が用意されていますが、自分 で関数を定義することも可能です。 ユーザーが定義する関数をサブルーチンと呼びます。 Perl | サブルーチン https://www.javadrive.jp/perl/sub/
もう少し詳しく
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result;
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; サブルーチンを呼び出す
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; @_ に引数”World”
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; . で“Hello”と”World”を連結
サブルーチンとは🤔 #!/usr/bin/perl sub hello { my ($world) = @_; return
"Hello " . $world; } my $result = hello("World"); print $result; 文字列の Hello World が出力
へぇ 💡
$ と @ の違い🤔
$と@の違いは、データの種類 $: スカラ変数を表し、単一の値(例えば、数字や文字列) を保持する 例: $scalar = 10; → 1つの値を保持する
@: 配列を表し、複数の値を保持する 例: @array = (1, 2, 3); → 複数の値を保持する
$: スカラ変数 #!/usr/bin/perl my $message = "Hello"; print $message; 文字列の
Hello が出力
@: 配列 #!/usr/bin/perl my @nums = (1, 2, 3); print
@nums; 配列の 123 が出力
もう少し詳しく
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data;
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; 配列のリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; print $array_ref > ARRAY(0x560c6a730788) リファレンスが得られる
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; デリファレンス
$ と @ の違いは🤔 #!/usr/bin/perl my @array = @$array_ref; print
$array_ref > ARRAY(0x560c6a730788) print @$array_ref; > 123 リファレンス先の値を参照して出力する
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の (1, 2, 3) を出力
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; 配列の先頭の要素を $data に代入
$ と @ の違いは🤔 #!/usr/bin/perl my $array_ref = [1, 2,
3]; my @array = @$array_ref; print @array; my ($data) = @array; print $data; $data の 1 を出力
へぇ 💡
最後に
アイドル図鑑のコード
None
タグの閉じ忘れでスタイル崩れてしんどかった
宣伝
PHPカンファレンス沖縄2024前夜祭 で登壇します PHPカンファレンス沖縄2024前夜祭 - connpass https://phpcon-okinawa.connpass.com/event/324902/
Scrum Fest Mikawa 2024 で登壇します Scrum Fest Mikawa 2024 -
新卒エンジニアが組織に馴染むために勉強会を主催して職能間の境界を越える | ConfEngine - Conference Platform https://confengine.com/conferences/scrum-fest-mikawa-2024/proposal/20268
アイドル名簿(今回作ったアプリのコード) OHMORIYUSUKE/perl-mysql-apache-on-docker https://github.com/OHMORIYUSUKE/perl-mysql-apach e-on-docker
お わ り