【5分でわかるWeb最新技術】

Web components

2019/3/29 Creators Apartment  vol.05

須藤 善達

株式会社ビーコーズ

Profile

  • 須藤 善達(ストウ ヨシノブ)
  • エンジニア
  • 株式会社ビーコーズ所属
  • 八戸市出身 十和田市在住

2019年3月

ある技術が誕生して

30周年となりました。

インターネット

Web制作の技術の遍歴を

3ステップでたどる

インターネット30周年記念

おことわり

 

Web制作をHTML, CSS, JavaScriptの分け方という観点で説明します。

分かりやすさを重視するため、細かくは正確ではない表現もあるかと思いますが多めに見て下さい。

 

分かりやすさ重視のため、多くの人に馴染みのある

料理に例えて説明します。

Web制作の技術の説明

Web制作の技術について

1つのファイルに3つ

すべてまとめられていた

Web制作 初期

index.html

役割ごとにファイルを分ける

Web制作 中期

index.html

style.css

script.js

それぞれの責任(関心)を分離して明確にすることで、

1つの物事に集中させる。

ソフトウェア工学の世界では

関心の分離と言います。

責任が明確になり、

見通しがよくなった!!

と思いきや…

新たな問題が発生

お客さんの要求が増加

index.html

style.css

script.js

ファイルを分けたのはいいが、

お客さんの要求に答えるうちに

ファイルが肥大化。

各ファイルが数千行レベルに…

$(function(){
	var mainContainer = $('#main_contents_wrapper');
	var mainFooter = $('#footer');
	var sideWrap = $('#side_menu_contents');
	mainContainer.prepend('<div id="navi_active_background"></div>');
	var naviActiveBackground = $('#navi_active_background');
	winResize ();
	$(window).resize(function(){
		winResize ();
	});
	var sideMenu = sideWrap.find('.menu_content');
	var sideSelectLink = $('#side_menu_contents .select_menu li a');
	var sideSelectMenu = $('#side_menu_contents .menu_content div.menu');
	var formSelectUl = $('#side_menu_contents #form_select_link');
	sideSelectLink.click(function(){
		var displaySideMenu = $($(this).attr('href'));
		var displaySideMenuNum = sideSelectLink.index(this);
		if($(this).hasClass('active')){
			sideWrap.not(':animated').animate({
				marginLeft:'-480px'
			},300);
			sideSelectLink.removeClass('active');
			naviActiveBackground.fadeOut(300);
			$('.select_disc_content').fadeIn(300);
		} else {
			naviActiveBackground.fadeIn(300,function(){
				sideWrap.not(':animated').animate({
					marginLeft:'0'
				},300);
			});
			if(displaySideMenuNum == 1){
				formSelectUl.show();
			} else {
				formSelectUl.hide();
			};
			sideSelectMenu.hide();
			displaySideMenu.show();
			sideSelectLink.removeClass('active');
			$(this).addClass('active');
			$('.select_disc_content').fadeOut(300);
		};
		menuScroll();
		return false;
	});
	naviActiveBackground.click(function(){
		sideWrap.not(':animated').animate({
			marginLeft:'-480px'
		},300);
		sideSelectLink.removeClass('active');
		naviActiveBackground.fadeOut(300);
		$('.select_disc_content').fadeIn(300);
	});

管理するの無理では…?

この問題皆さんならどう解決しますか?

あらゆる種類の肉、魚、野菜が

入った冷蔵庫がある。

客からのオーダーを受けて必要な材料を探しにくるが、

肉・魚・野菜それぞれ大量に入っているため、探すのが大変。

料理ごとに必要な材料を

まとめておけばいいのでは?

= 仕込み作業をしておけばいいのでは?

麻婆豆腐の注文が入ったときのために、麻婆豆腐の材料をまとめておく。

酢豚の注文が入ったときのために、

酢豚の材料をまとめておく。

役割ごとではなく、

機能ごとに分けて

コンポーネント化する

 

最新 Web制作

component1

component2

世界中の誰かが作って

公開したコンポーネントを自由に使える

Web components

30年でようやく仕込みの強さに気づいたWeb業界の今後のご活躍にご期待ください。

【5分でわかるWeb最新技術】Web components

By Yoshinobu Suto

【5分でわかるWeb最新技術】Web components

  • 31